From 3c1fb16164d1a14e8b2d90fbe1838511031cbac4 Mon Sep 17 00:00:00 2001 From: Puru D Date: Sun, 18 May 2025 20:20:40 -0500 Subject: [PATCH 01/85] chore: update node version --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index 21ff4bd38..bdc522287 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ -nodejs 20.11.0 +nodejs 22.9.0 pnpm 9.1.2 From b4d9e5aa61402b721c6b9bdcc41eb85d802658c3 Mon Sep 17 00:00:00 2001 From: Puru D Date: Tue, 20 May 2025 20:06:03 -0500 Subject: [PATCH 02/85] feat: prisma => drizzle and next 15 upgrade attempt --- .gitignore | 72 +- .gitpod.yml | 46 - .husky/pre-commit | 4 - .lintstagedrc.cjs | 11 - .../update/web-component.tsx => .npmrc | 0 .tool-versions | 2 - .vscode/settings.json | 34 - .dockerignore => apps/captable/.gitignore | 23 +- apps/captable/README.md | 278 + .../[publicId]/(legal)/3921/page.tsx | 0 .../[publicId]/(legal)/409a/page.tsx | 0 .../(dashboard)/[publicId]/audits/page.tsx | 0 .../(dashboard)/[publicId]/captable/page.tsx | 0 .../[publicId]/documents/[bucketId]/page.tsx | 0 .../[publicId]/documents/components/modal.tsx | 0 .../[publicId]/documents/components/table.tsx | 2 +- .../data-rooms/[dataRoomPublicId]/page.tsx | 0 .../data-rooms/components/data-room-files.tsx | 0 .../components/data-room-popover.tsx | 0 .../components/data-room-uploader.tsx | 0 .../components/dataroom-folders.tsx | 0 .../[publicId]/documents/data-rooms/page.tsx | 0 .../documents/document-upload-button.tsx | 0 .../esign/[templatePublicId]/page.tsx | 0 .../esign/components/add-esign-doc-button.tsx | 0 .../documents/esign/components/table.tsx | 2 +- .../esign/components/temp-cancel-btx.tsx | 0 .../[publicId]/documents/esign/page.tsx | 0 .../esign/v/[templatePublicId]/page.tsx | 0 .../(dashboard)/[publicId]/documents/page.tsx | 0 .../[publicId]/documents/share/_page.tsx | 0 .../documents/share/analytics/page.tsx | 0 .../create-equity-plan-button.tsx | 0 .../[publicId]/equity-plans/form.tsx | 0 .../[publicId]/equity-plans/modal.tsx | 0 .../[publicId]/equity-plans/page.tsx | 0 .../[publicId]/equity-plans/table.tsx | 0 .../fundraise/convertible-notes/page.tsx | 0 .../[publicId]/fundraise/investments/page.tsx | 0 .../[publicId]/fundraise/safes/page.tsx | 0 .../(dashboard)/[publicId]/layout.tsx | 0 .../(dashboard)/[publicId]/page.tsx | 0 .../(dashboard)/[publicId]/reports/page.tsx | 0 .../options/issue-stock-option-button.tsx | 0 .../[publicId]/securities/options/page.tsx | 0 .../securities/shares/issue-share-button.tsx | 0 .../[publicId]/securities/shares/page.tsx | 0 .../securities/transactions/page.tsx | 0 .../bank-accounts/components/cta-button.tsx | 0 .../bank-accounts/components/table.tsx | 0 .../settings/bank-accounts/page.tsx | 0 .../[publicId]/settings/billing/page.tsx | 0 .../[publicId]/settings/company/page.tsx | 0 .../components/create-access-token.tsx | 0 .../settings/developer/components/table.tsx | 2 +- .../[publicId]/settings/developer/page.tsx | 0 .../[publicId]/settings/layout.tsx | 2 +- .../settings/notifications/page.tsx | 0 .../[publicId]/settings/profile/page.tsx | 0 .../[publicId]/settings/roles/page.tsx | 0 .../[publicId]/settings/security/2fa/page.tsx | 0 .../[publicId]/settings/security/page.tsx | 0 .../settings/security/passkey/page.tsx | 0 .../settings/security/password/page.tsx | 0 .../team/add-team-member-dropdown-menu.tsx | 0 .../[publicId]/settings/team/page.tsx | 0 .../create-share-class-button.tsx | 0 .../share-classes/edit-share-class-button.tsx | 0 .../[publicId]/share-classes/page.tsx | 0 .../[publicId]/share-classes/table.tsx | 0 .../[publicId]/stakeholders/page.tsx | 0 .../updates/[updatePublicId]/page.tsx | 0 .../(dashboard)/[publicId]/updates/page.tsx | 0 .../(dashboard)/company/new/page.tsx | 0 .../(authenticated)/(dashboard)/layout.tsx | 0 .../captable}/app/(authenticated)/layout.tsx | 0 .../app/(authenticated)/onboarding/page.tsx | 0 .../data-rooms/[publicId]/[bucketId]/page.tsx | 0 .../data-rooms/[publicId]/page.tsx | 0 .../app/(documents)/esign/[token]/page.tsx | 0 .../(unauthenticated)/check-email/page.tsx | 0 .../app/(unauthenticated)/email-sent/page.tsx | 0 .../forgot-password/page.tsx | 0 .../app/(unauthenticated)/login/page.tsx | 2 +- .../new/components/LoginWithGoogle.tsx | 0 .../app/(unauthenticated)/new/page.tsx | 0 .../password-updated/page.tsx | 0 .../reset-password/[token]/page.tsx | 0 .../(unauthenticated)/reset-password/page.tsx | 0 .../set-password/[token]/page.tsx | 0 .../(unauthenticated)/set-password/page.tsx | 0 .../app/(unauthenticated)/signup/page.tsx | 2 +- .../verify-email/[token]/page.tsx | 0 .../(unauthenticated)/verify-email/page.tsx | 0 .../captable/app}/[publicId]/page.tsx | 2 +- .../app/api/(internal)/apiKeys/route.ts | 0 .../app/api/auth/[...nextauth]/route.ts | 0 .../captable}/app/api/stripe/webhook/route.ts | 0 .../captable}/app/api/trpc/[trpc]/route.ts | 0 .../app/api/v1/[[...route]]/route.ts | 0 .../captable}/app/api/v1/docs/route.ts | 0 apps/captable/app/favicon.ico | Bin 0 -> 25931 bytes {src => apps/captable}/app/global-error.tsx | 0 apps/captable/app/layout.tsx | 75 + {src => apps/captable}/app/not-found.tsx | 0 {src => apps/captable}/app/page.tsx | 0 .../app/verify-member/[token]/page.tsx | 0 {src => apps/captable}/assets/logo.svg | 0 apps/captable/biome.json | 3 + .../captable/components.json | 2 +- .../audit/audit-table/audit-table-toolbar.tsx | 0 .../components/audit/audit-table/index.tsx | 2 +- .../components/billing/plan-details/index.tsx | 2 +- .../billing/pricing-modal/empty-plans.tsx | 0 .../billing/pricing-modal/index.tsx | 2 +- .../billing/pricing-modal/pricing-button.tsx | 0 .../billing/pricing-modal/pricing-card.tsx | 0 .../components/common/LoadingSpinner.tsx | 0 .../components/common/confirmDialog.tsx | 0 .../components/common/empty-state.tsx | 0 .../captable}/components/common/file-icon.tsx | 0 .../captable}/components/common/icons.tsx | 0 .../captable}/components/common/loading.tsx | 0 .../captable}/components/common/logo.tsx | 16 +- .../captable}/components/common/modal.tsx | 0 .../components/common/push-modal.tsx | 0 .../components/common/share-modal.tsx | 0 .../components/common/slide-over.tsx | 0 .../captable}/components/common/tldr.tsx | 0 .../dashboard/navbar/command-menu.tsx | 0 .../components/dashboard/navbar/index.tsx | 0 .../dashboard/navbar/mobile-drawer.tsx | 0 .../dashboard/navbar/user-dropdown.tsx | 0 .../dashboard/overview/activities-card.tsx | 2 +- .../dashboard/overview/donut-card.tsx | 0 .../dashboard/overview/donut-selector.tsx | 0 .../components/dashboard/overview/empty.tsx | 0 .../dashboard/overview/summary-table.tsx | 0 .../dashboard/overview/top-card.tsx | 0 .../dashboard/page-layout/index.tsx | 0 .../dashboard/sidebar/company-switcher.tsx | 0 .../components/dashboard/sidebar/index.tsx | 0 .../components/dashboard/sidebar/nav-link.tsx | 0 .../documents/data-room/explorer.tsx | 0 .../esign/optional-message-modal.tsx | 0 .../components/file/office-viewer.tsx | 0 .../captable}/components/file/preview.tsx | 0 .../captable}/components/member/data.ts | 0 .../member/member-bulk-import-modal.tsx | 0 .../components/member/member-profile.tsx | 2 +- .../member/member-table-toolbar.tsx | 0 .../components/member/member-table.tsx | 0 .../components/member/member-uploader.tsx | 0 .../components/member/verify-member-form.tsx | 0 .../components/modals/bank-account-modal.tsx | 0 .../modals/document-upload-modal.tsx | 0 .../modals/equity-pan/equity-plan-form.tsx | 0 .../modals/equity-pan/equity-plan-modal.tsx | 0 .../components/modals/esign-doc/index.tsx | 0 .../esign-doc/steps/add-recepients-step.tsx | 2 +- .../esign-doc/steps/upload-document-step.tsx | 0 .../components/modals/existing-safe-modal.tsx | 0 .../captable}/components/modals/index.ts | 0 .../modals/investor/add-investor-form.tsx | 0 .../modals/investor/add-investor-modal.tsx | 0 .../components/modals/issue-share-modal.tsx | 0 .../modals/issue-stock-option-modal.tsx | 0 .../components/modals/new-safe-modal.tsx | 0 .../modals/role-create-update-modal.tsx | 0 .../modals/share-class/share-class-form.tsx | 0 .../modals/share-class/share-class-modal.tsx | 0 .../modals/share-dataroom-modal.tsx | 0 .../components/modals/share-update-modal.tsx | 0 .../multiple-stakeholders-modal.tsx | 0 .../stakeholder/single-stake-holder-form.tsx | 0 .../stakeholder/single-stake-holder-modal.tsx | 0 .../stakeholder/update-stakeholder-modal.tsx | 0 .../modals/team-member/team-member-modal.tsx | 0 .../captable}/components/modals/wip-modal.tsx | 0 .../onboarding/auth-form-header.tsx | 21 + .../onboarding/check-email/index.tsx | 0 .../components/onboarding/company-form.tsx | 4 +- .../onboarding/email-sent/index.tsx | 0 .../onboarding/forgot-password/index.tsx | 0 .../onboarding/reset-password/index.tsx | 0 .../onboarding/set-password/index.tsx | 0 .../components/onboarding/signin/index.tsx | 0 .../components/onboarding/signup/index.tsx | 0 .../onboarding/verify-email/index.tsx | 0 .../components/public-env-script.tsx | 0 .../captable}/components/rbac/allow.tsx | 0 .../captable}/components/rbac/role-table.tsx | 0 .../components/safe/existing-safe-modal.tsx | 0 .../components/safe/new-safe-modal.tsx | 0 .../components/safe/safe-actions.tsx | 0 .../components/safe/safe-table/data.tsx | 0 .../components/safe/safe-table/index.tsx | 0 .../safe/safe-table/safe-table-toolbar.tsx | 0 .../components/safe/steps/general-details.tsx | 0 .../safe/steps/investor-details/form.tsx | 0 .../safe/steps/investor-details/index.tsx | 0 .../components/safe/steps/safe-documents.tsx | 2 +- .../components/safe/steps/safe-template.tsx | 2 +- .../captable}/components/screen-size.tsx | 0 .../components/securities/options/data.tsx | 0 .../options/option-table-toolbar.tsx | 0 .../securities/options/option-table.tsx | 0 .../securities/options/steps/documents.tsx | 2 +- .../options/steps/general-details.tsx | 0 .../options/steps/relevant-dates.tsx | 0 .../options/steps/vesting-details.tsx | 0 .../securities/shared/EmptySelect.tsx | 0 .../components/securities/shares/data.tsx | 0 .../securities/shares/share-modal.tsx | 0 .../securities/shares/share-table-toolbar.tsx | 0 .../securities/shares/share-table.tsx | 2 +- .../shares/steps/contribution-details.tsx | 0 .../securities/shares/steps/documents.tsx | 2 +- .../shares/steps/general-details.tsx | 0 .../shares/steps/relevant-dates.tsx | 0 .../components/security/SecurityList.tsx | 0 .../components/security/SettingHeader.tsx | 0 .../security/passkey/create-passkey-modal.tsx | 0 .../components/security/passkey/data.tsx | 0 .../passkey/passkey-table-toolbar.tsx | 0 .../passkey/update-passkey-name-modal.tsx | 0 .../passkey/user-passkeys-data-table.tsx | 2 +- .../password/update-password-form.tsx | 0 .../components/settings/settings-sidebar.tsx | 0 .../components/share/page-layout.tsx | 0 .../stakeholder/stakeholder-dropdown.tsx | 0 .../stakeholder/stakeholder-table-toolbar.tsx | 0 .../stakeholder/stakeholder-table.tsx | 0 .../stakeholder/stakeholder-uploader.tsx | 0 .../template/canavs-toolbar/index.tsx | 2 +- .../custom-select-field-renderer.tsx | 0 .../custom-text-field-renderer.tsx | 0 .../custom-field-renderer/index.tsx | 0 .../template/field-canvas/drawing-field.tsx | 2 +- .../template/field-canvas/index.tsx | 0 .../field-canvas/readonly-field-canvas.tsx | 0 .../field-canvas/readonly-template-field.tsx | 0 .../field-canvas/template-field-container.tsx | 2 +- .../template/field-canvas/template-field.tsx | 2 +- .../components/template/field-type-data.ts | 0 .../components/template/pdf-canvas/index.tsx | 0 .../template/signing-field-form/index.tsx | 0 .../signing-fields/field-renderer.tsx | 0 .../template/signing-fields/index.tsx | 0 .../template/template-field-form/index.tsx | 0 apps/captable/components/theme-toggle.tsx | 41 + .../captable}/components/ui/accordion.tsx | 0 .../captable}/components/ui/alert-dialog.tsx | 0 .../captable}/components/ui/alert.tsx | 0 .../captable}/components/ui/avatar.tsx | 0 .../captable}/components/ui/badge.tsx | 0 apps/captable/components/ui/button.tsx | 79 + {src => apps/captable}/components/ui/card.tsx | 0 .../captable}/components/ui/checkbox.tsx | 0 .../captable}/components/ui/combobox.tsx | 0 .../captable}/components/ui/command.tsx | 0 .../ui/data-table/data-table-body.tsx | 0 .../ui/data-table/data-table-buttons.tsx | 0 .../ui/data-table/data-table-content.tsx | 0 .../data-table/data-table-faceted-filter.tsx | 0 .../ui/data-table/data-table-header.tsx | 0 .../ui/data-table/data-table-pagination.tsx | 0 .../ui/data-table/data-table-view-options.tsx | 0 .../components/ui/data-table/data-table.tsx | 0 .../captable}/components/ui/dialog.tsx | 0 .../components/ui/dropdown-button.tsx | 0 .../captable}/components/ui/dropdown-menu.tsx | 15 +- {src => apps/captable}/components/ui/form.tsx | 0 .../captable}/components/ui/input-otp.tsx | 0 .../captable}/components/ui/input.tsx | 0 {src => apps/captable}/components/ui/kbd.tsx | 0 .../captable}/components/ui/label.tsx | 0 .../components/ui/multi-selector.tsx | 0 .../components/ui/password-input.tsx | 0 .../captable}/components/ui/pdf-viewer.tsx | 0 .../captable}/components/ui/popover.tsx | 0 .../captable}/components/ui/radio-group.tsx | 0 .../captable}/components/ui/scroll-area.tsx | 0 .../captable}/components/ui/select.tsx | 0 .../captable}/components/ui/separator.tsx | 0 .../captable}/components/ui/sheet.tsx | 0 .../captable}/components/ui/signature-pad.tsx | 0 .../components/ui/simple-multi-select.tsx | 0 .../captable}/components/ui/stepper.tsx | 0 .../captable}/components/ui/switch.tsx | 0 .../captable}/components/ui/table.tsx | 0 {src => apps/captable}/components/ui/tabs.tsx | 0 .../captable}/components/ui/textarea.tsx | 0 .../captable}/components/ui/tooltip.tsx | 0 .../components/ui/un-authorized-state.tsx | 0 .../captable}/components/ui/uploader.tsx | 2 +- .../change-update-visibility-alert-dialog.tsx | 0 .../captable}/components/update/editor.tsx | 2 +- .../captable}/components/update/renderer.tsx | 0 .../update/update-table-toolbar.tsx | 0 .../components/update/update-table.tsx | 0 .../components/update/web-component.tsx | 0 .../emails/AccountVerificationEmail.tsx | 0 .../emails/EsignConfirmationEmail.tsx | 0 {src => apps/captable}/emails/EsignEmail.tsx | 0 .../captable}/emails/MagicLinkEmail.tsx | 0 .../captable}/emails/MemberInviteEmail.tsx | 0 .../captable}/emails/PasswordResetEmail.tsx | 0 .../captable}/emails/ShareDataRoomEmail.tsx | 0 .../captable}/emails/ShareUpdateEmail.tsx | 0 src/env.js => apps/captable/env.ts | 16 +- {src => apps/captable}/hooks/use-allowed.tsx | 0 .../captable}/hooks/use-force-update.ts | 0 .../hooks/use-isomorphic-layout-effect.ts | 0 .../captable}/hooks/use-listen-pkey.ts | 0 .../captable}/jobs/auth-verification-email.ts | 0 {src => apps/captable}/jobs/base.ts | 2 +- .../jobs/esign-confirmation-email.ts | 0 {src => apps/captable}/jobs/esign-email.ts | 0 {src => apps/captable}/jobs/esign-pdf.ts | 0 .../captable}/jobs/member-inivite-email.ts | 0 .../captable}/jobs/password-reset-email.ts | 0 .../captable}/jobs/share-data-room-email.ts | 0 .../captable}/jobs/share-update-email.ts | 0 {src => apps/captable}/jobs/start.ts | 0 {src => apps/captable}/lib/authenticator.ts | 2 +- .../captable/lib}/client-only/stripe.ts | 0 {src => apps/captable/lib}/common/dayjs.ts | 0 {src => apps/captable/lib}/common/id.ts | 0 {src => apps/captable/lib}/common/uploads.ts | 0 {src => apps/captable/lib}/constants/auth.ts | 2 +- {src => apps/captable/lib}/constants/esign.ts | 0 {src => apps/captable/lib}/constants/job.ts | 0 .../captable/lib/constants/meta.ts | 7 +- .../captable/lib}/constants/passkey.ts | 0 .../captable/lib}/constants/sentry.ts | 0 .../captable/lib}/constants/stripe.ts | 0 {src => apps/captable}/lib/countries.ts | 0 {src => apps/captable}/lib/crypto.ts | 2 +- {src => apps/captable}/lib/dom.ts | 0 .../captable}/lib/error/errors/base.ts | 0 {src => apps/captable}/lib/error/index.ts | 0 {src => apps/captable}/lib/headers.ts | 0 .../lib/invite-team-members-csv-parser.ts | 0 {src => apps/captable}/lib/jwt.ts | 0 {src => apps/captable}/lib/logger.ts | 0 {src => apps/captable}/lib/mime.ts | 0 .../lib}/pdf-templates/audit-log-template.tsx | 2 +- {src => apps/captable}/lib/rbac/README.md | 0 .../lib/rbac/access-control-utils.ts | 0 .../captable}/lib/rbac/access-control.ts | 0 {src => apps/captable}/lib/rbac/actions.ts | 0 {src => apps/captable}/lib/rbac/constants.ts | 0 {src => apps/captable}/lib/rbac/index.ts | 0 {src => apps/captable}/lib/rbac/rbac.test.ts | 0 {src => apps/captable}/lib/rbac/schema.ts | 0 {src => apps/captable}/lib/rbac/subjects.ts | 0 .../lib/scripts}/copy-pdfjs-worker.cjs | 0 .../captable/lib/scripts}/migrate.sh | 0 {src => apps/captable}/lib/singleton.ts | 0 .../captable}/lib/stakeholders-csv-parser.ts | 0 {src => apps/captable}/lib/states.ts | 0 {src => apps/captable}/lib/string.ts | 0 {src => apps/captable}/lib/tags.ts | 0 {src => apps/captable}/lib/token.ts | 0 {src => apps/captable}/lib/types.ts | 6 +- {src => apps/captable}/lib/utils.ts | 0 {src => apps/captable}/lib/vesting.ts | 0 {src => apps/captable}/lib/zodSchemas.ts | 0 {src => apps/captable}/middleware.ts | 0 apps/captable/next.config.js | 8 + apps/captable/package.json | 54 + .../captable/postcss.config.cjs | 0 .../providers/add-share-form-provider.tsx | 0 .../captable}/providers/descendants.tsx | 0 .../providers/esign-form-provider.tsx | 0 .../providers/form-value-provider.tsx | 0 .../captable}/providers/next-auth.tsx | 0 .../captable}/providers/progress-bar.tsx | 0 .../captable}/providers/roles-provider.tsx | 0 .../providers/stock-option-form-provider.tsx | 0 .../providers/template-field-provider.tsx | 2 +- .../template-signing-field-provider.tsx | 2 +- apps/captable/providers/theme-provider.tsx | 93 + apps/captable/public/file-text.svg | 3 + apps/captable/public/globe.svg | 10 + apps/captable/public/next.svg | 1 + .../captable/public}/placeholders/company.svg | 0 .../captable/public}/placeholders/user.svg | 0 .../csv/captable-stakeholders-template.csv | 0 .../csv/captable-team-members-template.csv | 0 .../captable/public}/sample/pdf/dummy.pdf | Bin apps/captable/public/turborepo-dark.svg | 19 + apps/captable/public/turborepo-light.svg | 19 + apps/captable/public/vercel.svg | 10 + apps/captable/public/window.svg | 3 + .../captable/public}/yc/POST_MONEY_CAP.pdf | Bin .../yc/POST_MONEY_CAP_WITH_PRO_RATA.pdf | Bin .../public}/yc/POST_MONEY_DISCOUNT.pdf | Bin .../yc/POST_MONEY_DISCOUNT_WITH_PRO_RATA.pdf | Bin .../captable/public}/yc/POST_MONEY_MFN.pdf | Bin .../yc/POST_MONEY_MFN_WITH_PRO_RATA.pdf | Bin {src => apps/captable}/schema/contacts.ts | 0 .../captable/sentry.client.config.ts | 0 .../captable/sentry.edge.config.ts | 0 .../captable/sentry.server.config.ts | 0 {src => apps/captable}/server/api/const.ts | 0 {src => apps/captable}/server/api/error.ts | 0 {src => apps/captable}/server/api/hono.ts | 0 {src => apps/captable}/server/api/index.ts | 0 .../server/api/middlewares/bearer-token.ts | 0 .../server/api/middlewares/services.ts | 0 .../server/api/middlewares/session-token.ts | 0 .../captable}/server/api/routes/_example.ts | 0 .../server/api/routes/company/getMany.ts | 0 .../server/api/routes/company/getOne.ts | 0 .../server/api/routes/company/index.ts | 0 .../server/api/routes/share/create.ts | 0 .../server/api/routes/share/delete.ts | 0 .../server/api/routes/share/getMany.ts | 0 .../server/api/routes/share/getOne.ts | 0 .../server/api/routes/share/index.ts | 0 .../server/api/routes/share/update.ts | 0 .../server/api/routes/stakeholder/create.ts | 0 .../server/api/routes/stakeholder/delete.ts | 0 .../server/api/routes/stakeholder/getMany.ts | 0 .../server/api/routes/stakeholder/getOne.ts | 0 .../server/api/routes/stakeholder/index.ts | 0 .../server/api/routes/stakeholder/update.ts | 0 .../captable}/server/api/schema/company.ts | 0 .../captable}/server/api/schema/pagination.ts | 0 .../captable}/server/api/schema/shares.ts | 0 .../server/api/schema/stakeholder.ts | 0 .../server/api/utils/endpoint-creator.ts | 0 .../captable}/server/audit/actions.ts | 0 {src => apps/captable}/server/audit/index.ts | 0 {src => apps/captable}/server/audit/schema.ts | 0 {src => apps/captable}/server/audit/types.ts | 0 {src => apps/captable}/server/auth.ts | 256 +- {src => apps/captable}/server/company.ts | 0 {src => apps/captable}/server/esign.ts | 6 +- {src => apps/captable}/server/file-uploads.ts | 2 +- {src => apps/captable}/server/mailer.ts | 0 {src => apps/captable}/server/member.ts | 0 .../passkey/create-authentication-option.ts | 0 .../server/passkey/create-passkey.ts | 2 +- .../passkey/create-registration-options.ts | 2 +- .../server/passkey/create-signin-options.ts | 0 .../server/passkey/delete-passkey.ts | 0 .../captable}/server/passkey/find-passkeys.ts | 0 .../server/passkey/update-passkey.ts | 0 .../captable}/server/password-reset-token.ts | 0 {src => apps/captable}/server/stripe.ts | 0 apps/captable/server/user.ts | 23 + .../captable}/server/verification-token.ts | 0 {src => apps/captable}/styles/editor.css | 0 {src => apps/captable}/styles/fonts.ts | 0 apps/captable/styles/fonts/GeistMonoVF.woff | Bin 0 -> 67864 bytes apps/captable/styles/fonts/GeistVF.woff | Bin 0 -> 66268 bytes .../captable}/styles/fonts/Satoshi-Black.ttf | Bin .../captable}/styles/fonts/Satoshi-Bold.ttf | Bin .../styles/fonts/Satoshi-Variable.woff2 | Bin apps/captable/styles/fonts/index.ts | 17 + {src => apps/captable}/styles/globals.css | 0 {src => apps/captable}/styles/hint.css | 0 .../captable/tailwind.config.ts | 0 {src => apps/captable}/trpc/api/root.ts | 0 {src => apps/captable}/trpc/api/trpc.ts | 2 +- {src => apps/captable}/trpc/react.tsx | 0 .../trpc/routers/access-token/router.ts | 0 .../procedures/all-esign-audits.ts | 0 .../trpc/routers/audit-router/router.ts | 0 .../trpc/routers/audit-router/schema.ts | 0 .../routers/auth/procedure/forgot-password.ts | 0 .../routers/auth/procedure/new-password.ts | 0 .../routers/auth/procedure/resend-email.ts | 0 .../trpc/routers/auth/procedure/signup.ts | 0 .../routers/auth/procedure/verify-email.ts | 0 .../captable}/trpc/routers/auth/router.ts | 0 .../captable}/trpc/routers/auth/schema.ts | 0 .../trpc/routers/bank-accounts/router.ts | 0 .../billing-router/procedures/checkout.ts | 0 .../billing-router/procedures/get-products.ts | 0 .../procedures/get-subscription.ts | 0 .../procedures/stripe-portal.ts | 0 .../trpc/routers/billing-router/router.ts | 0 .../trpc/routers/billing-router/schema.ts | 0 .../bucket-router/procedures/create-bucket.ts | 0 .../trpc/routers/bucket-router/router.ts | 0 .../trpc/routers/bucket-router/schema.ts | 0 .../captable}/trpc/routers/common/router.ts | 0 .../trpc/routers/company-router/router.ts | 0 .../trpc/routers/company-router/schema.ts | 0 .../trpc/routers/data-room-router/router.ts | 2 +- .../trpc/routers/data-room-router/schema.ts | 0 .../procedures/create-document.ts | 2 +- .../procedures/get-all-documents.ts | 0 .../procedures/get-document.ts | 0 .../trpc/routers/document-router/router.ts | 0 .../trpc/routers/document-router/schema.ts | 0 .../procedures/create-document-share.ts | 0 .../routers/document-share-router/router.ts | 0 .../routers/document-share-router/schema.ts | 0 .../trpc/routers/equity-plan/router.ts | 0 .../trpc/routers/equity-plan/schema.ts | 0 .../member-router/procedures/accept-member.ts | 0 .../member-router/procedures/get-members.ts | 0 .../member-router/procedures/get-profile.ts | 0 .../member-router/procedures/invite-member.ts | 0 .../member-router/procedures/re-invite.ts | 0 .../member-router/procedures/remove-member.ts | 0 .../member-router/procedures/revoke-invite.ts | 0 .../procedures/toggle-activation.ts | 0 .../member-router/procedures/update-member.ts | 0 .../procedures/update-profile.ts | 0 .../trpc/routers/member-router/router.ts | 0 .../trpc/routers/member-router/schema.ts | 0 .../trpc/routers/onboarding-router/router.ts | 2 +- .../trpc/routers/onboarding-router/schema.ts | 0 .../trpc/routers/passkey-router/router.ts | 0 .../trpc/routers/passkey-router/schema.ts | 0 .../rbac-router/procedures/create-role.ts | 0 .../rbac-router/procedures/delete-role.ts | 0 .../rbac-router/procedures/get-permissions.ts | 0 .../rbac-router/procedures/list-roles.ts | 0 .../rbac-router/procedures/update-roles.ts | 0 .../trpc/routers/rbac-router/router.ts | 0 .../trpc/routers/rbac-router/schema.ts | 0 .../safe/procedures/add-existing-safe.ts | 2 +- .../routers/safe/procedures/create-safe.ts | 4 +- .../routers/safe/procedures/delete-safe.ts | 0 .../trpc/routers/safe/procedures/get-safes.ts | 0 .../captable}/trpc/routers/safe/router.ts | 0 .../captable}/trpc/routers/safe/schema.ts | 0 .../procedures/add-option.ts | 2 +- .../securities-router/procedures/add-share.ts | 2 +- .../procedures/delete-option.ts | 0 .../procedures/delete-share.ts | 0 .../procedures/get-options.ts | 0 .../procedures/get-shares.ts | 0 .../trpc/routers/securities-router/router.ts | 0 .../trpc/routers/securities-router/schema.ts | 0 .../procedures/update-password.tsx | 0 .../trpc/routers/security-router/router.ts | 0 .../trpc/routers/security-router/schema.ts | 0 .../trpc/routers/share-class/router.ts | 0 .../trpc/routers/share-class/schema.ts | 0 .../procedures/add-stakeholders.ts | 0 .../procedures/get-stakeholders.ts | 0 .../procedures/update-stakeholder.ts | 0 .../trpc/routers/stakeholder-router/router.ts | 0 .../trpc/routers/stakeholder-router/schema.ts | 0 .../procedures/add-fields.ts | 0 .../routers/template-field-router/router.ts | 0 .../routers/template-field-router/schema.ts | 0 .../procedures/cancel-template.ts | 0 .../procedures/create-template.ts | 2 +- .../procedures/get-all-template.ts | 0 .../procedures/get-signing-fields.tsx | 0 .../procedures/get-template.ts | 0 .../procedures/sign-template.ts | 2 +- .../trpc/routers/template-router/router.ts | 0 .../trpc/routers/template-router/schema.ts | 0 .../routers/update/procedures/clone-update.ts | 2 +- .../routers/update/procedures/get-updates.ts | 0 .../routers/update/procedures/save-update.ts | 2 +- .../routers/update/procedures/share-update.ts | 0 .../procedures/toggle-update-visibility.ts | 0 .../captable}/trpc/routers/update/router.ts | 0 .../captable}/trpc/routers/update/schema.ts | 0 {src => apps/captable}/trpc/server.ts | 0 {src => apps/captable}/trpc/shared.ts | 0 apps/captable/tsconfig.json | 22 + biome.json | 52 - bun.lockb | Bin 0 -> 173896 bytes knip.ts | 5 - lefthook.yml | 7 + next.config.js | 72 - package.json | 188 +- packages/config/base.json | 19 + packages/config/biome.json | 52 + packages/config/index.ts | 10 + packages/config/nextjs.json | 12 + packages/config/package.json | 9 + packages/config/react-library.json | 7 + packages/db/.gitignore | 175 + packages/db/README.md | 15 + packages/db/biome.json | 3 + packages/db/config.ts | 11 + packages/db/index.ts | 13 + .../db/migrations/0000_ambitious_ares.sql | 544 + .../db/migrations/0001_woozy_blizzard.sql | 80 + .../db/migrations/meta/0000_snapshot.json | 3229 +++ .../db/migrations/meta/0001_snapshot.json | 4525 ++++ packages/db/migrations/meta/_journal.json | 20 + packages/db/package.json | 40 + packages/db/schema/access-tokens.ts | 38 + packages/db/schema/accounts.ts | 35 + packages/db/schema/audits.ts | 29 + packages/db/schema/bank-accounts.ts | 44 + packages/db/schema/billing.ts | 111 + packages/db/schema/buckets.ts | 20 + packages/db/schema/companies.ts | 42 + packages/db/schema/convertible-notes.ts | 59 + packages/db/schema/data-rooms.ts | 145 + packages/db/schema/documents.ts | 77 + packages/db/schema/enums.ts | 243 + packages/db/schema/equity-plans.ts | 42 + packages/db/schema/index.ts | 28 + packages/db/schema/investments.ts | 35 + packages/db/schema/members.ts | 73 + packages/db/schema/options.ts | 53 + packages/db/schema/passkeys.ts | 47 + packages/db/schema/relations.ts | 535 + packages/db/schema/safes.ts | 48 + packages/db/schema/sessions.ts | 21 + packages/db/schema/share-classes.ts | 71 + packages/db/schema/shares.ts | 57 + packages/db/schema/stakeholders.ts | 45 + packages/db/schema/table.ts | 2 + packages/db/schema/templates.ts | 123 + packages/db/schema/updates.ts | 71 + packages/db/schema/users.ts | 22 + packages/db/schema/verification-tokens.ts | 75 + {prisma => packages/db}/seeds/companies.ts | 34 +- packages/db/seeds/index.ts | 62 + {prisma => packages/db}/seeds/team.ts | 74 +- packages/db/tsconfig.json | 27 + packages/db/utils.ts | 71 + packages/logger/.gitignore | 175 + packages/logger/README.md | 15 + packages/logger/biome.json | 3 + packages/logger/index.ts | 17 + packages/logger/package.json | 20 + packages/logger/tsconfig.json | 27 + pnpm-lock.yaml | 18863 ---------------- prisma/enum-generator.cjs | 42 - .../migration.sql | 827 - .../20240520051518_add_country/migration.sql | 8 - .../20240527024755_add_safe/migration.sql | 2 - .../migration.sql | 8 - .../migration.sql | 2 - .../migration.sql | 2 - .../migration.sql | 77 - .../20240626090043_api_key/migration.sql | 20 - .../migration.sql | 21 - .../migration.sql | 2 - .../20240629070543_add_api_key/migration.sql | 15 - .../migration.sql | 23 - .../migration.sql | 2 - .../20240709002523_add_rbac/migration.sql | 22 - .../migration.sql | 27 - .../migration.sql | 11 - .../migration.sql | 30 - .../migration.sql | 7 - .../migration.sql | 30 - .../migration.sql | 2 - .../migration.sql | 15 - .../migration.sql | 27 - .../migration.sql | 19 - .../migration.sql | 10 - prisma/migrations/migration_lock.toml | 3 - prisma/schema.prisma | 1146 - prisma/seeds/index.ts | 69 - public/pdf.worker.min.js | 22 - src/app/layout.tsx | 53 - .../onboarding/auth-form-header.tsx | 21 - src/components/ui/button.tsx | 79 - src/constants/env.ts | 1 - src/instrumentation.ts | 16 - src/lib/env.ts | 13 - src/server/db.ts | 34 - src/server/user.ts | 16 - tsconfig.json | 46 - turbo.jsonc | 38 + 675 files changed, 12563 insertions(+), 22307 deletions(-) delete mode 100644 .gitpod.yml delete mode 100755 .husky/pre-commit delete mode 100644 .lintstagedrc.cjs rename src/components/update/web-component.tsx => .npmrc (100%) delete mode 100644 .tool-versions delete mode 100644 .vscode/settings.json rename .dockerignore => apps/captable/.gitignore (84%) create mode 100644 apps/captable/README.md rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/(legal)/3921/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/(legal)/409a/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/audits/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/captable/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/[bucketId]/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/components/modal.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/components/table.tsx (98%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/[dataRoomPublicId]/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-files.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-popover.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-uploader.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/dataroom-folders.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/document-upload-button.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/esign/[templatePublicId]/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/add-esign-doc-button.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/table.tsx (97%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/temp-cancel-btx.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/esign/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/esign/v/[templatePublicId]/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/share/_page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/documents/share/analytics/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/equity-plans/create-equity-plan-button.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/equity-plans/form.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/equity-plans/modal.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/equity-plans/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/equity-plans/table.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/fundraise/convertible-notes/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/fundraise/investments/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/fundraise/safes/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/layout.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/reports/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/securities/options/issue-stock-option-button.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/securities/options/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/securities/shares/issue-share-button.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/securities/shares/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/securities/transactions/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/components/cta-button.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/components/table.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/billing/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/company/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/create-access-token.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/table.tsx (99%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/developer/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/layout.tsx (91%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/notifications/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/profile/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/roles/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/security/2fa/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/security/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/security/passkey/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/security/password/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/team/add-team-member-dropdown-menu.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/settings/team/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/share-classes/create-share-class-button.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/share-classes/edit-share-class-button.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/share-classes/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/share-classes/table.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/stakeholders/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/updates/[updatePublicId]/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/[publicId]/updates/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/company/new/page.tsx (100%) rename {src => apps/captable}/app/(authenticated)/(dashboard)/layout.tsx (100%) rename {src => apps/captable}/app/(authenticated)/layout.tsx (100%) rename {src => apps/captable}/app/(authenticated)/onboarding/page.tsx (100%) rename {src => apps/captable}/app/(documents)/data-rooms/[publicId]/[bucketId]/page.tsx (100%) rename {src => apps/captable}/app/(documents)/data-rooms/[publicId]/page.tsx (100%) rename {src => apps/captable}/app/(documents)/esign/[token]/page.tsx (100%) rename {src => apps/captable}/app/(unauthenticated)/check-email/page.tsx (100%) rename {src => apps/captable}/app/(unauthenticated)/email-sent/page.tsx (100%) rename {src => apps/captable}/app/(unauthenticated)/forgot-password/page.tsx (100%) rename {src => apps/captable}/app/(unauthenticated)/login/page.tsx (91%) rename {src => apps/captable}/app/(unauthenticated)/new/components/LoginWithGoogle.tsx (100%) rename {src => apps/captable}/app/(unauthenticated)/new/page.tsx (100%) rename {src => apps/captable}/app/(unauthenticated)/password-updated/page.tsx (100%) rename {src => apps/captable}/app/(unauthenticated)/reset-password/[token]/page.tsx (100%) rename {src => apps/captable}/app/(unauthenticated)/reset-password/page.tsx (100%) rename {src => apps/captable}/app/(unauthenticated)/set-password/[token]/page.tsx (100%) rename {src => apps/captable}/app/(unauthenticated)/set-password/page.tsx (100%) rename {src => apps/captable}/app/(unauthenticated)/signup/page.tsx (91%) rename {src => apps/captable}/app/(unauthenticated)/verify-email/[token]/page.tsx (100%) rename {src => apps/captable}/app/(unauthenticated)/verify-email/page.tsx (100%) rename {src/app/updates => apps/captable/app}/[publicId]/page.tsx (98%) rename {src => apps/captable}/app/api/(internal)/apiKeys/route.ts (100%) rename {src => apps/captable}/app/api/auth/[...nextauth]/route.ts (100%) rename {src => apps/captable}/app/api/stripe/webhook/route.ts (100%) rename {src => apps/captable}/app/api/trpc/[trpc]/route.ts (100%) rename {src => apps/captable}/app/api/v1/[[...route]]/route.ts (100%) rename {src => apps/captable}/app/api/v1/docs/route.ts (100%) create mode 100644 apps/captable/app/favicon.ico rename {src => apps/captable}/app/global-error.tsx (100%) create mode 100644 apps/captable/app/layout.tsx rename {src => apps/captable}/app/not-found.tsx (100%) rename {src => apps/captable}/app/page.tsx (100%) rename {src => apps/captable}/app/verify-member/[token]/page.tsx (100%) rename {src => apps/captable}/assets/logo.svg (100%) create mode 100644 apps/captable/biome.json rename components.json => apps/captable/components.json (89%) rename {src => apps/captable}/components/audit/audit-table/audit-table-toolbar.tsx (100%) rename {src => apps/captable}/components/audit/audit-table/index.tsx (98%) rename {src => apps/captable}/components/billing/plan-details/index.tsx (97%) rename {src => apps/captable}/components/billing/pricing-modal/empty-plans.tsx (100%) rename {src => apps/captable}/components/billing/pricing-modal/index.tsx (99%) rename {src => apps/captable}/components/billing/pricing-modal/pricing-button.tsx (100%) rename {src => apps/captable}/components/billing/pricing-modal/pricing-card.tsx (100%) rename {src => apps/captable}/components/common/LoadingSpinner.tsx (100%) rename {src => apps/captable}/components/common/confirmDialog.tsx (100%) rename {src => apps/captable}/components/common/empty-state.tsx (100%) rename {src => apps/captable}/components/common/file-icon.tsx (100%) rename {src => apps/captable}/components/common/icons.tsx (100%) rename {src => apps/captable}/components/common/loading.tsx (100%) rename {src => apps/captable}/components/common/logo.tsx (81%) rename {src => apps/captable}/components/common/modal.tsx (100%) rename {src => apps/captable}/components/common/push-modal.tsx (100%) rename {src => apps/captable}/components/common/share-modal.tsx (100%) rename {src => apps/captable}/components/common/slide-over.tsx (100%) rename {src => apps/captable}/components/common/tldr.tsx (100%) rename {src => apps/captable}/components/dashboard/navbar/command-menu.tsx (100%) rename {src => apps/captable}/components/dashboard/navbar/index.tsx (100%) rename {src => apps/captable}/components/dashboard/navbar/mobile-drawer.tsx (100%) rename {src => apps/captable}/components/dashboard/navbar/user-dropdown.tsx (100%) rename {src => apps/captable}/components/dashboard/overview/activities-card.tsx (98%) rename {src => apps/captable}/components/dashboard/overview/donut-card.tsx (100%) rename {src => apps/captable}/components/dashboard/overview/donut-selector.tsx (100%) rename {src => apps/captable}/components/dashboard/overview/empty.tsx (100%) rename {src => apps/captable}/components/dashboard/overview/summary-table.tsx (100%) rename {src => apps/captable}/components/dashboard/overview/top-card.tsx (100%) rename {src => apps/captable}/components/dashboard/page-layout/index.tsx (100%) rename {src => apps/captable}/components/dashboard/sidebar/company-switcher.tsx (100%) rename {src => apps/captable}/components/dashboard/sidebar/index.tsx (100%) rename {src => apps/captable}/components/dashboard/sidebar/nav-link.tsx (100%) rename {src => apps/captable}/components/documents/data-room/explorer.tsx (100%) rename {src => apps/captable}/components/esign/optional-message-modal.tsx (100%) rename {src => apps/captable}/components/file/office-viewer.tsx (100%) rename {src => apps/captable}/components/file/preview.tsx (100%) rename {src => apps/captable}/components/member/data.ts (100%) rename {src => apps/captable}/components/member/member-bulk-import-modal.tsx (100%) rename {src => apps/captable}/components/member/member-profile.tsx (99%) rename {src => apps/captable}/components/member/member-table-toolbar.tsx (100%) rename {src => apps/captable}/components/member/member-table.tsx (100%) rename {src => apps/captable}/components/member/member-uploader.tsx (100%) rename {src => apps/captable}/components/member/verify-member-form.tsx (100%) rename {src => apps/captable}/components/modals/bank-account-modal.tsx (100%) rename {src => apps/captable}/components/modals/document-upload-modal.tsx (100%) rename {src => apps/captable}/components/modals/equity-pan/equity-plan-form.tsx (100%) rename {src => apps/captable}/components/modals/equity-pan/equity-plan-modal.tsx (100%) rename {src => apps/captable}/components/modals/esign-doc/index.tsx (100%) rename {src => apps/captable}/components/modals/esign-doc/steps/add-recepients-step.tsx (99%) rename {src => apps/captable}/components/modals/esign-doc/steps/upload-document-step.tsx (100%) rename {src => apps/captable}/components/modals/existing-safe-modal.tsx (100%) rename {src => apps/captable}/components/modals/index.ts (100%) rename {src => apps/captable}/components/modals/investor/add-investor-form.tsx (100%) rename {src => apps/captable}/components/modals/investor/add-investor-modal.tsx (100%) rename {src => apps/captable}/components/modals/issue-share-modal.tsx (100%) rename {src => apps/captable}/components/modals/issue-stock-option-modal.tsx (100%) rename {src => apps/captable}/components/modals/new-safe-modal.tsx (100%) rename {src => apps/captable}/components/modals/role-create-update-modal.tsx (100%) rename {src => apps/captable}/components/modals/share-class/share-class-form.tsx (100%) rename {src => apps/captable}/components/modals/share-class/share-class-modal.tsx (100%) rename {src => apps/captable}/components/modals/share-dataroom-modal.tsx (100%) rename {src => apps/captable}/components/modals/share-update-modal.tsx (100%) rename {src => apps/captable}/components/modals/stakeholder/multiple-stakeholders-modal.tsx (100%) rename {src => apps/captable}/components/modals/stakeholder/single-stake-holder-form.tsx (100%) rename {src => apps/captable}/components/modals/stakeholder/single-stake-holder-modal.tsx (100%) rename {src => apps/captable}/components/modals/stakeholder/update-stakeholder-modal.tsx (100%) rename {src => apps/captable}/components/modals/team-member/team-member-modal.tsx (100%) rename {src => apps/captable}/components/modals/wip-modal.tsx (100%) create mode 100644 apps/captable/components/onboarding/auth-form-header.tsx rename {src => apps/captable}/components/onboarding/check-email/index.tsx (100%) rename {src => apps/captable}/components/onboarding/company-form.tsx (99%) rename {src => apps/captable}/components/onboarding/email-sent/index.tsx (100%) rename {src => apps/captable}/components/onboarding/forgot-password/index.tsx (100%) rename {src => apps/captable}/components/onboarding/reset-password/index.tsx (100%) rename {src => apps/captable}/components/onboarding/set-password/index.tsx (100%) rename {src => apps/captable}/components/onboarding/signin/index.tsx (100%) rename {src => apps/captable}/components/onboarding/signup/index.tsx (100%) rename {src => apps/captable}/components/onboarding/verify-email/index.tsx (100%) rename {src => apps/captable}/components/public-env-script.tsx (100%) rename {src => apps/captable}/components/rbac/allow.tsx (100%) rename {src => apps/captable}/components/rbac/role-table.tsx (100%) rename {src => apps/captable}/components/safe/existing-safe-modal.tsx (100%) rename {src => apps/captable}/components/safe/new-safe-modal.tsx (100%) rename {src => apps/captable}/components/safe/safe-actions.tsx (100%) rename {src => apps/captable}/components/safe/safe-table/data.tsx (100%) rename {src => apps/captable}/components/safe/safe-table/index.tsx (100%) rename {src => apps/captable}/components/safe/safe-table/safe-table-toolbar.tsx (100%) rename {src => apps/captable}/components/safe/steps/general-details.tsx (100%) rename {src => apps/captable}/components/safe/steps/investor-details/form.tsx (100%) rename {src => apps/captable}/components/safe/steps/investor-details/index.tsx (100%) rename {src => apps/captable}/components/safe/steps/safe-documents.tsx (98%) rename {src => apps/captable}/components/safe/steps/safe-template.tsx (99%) rename {src => apps/captable}/components/screen-size.tsx (100%) rename {src => apps/captable}/components/securities/options/data.tsx (100%) rename {src => apps/captable}/components/securities/options/option-table-toolbar.tsx (100%) rename {src => apps/captable}/components/securities/options/option-table.tsx (100%) rename {src => apps/captable}/components/securities/options/steps/documents.tsx (98%) rename {src => apps/captable}/components/securities/options/steps/general-details.tsx (100%) rename {src => apps/captable}/components/securities/options/steps/relevant-dates.tsx (100%) rename {src => apps/captable}/components/securities/options/steps/vesting-details.tsx (100%) rename {src => apps/captable}/components/securities/shared/EmptySelect.tsx (100%) rename {src => apps/captable}/components/securities/shares/data.tsx (100%) rename {src => apps/captable}/components/securities/shares/share-modal.tsx (100%) rename {src => apps/captable}/components/securities/shares/share-table-toolbar.tsx (100%) rename {src => apps/captable}/components/securities/shares/share-table.tsx (99%) rename {src => apps/captable}/components/securities/shares/steps/contribution-details.tsx (100%) rename {src => apps/captable}/components/securities/shares/steps/documents.tsx (98%) rename {src => apps/captable}/components/securities/shares/steps/general-details.tsx (100%) rename {src => apps/captable}/components/securities/shares/steps/relevant-dates.tsx (100%) rename {src => apps/captable}/components/security/SecurityList.tsx (100%) rename {src => apps/captable}/components/security/SettingHeader.tsx (100%) rename {src => apps/captable}/components/security/passkey/create-passkey-modal.tsx (100%) rename {src => apps/captable}/components/security/passkey/data.tsx (100%) rename {src => apps/captable}/components/security/passkey/passkey-table-toolbar.tsx (100%) rename {src => apps/captable}/components/security/passkey/update-passkey-name-modal.tsx (100%) rename {src => apps/captable}/components/security/passkey/user-passkeys-data-table.tsx (99%) rename {src => apps/captable}/components/security/password/update-password-form.tsx (100%) rename {src => apps/captable}/components/settings/settings-sidebar.tsx (100%) rename {src => apps/captable}/components/share/page-layout.tsx (100%) rename {src => apps/captable}/components/stakeholder/stakeholder-dropdown.tsx (100%) rename {src => apps/captable}/components/stakeholder/stakeholder-table-toolbar.tsx (100%) rename {src => apps/captable}/components/stakeholder/stakeholder-table.tsx (100%) rename {src => apps/captable}/components/stakeholder/stakeholder-uploader.tsx (100%) rename {src => apps/captable}/components/template/canavs-toolbar/index.tsx (99%) rename {src => apps/captable}/components/template/field-canvas/custom-field-renderer/custom-select-field-renderer.tsx (100%) rename {src => apps/captable}/components/template/field-canvas/custom-field-renderer/custom-text-field-renderer.tsx (100%) rename {src => apps/captable}/components/template/field-canvas/custom-field-renderer/index.tsx (100%) rename {src => apps/captable}/components/template/field-canvas/drawing-field.tsx (92%) rename {src => apps/captable}/components/template/field-canvas/index.tsx (100%) rename {src => apps/captable}/components/template/field-canvas/readonly-field-canvas.tsx (100%) rename {src => apps/captable}/components/template/field-canvas/readonly-template-field.tsx (100%) rename {src => apps/captable}/components/template/field-canvas/template-field-container.tsx (98%) rename {src => apps/captable}/components/template/field-canvas/template-field.tsx (99%) rename {src => apps/captable}/components/template/field-type-data.ts (100%) rename {src => apps/captable}/components/template/pdf-canvas/index.tsx (100%) rename {src => apps/captable}/components/template/signing-field-form/index.tsx (100%) rename {src => apps/captable}/components/template/signing-fields/field-renderer.tsx (100%) rename {src => apps/captable}/components/template/signing-fields/index.tsx (100%) rename {src => apps/captable}/components/template/template-field-form/index.tsx (100%) create mode 100644 apps/captable/components/theme-toggle.tsx rename {src => apps/captable}/components/ui/accordion.tsx (100%) rename {src => apps/captable}/components/ui/alert-dialog.tsx (100%) rename {src => apps/captable}/components/ui/alert.tsx (100%) rename {src => apps/captable}/components/ui/avatar.tsx (100%) rename {src => apps/captable}/components/ui/badge.tsx (100%) create mode 100644 apps/captable/components/ui/button.tsx rename {src => apps/captable}/components/ui/card.tsx (100%) rename {src => apps/captable}/components/ui/checkbox.tsx (100%) rename {src => apps/captable}/components/ui/combobox.tsx (100%) rename {src => apps/captable}/components/ui/command.tsx (100%) rename {src => apps/captable}/components/ui/data-table/data-table-body.tsx (100%) rename {src => apps/captable}/components/ui/data-table/data-table-buttons.tsx (100%) rename {src => apps/captable}/components/ui/data-table/data-table-content.tsx (100%) rename {src => apps/captable}/components/ui/data-table/data-table-faceted-filter.tsx (100%) rename {src => apps/captable}/components/ui/data-table/data-table-header.tsx (100%) rename {src => apps/captable}/components/ui/data-table/data-table-pagination.tsx (100%) rename {src => apps/captable}/components/ui/data-table/data-table-view-options.tsx (100%) rename {src => apps/captable}/components/ui/data-table/data-table.tsx (100%) rename {src => apps/captable}/components/ui/dialog.tsx (100%) rename {src => apps/captable}/components/ui/dropdown-button.tsx (100%) rename {src => apps/captable}/components/ui/dropdown-menu.tsx (96%) rename {src => apps/captable}/components/ui/form.tsx (100%) rename {src => apps/captable}/components/ui/input-otp.tsx (100%) rename {src => apps/captable}/components/ui/input.tsx (100%) rename {src => apps/captable}/components/ui/kbd.tsx (100%) rename {src => apps/captable}/components/ui/label.tsx (100%) rename {src => apps/captable}/components/ui/multi-selector.tsx (100%) rename {src => apps/captable}/components/ui/password-input.tsx (100%) rename {src => apps/captable}/components/ui/pdf-viewer.tsx (100%) rename {src => apps/captable}/components/ui/popover.tsx (100%) rename {src => apps/captable}/components/ui/radio-group.tsx (100%) rename {src => apps/captable}/components/ui/scroll-area.tsx (100%) rename {src => apps/captable}/components/ui/select.tsx (100%) rename {src => apps/captable}/components/ui/separator.tsx (100%) rename {src => apps/captable}/components/ui/sheet.tsx (100%) rename {src => apps/captable}/components/ui/signature-pad.tsx (100%) rename {src => apps/captable}/components/ui/simple-multi-select.tsx (100%) rename {src => apps/captable}/components/ui/stepper.tsx (100%) rename {src => apps/captable}/components/ui/switch.tsx (100%) rename {src => apps/captable}/components/ui/table.tsx (100%) rename {src => apps/captable}/components/ui/tabs.tsx (100%) rename {src => apps/captable}/components/ui/textarea.tsx (100%) rename {src => apps/captable}/components/ui/tooltip.tsx (100%) rename {src => apps/captable}/components/ui/un-authorized-state.tsx (100%) rename {src => apps/captable}/components/ui/uploader.tsx (98%) rename {src => apps/captable}/components/update/change-update-visibility-alert-dialog.tsx (100%) rename {src => apps/captable}/components/update/editor.tsx (99%) rename {src => apps/captable}/components/update/renderer.tsx (100%) rename {src => apps/captable}/components/update/update-table-toolbar.tsx (100%) rename {src => apps/captable}/components/update/update-table.tsx (100%) create mode 100644 apps/captable/components/update/web-component.tsx rename {src => apps/captable}/emails/AccountVerificationEmail.tsx (100%) rename {src => apps/captable}/emails/EsignConfirmationEmail.tsx (100%) rename {src => apps/captable}/emails/EsignEmail.tsx (100%) rename {src => apps/captable}/emails/MagicLinkEmail.tsx (100%) rename {src => apps/captable}/emails/MemberInviteEmail.tsx (100%) rename {src => apps/captable}/emails/PasswordResetEmail.tsx (100%) rename {src => apps/captable}/emails/ShareDataRoomEmail.tsx (100%) rename {src => apps/captable}/emails/ShareUpdateEmail.tsx (100%) rename src/env.js => apps/captable/env.ts (91%) rename {src => apps/captable}/hooks/use-allowed.tsx (100%) rename {src => apps/captable}/hooks/use-force-update.ts (100%) rename {src => apps/captable}/hooks/use-isomorphic-layout-effect.ts (100%) rename {src => apps/captable}/hooks/use-listen-pkey.ts (100%) rename {src => apps/captable}/jobs/auth-verification-email.ts (100%) rename {src => apps/captable}/jobs/base.ts (98%) rename {src => apps/captable}/jobs/esign-confirmation-email.ts (100%) rename {src => apps/captable}/jobs/esign-email.ts (100%) rename {src => apps/captable}/jobs/esign-pdf.ts (100%) rename {src => apps/captable}/jobs/member-inivite-email.ts (100%) rename {src => apps/captable}/jobs/password-reset-email.ts (100%) rename {src => apps/captable}/jobs/share-data-room-email.ts (100%) rename {src => apps/captable}/jobs/share-update-email.ts (100%) rename {src => apps/captable}/jobs/start.ts (100%) rename {src => apps/captable}/lib/authenticator.ts (86%) rename {src => apps/captable/lib}/client-only/stripe.ts (100%) rename {src => apps/captable/lib}/common/dayjs.ts (100%) rename {src => apps/captable/lib}/common/id.ts (100%) rename {src => apps/captable/lib}/common/uploads.ts (100%) rename {src => apps/captable/lib}/constants/auth.ts (59%) rename {src => apps/captable/lib}/constants/esign.ts (100%) rename {src => apps/captable/lib}/constants/job.ts (100%) rename src/lib/constants.ts => apps/captable/lib/constants/meta.ts (80%) rename {src => apps/captable/lib}/constants/passkey.ts (100%) rename {src => apps/captable/lib}/constants/sentry.ts (100%) rename {src => apps/captable/lib}/constants/stripe.ts (100%) rename {src => apps/captable}/lib/countries.ts (100%) rename {src => apps/captable}/lib/crypto.ts (96%) rename {src => apps/captable}/lib/dom.ts (100%) rename {src => apps/captable}/lib/error/errors/base.ts (100%) rename {src => apps/captable}/lib/error/index.ts (100%) rename {src => apps/captable}/lib/headers.ts (100%) rename {src => apps/captable}/lib/invite-team-members-csv-parser.ts (100%) rename {src => apps/captable}/lib/jwt.ts (100%) rename {src => apps/captable}/lib/logger.ts (100%) rename {src => apps/captable}/lib/mime.ts (100%) rename {src => apps/captable/lib}/pdf-templates/audit-log-template.tsx (98%) rename {src => apps/captable}/lib/rbac/README.md (100%) rename {src => apps/captable}/lib/rbac/access-control-utils.ts (100%) rename {src => apps/captable}/lib/rbac/access-control.ts (100%) rename {src => apps/captable}/lib/rbac/actions.ts (100%) rename {src => apps/captable}/lib/rbac/constants.ts (100%) rename {src => apps/captable}/lib/rbac/index.ts (100%) rename {src => apps/captable}/lib/rbac/rbac.test.ts (100%) rename {src => apps/captable}/lib/rbac/schema.ts (100%) rename {src => apps/captable}/lib/rbac/subjects.ts (100%) rename {scripts => apps/captable/lib/scripts}/copy-pdfjs-worker.cjs (100%) rename {scripts => apps/captable/lib/scripts}/migrate.sh (100%) rename {src => apps/captable}/lib/singleton.ts (100%) rename {src => apps/captable}/lib/stakeholders-csv-parser.ts (100%) rename {src => apps/captable}/lib/states.ts (100%) rename {src => apps/captable}/lib/string.ts (100%) rename {src => apps/captable}/lib/tags.ts (100%) rename {src => apps/captable}/lib/token.ts (100%) rename {src => apps/captable}/lib/types.ts (95%) rename {src => apps/captable}/lib/utils.ts (100%) rename {src => apps/captable}/lib/vesting.ts (100%) rename {src => apps/captable}/lib/zodSchemas.ts (100%) rename {src => apps/captable}/middleware.ts (100%) create mode 100644 apps/captable/next.config.js create mode 100644 apps/captable/package.json rename postcss.config.cjs => apps/captable/postcss.config.cjs (100%) rename {src => apps/captable}/providers/add-share-form-provider.tsx (100%) rename {src => apps/captable}/providers/descendants.tsx (100%) rename {src => apps/captable}/providers/esign-form-provider.tsx (100%) rename {src => apps/captable}/providers/form-value-provider.tsx (100%) rename {src => apps/captable}/providers/next-auth.tsx (100%) rename {src => apps/captable}/providers/progress-bar.tsx (100%) rename {src => apps/captable}/providers/roles-provider.tsx (100%) rename {src => apps/captable}/providers/stock-option-form-provider.tsx (100%) rename {src => apps/captable}/providers/template-field-provider.tsx (97%) rename {src => apps/captable}/providers/template-signing-field-provider.tsx (96%) create mode 100644 apps/captable/providers/theme-provider.tsx create mode 100644 apps/captable/public/file-text.svg create mode 100644 apps/captable/public/globe.svg create mode 100644 apps/captable/public/next.svg rename {public => apps/captable/public}/placeholders/company.svg (100%) rename {public => apps/captable/public}/placeholders/user.svg (100%) rename {public => apps/captable/public}/sample/csv/captable-stakeholders-template.csv (100%) rename {public => apps/captable/public}/sample/csv/captable-team-members-template.csv (100%) rename {public => apps/captable/public}/sample/pdf/dummy.pdf (100%) create mode 100644 apps/captable/public/turborepo-dark.svg create mode 100644 apps/captable/public/turborepo-light.svg create mode 100644 apps/captable/public/vercel.svg create mode 100644 apps/captable/public/window.svg rename {public => apps/captable/public}/yc/POST_MONEY_CAP.pdf (100%) rename {public => apps/captable/public}/yc/POST_MONEY_CAP_WITH_PRO_RATA.pdf (100%) rename {public => apps/captable/public}/yc/POST_MONEY_DISCOUNT.pdf (100%) rename {public => apps/captable/public}/yc/POST_MONEY_DISCOUNT_WITH_PRO_RATA.pdf (100%) rename {public => apps/captable/public}/yc/POST_MONEY_MFN.pdf (100%) rename {public => apps/captable/public}/yc/POST_MONEY_MFN_WITH_PRO_RATA.pdf (100%) rename {src => apps/captable}/schema/contacts.ts (100%) rename sentry.client.config.ts => apps/captable/sentry.client.config.ts (100%) rename sentry.edge.config.ts => apps/captable/sentry.edge.config.ts (100%) rename sentry.server.config.ts => apps/captable/sentry.server.config.ts (100%) rename {src => apps/captable}/server/api/const.ts (100%) rename {src => apps/captable}/server/api/error.ts (100%) rename {src => apps/captable}/server/api/hono.ts (100%) rename {src => apps/captable}/server/api/index.ts (100%) rename {src => apps/captable}/server/api/middlewares/bearer-token.ts (100%) rename {src => apps/captable}/server/api/middlewares/services.ts (100%) rename {src => apps/captable}/server/api/middlewares/session-token.ts (100%) rename {src => apps/captable}/server/api/routes/_example.ts (100%) rename {src => apps/captable}/server/api/routes/company/getMany.ts (100%) rename {src => apps/captable}/server/api/routes/company/getOne.ts (100%) rename {src => apps/captable}/server/api/routes/company/index.ts (100%) rename {src => apps/captable}/server/api/routes/share/create.ts (100%) rename {src => apps/captable}/server/api/routes/share/delete.ts (100%) rename {src => apps/captable}/server/api/routes/share/getMany.ts (100%) rename {src => apps/captable}/server/api/routes/share/getOne.ts (100%) rename {src => apps/captable}/server/api/routes/share/index.ts (100%) rename {src => apps/captable}/server/api/routes/share/update.ts (100%) rename {src => apps/captable}/server/api/routes/stakeholder/create.ts (100%) rename {src => apps/captable}/server/api/routes/stakeholder/delete.ts (100%) rename {src => apps/captable}/server/api/routes/stakeholder/getMany.ts (100%) rename {src => apps/captable}/server/api/routes/stakeholder/getOne.ts (100%) rename {src => apps/captable}/server/api/routes/stakeholder/index.ts (100%) rename {src => apps/captable}/server/api/routes/stakeholder/update.ts (100%) rename {src => apps/captable}/server/api/schema/company.ts (100%) rename {src => apps/captable}/server/api/schema/pagination.ts (100%) rename {src => apps/captable}/server/api/schema/shares.ts (100%) rename {src => apps/captable}/server/api/schema/stakeholder.ts (100%) rename {src => apps/captable}/server/api/utils/endpoint-creator.ts (100%) rename {src => apps/captable}/server/audit/actions.ts (100%) rename {src => apps/captable}/server/audit/index.ts (100%) rename {src => apps/captable}/server/audit/schema.ts (100%) rename {src => apps/captable}/server/audit/types.ts (100%) rename {src => apps/captable}/server/auth.ts (57%) rename {src => apps/captable}/server/company.ts (100%) rename {src => apps/captable}/server/esign.ts (96%) rename {src => apps/captable}/server/file-uploads.ts (98%) rename {src => apps/captable}/server/mailer.ts (100%) rename {src => apps/captable}/server/member.ts (100%) rename {src => apps/captable}/server/passkey/create-authentication-option.ts (100%) rename {src => apps/captable}/server/passkey/create-passkey.ts (98%) rename {src => apps/captable}/server/passkey/create-registration-options.ts (97%) rename {src => apps/captable}/server/passkey/create-signin-options.ts (100%) rename {src => apps/captable}/server/passkey/delete-passkey.ts (100%) rename {src => apps/captable}/server/passkey/find-passkeys.ts (100%) rename {src => apps/captable}/server/passkey/update-passkey.ts (100%) rename {src => apps/captable}/server/password-reset-token.ts (100%) rename {src => apps/captable}/server/stripe.ts (100%) create mode 100644 apps/captable/server/user.ts rename {src => apps/captable}/server/verification-token.ts (100%) rename {src => apps/captable}/styles/editor.css (100%) rename {src => apps/captable}/styles/fonts.ts (100%) create mode 100644 apps/captable/styles/fonts/GeistMonoVF.woff create mode 100644 apps/captable/styles/fonts/GeistVF.woff rename {src => apps/captable}/styles/fonts/Satoshi-Black.ttf (100%) rename {src => apps/captable}/styles/fonts/Satoshi-Bold.ttf (100%) rename {src => apps/captable}/styles/fonts/Satoshi-Variable.woff2 (100%) create mode 100644 apps/captable/styles/fonts/index.ts rename {src => apps/captable}/styles/globals.css (100%) rename {src => apps/captable}/styles/hint.css (100%) rename tailwind.config.ts => apps/captable/tailwind.config.ts (100%) rename {src => apps/captable}/trpc/api/root.ts (100%) rename {src => apps/captable}/trpc/api/trpc.ts (98%) rename {src => apps/captable}/trpc/react.tsx (100%) rename {src => apps/captable}/trpc/routers/access-token/router.ts (100%) rename {src => apps/captable}/trpc/routers/audit-router/procedures/all-esign-audits.ts (100%) rename {src => apps/captable}/trpc/routers/audit-router/router.ts (100%) rename {src => apps/captable}/trpc/routers/audit-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/auth/procedure/forgot-password.ts (100%) rename {src => apps/captable}/trpc/routers/auth/procedure/new-password.ts (100%) rename {src => apps/captable}/trpc/routers/auth/procedure/resend-email.ts (100%) rename {src => apps/captable}/trpc/routers/auth/procedure/signup.ts (100%) rename {src => apps/captable}/trpc/routers/auth/procedure/verify-email.ts (100%) rename {src => apps/captable}/trpc/routers/auth/router.ts (100%) rename {src => apps/captable}/trpc/routers/auth/schema.ts (100%) rename {src => apps/captable}/trpc/routers/bank-accounts/router.ts (100%) rename {src => apps/captable}/trpc/routers/billing-router/procedures/checkout.ts (100%) rename {src => apps/captable}/trpc/routers/billing-router/procedures/get-products.ts (100%) rename {src => apps/captable}/trpc/routers/billing-router/procedures/get-subscription.ts (100%) rename {src => apps/captable}/trpc/routers/billing-router/procedures/stripe-portal.ts (100%) rename {src => apps/captable}/trpc/routers/billing-router/router.ts (100%) rename {src => apps/captable}/trpc/routers/billing-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/bucket-router/procedures/create-bucket.ts (100%) rename {src => apps/captable}/trpc/routers/bucket-router/router.ts (100%) rename {src => apps/captable}/trpc/routers/bucket-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/common/router.ts (100%) rename {src => apps/captable}/trpc/routers/company-router/router.ts (100%) rename {src => apps/captable}/trpc/routers/company-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/data-room-router/router.ts (99%) rename {src => apps/captable}/trpc/routers/data-room-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/document-router/procedures/create-document.ts (97%) rename {src => apps/captable}/trpc/routers/document-router/procedures/get-all-documents.ts (100%) rename {src => apps/captable}/trpc/routers/document-router/procedures/get-document.ts (100%) rename {src => apps/captable}/trpc/routers/document-router/router.ts (100%) rename {src => apps/captable}/trpc/routers/document-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/document-share-router/procedures/create-document-share.ts (100%) rename {src => apps/captable}/trpc/routers/document-share-router/router.ts (100%) rename {src => apps/captable}/trpc/routers/document-share-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/equity-plan/router.ts (100%) rename {src => apps/captable}/trpc/routers/equity-plan/schema.ts (100%) rename {src => apps/captable}/trpc/routers/member-router/procedures/accept-member.ts (100%) rename {src => apps/captable}/trpc/routers/member-router/procedures/get-members.ts (100%) rename {src => apps/captable}/trpc/routers/member-router/procedures/get-profile.ts (100%) rename {src => apps/captable}/trpc/routers/member-router/procedures/invite-member.ts (100%) rename {src => apps/captable}/trpc/routers/member-router/procedures/re-invite.ts (100%) rename {src => apps/captable}/trpc/routers/member-router/procedures/remove-member.ts (100%) rename {src => apps/captable}/trpc/routers/member-router/procedures/revoke-invite.ts (100%) rename {src => apps/captable}/trpc/routers/member-router/procedures/toggle-activation.ts (100%) rename {src => apps/captable}/trpc/routers/member-router/procedures/update-member.ts (100%) rename {src => apps/captable}/trpc/routers/member-router/procedures/update-profile.ts (100%) rename {src => apps/captable}/trpc/routers/member-router/router.ts (100%) rename {src => apps/captable}/trpc/routers/member-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/onboarding-router/router.ts (98%) rename {src => apps/captable}/trpc/routers/onboarding-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/passkey-router/router.ts (100%) rename {src => apps/captable}/trpc/routers/passkey-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/rbac-router/procedures/create-role.ts (100%) rename {src => apps/captable}/trpc/routers/rbac-router/procedures/delete-role.ts (100%) rename {src => apps/captable}/trpc/routers/rbac-router/procedures/get-permissions.ts (100%) rename {src => apps/captable}/trpc/routers/rbac-router/procedures/list-roles.ts (100%) rename {src => apps/captable}/trpc/routers/rbac-router/procedures/update-roles.ts (100%) rename {src => apps/captable}/trpc/routers/rbac-router/router.ts (100%) rename {src => apps/captable}/trpc/routers/rbac-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/safe/procedures/add-existing-safe.ts (97%) rename {src => apps/captable}/trpc/routers/safe/procedures/create-safe.ts (97%) rename {src => apps/captable}/trpc/routers/safe/procedures/delete-safe.ts (100%) rename {src => apps/captable}/trpc/routers/safe/procedures/get-safes.ts (100%) rename {src => apps/captable}/trpc/routers/safe/router.ts (100%) rename {src => apps/captable}/trpc/routers/safe/schema.ts (100%) rename {src => apps/captable}/trpc/routers/securities-router/procedures/add-option.ts (97%) rename {src => apps/captable}/trpc/routers/securities-router/procedures/add-share.ts (98%) rename {src => apps/captable}/trpc/routers/securities-router/procedures/delete-option.ts (100%) rename {src => apps/captable}/trpc/routers/securities-router/procedures/delete-share.ts (100%) rename {src => apps/captable}/trpc/routers/securities-router/procedures/get-options.ts (100%) rename {src => apps/captable}/trpc/routers/securities-router/procedures/get-shares.ts (100%) rename {src => apps/captable}/trpc/routers/securities-router/router.ts (100%) rename {src => apps/captable}/trpc/routers/securities-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/security-router/procedures/update-password.tsx (100%) rename {src => apps/captable}/trpc/routers/security-router/router.ts (100%) rename {src => apps/captable}/trpc/routers/security-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/share-class/router.ts (100%) rename {src => apps/captable}/trpc/routers/share-class/schema.ts (100%) rename {src => apps/captable}/trpc/routers/stakeholder-router/procedures/add-stakeholders.ts (100%) rename {src => apps/captable}/trpc/routers/stakeholder-router/procedures/get-stakeholders.ts (100%) rename {src => apps/captable}/trpc/routers/stakeholder-router/procedures/update-stakeholder.ts (100%) rename {src => apps/captable}/trpc/routers/stakeholder-router/router.ts (100%) rename {src => apps/captable}/trpc/routers/stakeholder-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/template-field-router/procedures/add-fields.ts (100%) rename {src => apps/captable}/trpc/routers/template-field-router/router.ts (100%) rename {src => apps/captable}/trpc/routers/template-field-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/template-router/procedures/cancel-template.ts (100%) rename {src => apps/captable}/trpc/routers/template-router/procedures/create-template.ts (97%) rename {src => apps/captable}/trpc/routers/template-router/procedures/get-all-template.ts (100%) rename {src => apps/captable}/trpc/routers/template-router/procedures/get-signing-fields.tsx (100%) rename {src => apps/captable}/trpc/routers/template-router/procedures/get-template.ts (100%) rename {src => apps/captable}/trpc/routers/template-router/procedures/sign-template.ts (99%) rename {src => apps/captable}/trpc/routers/template-router/router.ts (100%) rename {src => apps/captable}/trpc/routers/template-router/schema.ts (100%) rename {src => apps/captable}/trpc/routers/update/procedures/clone-update.ts (97%) rename {src => apps/captable}/trpc/routers/update/procedures/get-updates.ts (100%) rename {src => apps/captable}/trpc/routers/update/procedures/save-update.ts (98%) rename {src => apps/captable}/trpc/routers/update/procedures/share-update.ts (100%) rename {src => apps/captable}/trpc/routers/update/procedures/toggle-update-visibility.ts (100%) rename {src => apps/captable}/trpc/routers/update/router.ts (100%) rename {src => apps/captable}/trpc/routers/update/schema.ts (100%) rename {src => apps/captable}/trpc/server.ts (100%) rename {src => apps/captable}/trpc/shared.ts (100%) create mode 100644 apps/captable/tsconfig.json delete mode 100644 biome.json create mode 100755 bun.lockb delete mode 100644 knip.ts create mode 100644 lefthook.yml delete mode 100644 next.config.js create mode 100644 packages/config/base.json create mode 100644 packages/config/biome.json create mode 100644 packages/config/index.ts create mode 100644 packages/config/nextjs.json create mode 100644 packages/config/package.json create mode 100644 packages/config/react-library.json create mode 100644 packages/db/.gitignore create mode 100644 packages/db/README.md create mode 100644 packages/db/biome.json create mode 100644 packages/db/config.ts create mode 100644 packages/db/index.ts create mode 100644 packages/db/migrations/0000_ambitious_ares.sql create mode 100644 packages/db/migrations/0001_woozy_blizzard.sql create mode 100644 packages/db/migrations/meta/0000_snapshot.json create mode 100644 packages/db/migrations/meta/0001_snapshot.json create mode 100644 packages/db/migrations/meta/_journal.json create mode 100644 packages/db/package.json create mode 100644 packages/db/schema/access-tokens.ts create mode 100644 packages/db/schema/accounts.ts create mode 100644 packages/db/schema/audits.ts create mode 100644 packages/db/schema/bank-accounts.ts create mode 100644 packages/db/schema/billing.ts create mode 100644 packages/db/schema/buckets.ts create mode 100644 packages/db/schema/companies.ts create mode 100644 packages/db/schema/convertible-notes.ts create mode 100644 packages/db/schema/data-rooms.ts create mode 100644 packages/db/schema/documents.ts create mode 100644 packages/db/schema/enums.ts create mode 100644 packages/db/schema/equity-plans.ts create mode 100644 packages/db/schema/index.ts create mode 100644 packages/db/schema/investments.ts create mode 100644 packages/db/schema/members.ts create mode 100644 packages/db/schema/options.ts create mode 100644 packages/db/schema/passkeys.ts create mode 100644 packages/db/schema/relations.ts create mode 100644 packages/db/schema/safes.ts create mode 100644 packages/db/schema/sessions.ts create mode 100644 packages/db/schema/share-classes.ts create mode 100644 packages/db/schema/shares.ts create mode 100644 packages/db/schema/stakeholders.ts create mode 100644 packages/db/schema/table.ts create mode 100644 packages/db/schema/templates.ts create mode 100644 packages/db/schema/updates.ts create mode 100644 packages/db/schema/users.ts create mode 100644 packages/db/schema/verification-tokens.ts rename {prisma => packages/db}/seeds/companies.ts (58%) create mode 100644 packages/db/seeds/index.ts rename {prisma => packages/db}/seeds/team.ts (54%) create mode 100644 packages/db/tsconfig.json create mode 100644 packages/db/utils.ts create mode 100644 packages/logger/.gitignore create mode 100644 packages/logger/README.md create mode 100644 packages/logger/biome.json create mode 100644 packages/logger/index.ts create mode 100644 packages/logger/package.json create mode 100644 packages/logger/tsconfig.json delete mode 100644 pnpm-lock.yaml delete mode 100644 prisma/enum-generator.cjs delete mode 100644 prisma/migrations/20240519093430_clean_migration/migration.sql delete mode 100644 prisma/migrations/20240520051518_add_country/migration.sql delete mode 100644 prisma/migrations/20240527024755_add_safe/migration.sql delete mode 100644 prisma/migrations/20240531045514_uniq_certificate_on_share/migration.sql delete mode 100644 prisma/migrations/20240531163457_add_tags_column_in_bucket_table/migration.sql delete mode 100644 prisma/migrations/20240604190035_add_public_column_in_update_table/migration.sql delete mode 100644 prisma/migrations/20240611062650_stripe_billing/migration.sql delete mode 100644 prisma/migrations/20240626090043_api_key/migration.sql delete mode 100644 prisma/migrations/20240626233026_update_api_key/migration.sql delete mode 100644 prisma/migrations/20240627054519_add_name_to_api_key/migration.sql delete mode 100644 prisma/migrations/20240629070543_add_api_key/migration.sql delete mode 100644 prisma/migrations/20240629070656_change_key_to_key_id/migration.sql delete mode 100644 prisma/migrations/20240629071500_index_user_id_and_active/migration.sql delete mode 100644 prisma/migrations/20240709002523_add_rbac/migration.sql delete mode 100644 prisma/migrations/20240711071304_add_missing_field_for_api_key/migration.sql delete mode 100644 prisma/migrations/20240718054727_add_more_status_in_template_status/migration.sql delete mode 100644 prisma/migrations/20240718223224_add_bank_account/migration.sql delete mode 100644 prisma/migrations/20240719075859_dynamic_vesting_schedule/migration.sql delete mode 100644 prisma/migrations/20240719112312_refactor_api_key/migration.sql delete mode 100644 prisma/migrations/20240721090639_default_share_legends/migration.sql delete mode 100644 prisma/migrations/20240723005834_separate_vesting_schedule/migration.sql delete mode 100644 prisma/migrations/20240731021954_add_access_token/migration.sql delete mode 100644 prisma/migrations/20240807040118_add_client_id_and_secret/migration.sql delete mode 100644 prisma/migrations/20240807042922_remove_partial_and_hashed_token/migration.sql delete mode 100644 prisma/migrations/migration_lock.toml delete mode 100644 prisma/schema.prisma delete mode 100644 prisma/seeds/index.ts delete mode 100644 public/pdf.worker.min.js delete mode 100644 src/app/layout.tsx delete mode 100644 src/components/onboarding/auth-form-header.tsx delete mode 100644 src/components/ui/button.tsx delete mode 100644 src/constants/env.ts delete mode 100644 src/instrumentation.ts delete mode 100644 src/lib/env.ts delete mode 100644 src/server/db.ts delete mode 100644 src/server/user.ts delete mode 100644 tsconfig.json create mode 100644 turbo.jsonc diff --git a/.gitignore b/.gitignore index 59b274dee..089f8b79c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,61 +1,41 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. -# dependencies -/node_modules -/.pnp +# Dependencies +node_modules +.pnp .pnp.js -# lockfiles -bun.lockb -package-lock.json -yarn.lock +# Local env files +.env +.env.local +.env.development.local +.env.test.local +.env.production.local -# testing -/coverage +# Testing +coverage -# database -/prisma/db.sqlite -/prisma/db.sqlite-journal +# Turbo +.turbo -# next.js -/.next/ -/out/ -next-env.d.ts +# Vercel +.vercel -# production -/build +# Build Outputs +.next/ +out/ +build +dist -# misc -.DS_Store -*.pem -# debug +# Debug npm-debug.log* yarn-debug.log* yarn-error.log* -.pnpm-debug.log* - -# local env files -# do not commit any .env files to git, except for the .env.example file. https://create.t3.gg/en/usage/env-variables#using-environment-variables -.env -.env*.local - -# vercel -.vercel -# typescript -*.tsbuildinfo - -#local -/local - - - -/prisma/enums.ts -/prisma/generated/* - -/.pnpm-store +# Misc +.DS_Store +*.pem -# Sentry Config File -.env.sentry-build-plugin -notes.md \ No newline at end of file +packages/prisma/* +git-new diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index 0a51253bc..000000000 --- a/.gitpod.yml +++ /dev/null @@ -1,46 +0,0 @@ -tasks: - - init: | - pnpm install && - cp .env.example .env && - export NEXTAUTH_SECRET="$(openssl rand -base64 32)" && - export NEXT_PUBLIC_BASE_URL="$(gp url 3000)" && - export EMAIL_SERVER_PORT=2500 - command: pnpm db:migrate && pnpm dx - -ports: - - port: 3000 - visibility: public - onOpen: open-preview - - port: 8025 - visibility: public - onOpen: ignore - - port: 1025 - visibility: private - onOpen: ignore - - port: 2500 - visibility: private - onOpen: ignore - - port: 54321 - visibility: private - onOpen: ignore - -github: - prebuilds: - master: true - pullRequests: true - pullRequestsFromForks: true - addCheck: true - addComment: true - addBadge: true - -vscode: - extensions: - - DavidAnson.vscode-markdownlint - - yzhang.markdown-all-in-one - - esbenp.prettier-vscode - - dbaeumer.vscode-eslint - - bradlc.vscode-tailwindcss - - ban.spellright - - stripe.vscode-stripe - - Prisma.prisma - - ms-dotnettools.vscode-dotnet-runtime diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100755 index d85cb5dea..000000000 --- a/.husky/pre-commit +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" - -SKIP_ENV_VALIDATION=true pnpm lint-staged \ No newline at end of file diff --git a/.lintstagedrc.cjs b/.lintstagedrc.cjs deleted file mode 100644 index 15d5b6ed4..000000000 --- a/.lintstagedrc.cjs +++ /dev/null @@ -1,11 +0,0 @@ -const path = require("node:path"); - -const buildBiomeCommand = (filenames) => - `biome check --apply --no-errors-on-unmatched ${filenames - .map((f) => path.relative(process.cwd(), f)) - .join(" ")}`; - -/** @type {import('lint-staged').Config} */ -module.exports = { - "*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc}": [buildBiomeCommand], -}; diff --git a/src/components/update/web-component.tsx b/.npmrc similarity index 100% rename from src/components/update/web-component.tsx rename to .npmrc diff --git a/.tool-versions b/.tool-versions deleted file mode 100644 index bdc522287..000000000 --- a/.tool-versions +++ /dev/null @@ -1,2 +0,0 @@ -nodejs 22.9.0 -pnpm 9.1.2 diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 6602b0fbc..000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "editor.defaultFormatter": "biomejs.biome", - "editor.formatOnSave": true, - "editor.tabCompletion": "on", - "editor.snippetSuggestions": "top", - "editor.codeActionsOnSave": { - "quickfix.biome": "explicit", - "source.organizeImports.biome": "explicit" - }, - "tailwindCSS.experimental.configFile": "./tailwind.config.ts", - "tailwindCSS.experimental.classRegex": [ - ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"], - ["cn\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"], - ["cx\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"] - ], - "typescript.tsdk": "node_modules/typescript/lib", - "typescript.preferences.autoImportFileExcludePatterns": [ - "@radix-ui/**", - "next/router.d.ts", - "next/dist/client/router.d.ts" - ], - "[typescript]": { - "editor.defaultFormatter": "biomejs.biome" - }, - "[typescriptreact]": { - "editor.defaultFormatter": "biomejs.biome" - }, - "[prisma]": { - "editor.defaultFormatter": "Prisma.prisma" - }, - "[javascript]": { - "editor.defaultFormatter": "biomejs.biome" - } -} diff --git a/.dockerignore b/apps/captable/.gitignore similarity index 84% rename from .dockerignore rename to apps/captable/.gitignore index 9d029352f..df45832f4 100644 --- a/.dockerignore +++ b/apps/captable/.gitignore @@ -4,9 +4,12 @@ /node_modules /.pnp .pnp.js +.yarn/install-state.gz + +# lockfiles bun.lockb -yarn.lock package-lock.json +yarn.lock # testing /coverage @@ -37,8 +40,6 @@ yarn-error.log* # do not commit any .env files to git, except for the .env.example file. https://create.t3.gg/en/usage/env-variables#using-environment-variables .env .env*.local -/prisma/enums.ts -/prisma/generated/* # vercel .vercel @@ -46,6 +47,18 @@ yarn-error.log* # typescript *.tsbuildinfo -#local +# local /local -.vscode/ + +# prisma +/prisma/enums.ts +/prisma/generated/* + +# pnpm +/.pnpm-store + +# Sentry +.env.sentry-build-plugin + +# other +notes.md diff --git a/apps/captable/README.md b/apps/captable/README.md new file mode 100644 index 000000000..8a4cdc093 --- /dev/null +++ b/apps/captable/README.md @@ -0,0 +1,278 @@ + + Captable, Inc. cover image + + +

Captable, Inc.

+

+ #1 Open-source Cap table management platform, an alternative to Carta, Pulley, Angelist and others. +

+

+ Learn more » +

+ +

+ + Github + + + + X (formerly Twitter) Follow + + + + Join us on Discord + + + + CI + + + + License + + + + Docker image + +

+ +

Table of contents

+ +- Features +- Community +- Contibuting +- Self hosting + +

✨ Key features

+ +> [!IMPORTANT] +> We envision a world where cap table management is accessible, secure, and empowering for all. Captable, Inc. aims to democratize the handling of cap tables, securities, and stakeholder interactions. Through cutting-edge technology and a commitment to openness, we strive to be the catalyst for positive change in financial ecosystems. + +👷 **Incorporation** (wip) - Captable, Inc. helps you incorporate your company in minutes, with all the necessary legal documents and filings taken care of. + +👷 **Cap table management** (wip) - Captable, Inc. helps you keep track of your company’s ownership structure, including who owns what percentage of the company, how much stock/options has been issued, and more. + +✅ **Fundraise** - Captable, Inc. can help you raise capital, whether its signing standard or custom SAFE or creating and managing fundraising rounds, tracking investor commitments, and more. + +✅ **Investor updates** - Delight your investors and team members by sending them regular updates on your company’s progress. + +✅ **eSign Documents** - Sign SAFE, NDA, contracts, offere letters or any type of documents with Captable Sign. + +✅ **Data rooms** - Captable, Inc. provides a secure virtual data room where you can store important documents and share them with investors, employees, and other stakeholders. + +

🤝 Community

+We have a community of developers, designers, and entrepreneurs who are passionate about building the future of finance. Join us on Discord to connect with like-minded individuals, share your ideas, and collaborate on projects. + +- [Join us on Discord](https://discord.gg/rCpqnD6G6p) +- [Follow us on Twitter](https://twitter.com/captableinc) +- [Meet the Founder](https://captable.inc/schedule) + +

🫡 Contributing

+ +- Please show us some support by giving it a ⭐️ +- We are looking for contributors to help us build the future of cap table management. +- Let's collaborate on [Discord](https://discord.gg/rCpqnD6G6p) community channel. +- Any contributions you make are truly appreciated. + +

Stack

+ +- [Next.js](https://nextjs.org) +- [Tailwind](https://tailwindcss.com) +- [Prisma ORM](https://prisma.io) + +--- + +

Getting started

+When contributing to Captable, Inc., whether on GitHub or in other community spaces: + +- Be respectful, civil, and open-minded. +- Before opening a new pull request, try searching through the [issue tracker](https://github.com/captableinc/captable/issues) for known issues or fixes. + +

Setup development environment

+ +- Development environment on Gitpod +- Development environment with Docker +- Development environment without Docker + +

Development environment on Gitpod

+ +- Click the button below to open this project in Gitpod. + +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/captableinc/captable) + +--- + +

Development environment with Docker

+ +- Install Docker & Docker Compose +- Fork & clone the forked repository +- Install node and pnpm. (optional) +- Copy `.env.example` to `.env` + + ```bash + cp .env.example .env + ``` + +- Run the following command to start the development environment + + ```bash + + # With pnpm installed + pnpm dx + + # Without pnpm installed + docker compose up + + ``` + +- Run the following command to migrate and seed the database + + ```bash + + docker compose exec app pnpm db:migrate + docker compose exec app pnpm db:seed + + ``` + + > **Note** + > Everytime you make changes to Dockerfile or compose.yml, you need to rebuild the docker image by running `docker compose up --build` + +- Running `docker compose up` will start all the services on their respective ports. + + - App will be running on [http://localhost:3000](http://localhost:3000) + - Emails will be intercepted: [http://localhost:8025](http://localhost:8025) + - SMTP will be on PORT `http://localhost:1025` + - Postgres will be on PORT `http://localhost:5432` + - Prisma studio will be on PORT `http://localhost:5555` + +- Frequently used commands + - `docker compose up` - Start the development environment + - `docker compose down` - Stop the development environment + - `docker compose logs -f` - View logs of the running services + - `docker compose up --build` - Rebuild the docker image + - `docker compose run app pnpm db:migrate` - Run database migrations + - `docker compose run app pnpm db:seed` - Seed the database + +--- + +

Development environment without Docker

+ +> This has been tested on Mac OS and works really well. If you are using Linux/Windows/WSL, you might need to install some additional dependencies. + +- [Fork the repository](https://github.com/captableinc/captable/fork) + +- Clone the repository + + ```bash + git clone https://github.com//captable.git + ``` + +- Copy `.env.example` to `.env` + + ```bash + cp .env.example .env + ``` + +- Install latest version of node and pnpm +- Install latest version of postgres database +- Install [mailpit](https://mailpit.axllent.org/docs/install/) for SMTP and email interception +- Create database `captable` in postgres database +- Update `.env` file's `DATABASE_URL` with database credentials +- For a quick start, you can use [Supabase database](https://supabase.com/) or [Neon](https://neon.tech/) as well. +- To simulate file storage locally, install `minio` via homebrew or any other package manager. + + ```bash + brew install minio + ``` + + Once minio is installed run + ```bash + minio server start --console-address ":9002" + ``` + + This will start minio server
+ minio api will be available on `http://127.0.0.1:9000` and
+ minio web gui will be available on `http://127.0.0.1:9002`. + + once you see these endpoint in terminal, update the following `.env`: + + ```bash + UPLOAD_ENDPOINT="http://127.0.0.1:9000" # should match minio api server's endpoint + NEXT_PUBLIC_UPLOAD_DOMAIN="http://127.0.0.1:9000" # should match minio api server's endpoint + UPLOAD_REGION="us-east-1" # don't change it + UPLOAD_ACCESS_KEY_ID="minioadmin" # by default minio username is "minioadmin" + UPLOAD_SECRET_ACCESS_KEY="minioadmin" # by default minio password is "minioadmin" + UPLOAD_BUCKET_PUBLIC="captable-public-bucket" + UPLOAD_BUCKET_PRIVATE="captable-private-bucket" + ``` + + after this, + go to minio web gui(`http://127.0.0.1:9002`) and login:
+ username: `minioadmin`
+ password: `minioadmin` + + and create two buckets with the name:
`captable-public-bucket` and `captable-private-bucket`,
this should match `UPLOAD_BUCKET_PUBLIC` and `UPLOAD_BUCKET_PRIVATE` env's values. + + and you should be done with minio setup. + +- Run the following command to install dependencies + + ```bash + pnpm install + ``` + +- Run the following command to migrate and seed the database + + ```bash + pnpm db:migrate + pnpm db:seed + ``` + +- Run the following command to start the development server + + ```bash + pnpm dev + + # On a different terminal, run the following command to start the mail server + pnpm email:dev + ``` + + - App will be running on [http://localhost:3000](http://localhost:3000) + - Emails will be intercepted: [http://localhost:8025](http://localhost:8025) + - SMTP will be on PORT `http://localhost:1025` + - Postgres will be on PORT `http://localhost:5432` + +- Frequently used commands + - `pnpm dev` - Start the development server + - `pnpm email:dev` - Start the mail server + - `pnpm db:migrate` - Run database migrations + - `pnpm db:seed` - Seed the database + +

Implement your changes

+ +When making commits, make sure to follow the [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) guidelines, i.e. prepending the message with `feat:`, `fix:`, `chore:`, `docs:`, etc... + +```bash +git add && git commit -m "feat/fix/chore/docs: commit message" +``` + +

Open a pull request

+ +> When you're done + +Make a commit and push your code to your github fork and make a pull-request. + +Thanks for your contributions. Much ❤️ + +--- + +

💌 Contributors

+ +

+ A table of avatars from the project's contributors +

+
+ +--- + +![Alt](https://repobeats.axiom.co/api/embed/a8fc8a167d33eec78a71953a2b9e58985ca4b3b6.svg "Captable repo activity") diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/(legal)/3921/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/(legal)/3921/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/(legal)/3921/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/(legal)/3921/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/(legal)/409a/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/(legal)/409a/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/(legal)/409a/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/(legal)/409a/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/audits/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/audits/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/audits/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/audits/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/captable/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/captable/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/captable/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/captable/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/[bucketId]/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/[bucketId]/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/[bucketId]/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/[bucketId]/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/components/modal.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/components/modal.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/components/modal.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/components/modal.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/components/table.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/components/table.tsx similarity index 98% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/components/table.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/components/table.tsx index fb7a6a524..c717893b0 100644 --- a/src/app/(authenticated)/(dashboard)/[publicId]/documents/components/table.tsx +++ b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/components/table.tsx @@ -1,6 +1,6 @@ "use client"; -import { dayjsExt } from "@/common/dayjs"; +import { dayjsExt } from "@/lib/common/dayjs"; import FileIcon from "@/components/common/file-icon"; import { Card } from "@/components/ui/card"; import { getPresignedGetUrl } from "@/server/file-uploads"; diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/[dataRoomPublicId]/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/[dataRoomPublicId]/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/[dataRoomPublicId]/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/[dataRoomPublicId]/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-files.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-files.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-files.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-files.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-popover.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-popover.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-popover.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-popover.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-uploader.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-uploader.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-uploader.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-uploader.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/dataroom-folders.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/dataroom-folders.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/dataroom-folders.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/dataroom-folders.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/document-upload-button.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/document-upload-button.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/document-upload-button.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/document-upload-button.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/[templatePublicId]/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/esign/[templatePublicId]/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/[templatePublicId]/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/esign/[templatePublicId]/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/add-esign-doc-button.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/add-esign-doc-button.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/add-esign-doc-button.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/add-esign-doc-button.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/table.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/table.tsx similarity index 97% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/table.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/table.tsx index 966dcd3d8..ea8a07a75 100644 --- a/src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/table.tsx +++ b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/table.tsx @@ -1,4 +1,4 @@ -import { dayjsExt } from "@/common/dayjs"; +import { dayjsExt } from "@/lib/common/dayjs"; import FileIcon from "@/components/common/file-icon"; import { buttonVariants } from "@/components/ui/button"; diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/temp-cancel-btx.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/temp-cancel-btx.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/temp-cancel-btx.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/esign/components/temp-cancel-btx.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/esign/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/esign/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/v/[templatePublicId]/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/esign/v/[templatePublicId]/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/v/[templatePublicId]/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/esign/v/[templatePublicId]/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/share/_page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/share/_page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/share/_page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/share/_page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/share/analytics/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/share/analytics/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/documents/share/analytics/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/share/analytics/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/equity-plans/create-equity-plan-button.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/equity-plans/create-equity-plan-button.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/equity-plans/create-equity-plan-button.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/equity-plans/create-equity-plan-button.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/equity-plans/form.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/equity-plans/form.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/equity-plans/form.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/equity-plans/form.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/equity-plans/modal.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/equity-plans/modal.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/equity-plans/modal.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/equity-plans/modal.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/equity-plans/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/equity-plans/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/equity-plans/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/equity-plans/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/equity-plans/table.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/equity-plans/table.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/equity-plans/table.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/equity-plans/table.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/fundraise/convertible-notes/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/fundraise/convertible-notes/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/fundraise/convertible-notes/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/fundraise/convertible-notes/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/fundraise/investments/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/fundraise/investments/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/fundraise/investments/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/fundraise/investments/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/fundraise/safes/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/fundraise/safes/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/fundraise/safes/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/fundraise/safes/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/layout.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/layout.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/layout.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/layout.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/reports/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/reports/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/reports/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/reports/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/securities/options/issue-stock-option-button.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/securities/options/issue-stock-option-button.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/securities/options/issue-stock-option-button.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/securities/options/issue-stock-option-button.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/securities/options/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/securities/options/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/securities/options/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/securities/options/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/securities/shares/issue-share-button.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/securities/shares/issue-share-button.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/securities/shares/issue-share-button.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/securities/shares/issue-share-button.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/securities/shares/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/securities/shares/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/securities/shares/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/securities/shares/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/securities/transactions/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/securities/transactions/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/securities/transactions/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/securities/transactions/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/components/cta-button.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/components/cta-button.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/components/cta-button.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/components/cta-button.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/components/table.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/components/table.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/components/table.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/components/table.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/billing/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/billing/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/billing/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/billing/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/company/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/company/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/company/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/company/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/create-access-token.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/create-access-token.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/create-access-token.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/create-access-token.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/table.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/table.tsx similarity index 99% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/table.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/table.tsx index efeddc9f4..d18e28d2d 100644 --- a/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/table.tsx +++ b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/table.tsx @@ -1,6 +1,6 @@ "use client"; -import { dayjsExt } from "@/common/dayjs"; +import { dayjsExt } from "@/lib/common/dayjs"; import Tldr from "@/components/common/tldr"; import { Allow } from "@/components/rbac/allow"; import { diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/developer/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/developer/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/layout.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/layout.tsx similarity index 91% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/layout.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/layout.tsx index ca23ac35c..753be4116 100644 --- a/src/app/(authenticated)/(dashboard)/[publicId]/settings/layout.tsx +++ b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/layout.tsx @@ -1,7 +1,7 @@ import { PageLayout } from "@/components/dashboard/page-layout"; import { SettingsSidebar } from "@/components/settings/settings-sidebar"; import { Card } from "@/components/ui/card"; -import { IS_BILLING_ENABLED } from "@/constants/stripe"; +import { IS_BILLING_ENABLED } from "@/lib/constants/stripe"; const SettingsLayout = ({ children }: { children: React.ReactNode }) => { return ( diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/notifications/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/notifications/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/notifications/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/notifications/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/profile/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/profile/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/profile/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/profile/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/roles/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/roles/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/roles/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/roles/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/security/2fa/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/security/2fa/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/security/2fa/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/security/2fa/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/security/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/security/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/security/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/security/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/security/passkey/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/security/passkey/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/security/passkey/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/security/passkey/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/security/password/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/security/password/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/security/password/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/security/password/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/team/add-team-member-dropdown-menu.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/team/add-team-member-dropdown-menu.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/team/add-team-member-dropdown-menu.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/team/add-team-member-dropdown-menu.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/team/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/team/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/settings/team/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/team/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/create-share-class-button.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/share-classes/create-share-class-button.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/share-classes/create-share-class-button.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/share-classes/create-share-class-button.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/edit-share-class-button.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/share-classes/edit-share-class-button.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/share-classes/edit-share-class-button.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/share-classes/edit-share-class-button.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/share-classes/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/share-classes/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/share-classes/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/table.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/share-classes/table.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/share-classes/table.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/share-classes/table.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/stakeholders/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/stakeholders/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/stakeholders/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/stakeholders/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/updates/[updatePublicId]/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/updates/[updatePublicId]/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/updates/[updatePublicId]/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/updates/[updatePublicId]/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/updates/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/updates/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/[publicId]/updates/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/[publicId]/updates/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/company/new/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/company/new/page.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/company/new/page.tsx rename to apps/captable/app/(authenticated)/(dashboard)/company/new/page.tsx diff --git a/src/app/(authenticated)/(dashboard)/layout.tsx b/apps/captable/app/(authenticated)/(dashboard)/layout.tsx similarity index 100% rename from src/app/(authenticated)/(dashboard)/layout.tsx rename to apps/captable/app/(authenticated)/(dashboard)/layout.tsx diff --git a/src/app/(authenticated)/layout.tsx b/apps/captable/app/(authenticated)/layout.tsx similarity index 100% rename from src/app/(authenticated)/layout.tsx rename to apps/captable/app/(authenticated)/layout.tsx diff --git a/src/app/(authenticated)/onboarding/page.tsx b/apps/captable/app/(authenticated)/onboarding/page.tsx similarity index 100% rename from src/app/(authenticated)/onboarding/page.tsx rename to apps/captable/app/(authenticated)/onboarding/page.tsx diff --git a/src/app/(documents)/data-rooms/[publicId]/[bucketId]/page.tsx b/apps/captable/app/(documents)/data-rooms/[publicId]/[bucketId]/page.tsx similarity index 100% rename from src/app/(documents)/data-rooms/[publicId]/[bucketId]/page.tsx rename to apps/captable/app/(documents)/data-rooms/[publicId]/[bucketId]/page.tsx diff --git a/src/app/(documents)/data-rooms/[publicId]/page.tsx b/apps/captable/app/(documents)/data-rooms/[publicId]/page.tsx similarity index 100% rename from src/app/(documents)/data-rooms/[publicId]/page.tsx rename to apps/captable/app/(documents)/data-rooms/[publicId]/page.tsx diff --git a/src/app/(documents)/esign/[token]/page.tsx b/apps/captable/app/(documents)/esign/[token]/page.tsx similarity index 100% rename from src/app/(documents)/esign/[token]/page.tsx rename to apps/captable/app/(documents)/esign/[token]/page.tsx diff --git a/src/app/(unauthenticated)/check-email/page.tsx b/apps/captable/app/(unauthenticated)/check-email/page.tsx similarity index 100% rename from src/app/(unauthenticated)/check-email/page.tsx rename to apps/captable/app/(unauthenticated)/check-email/page.tsx diff --git a/src/app/(unauthenticated)/email-sent/page.tsx b/apps/captable/app/(unauthenticated)/email-sent/page.tsx similarity index 100% rename from src/app/(unauthenticated)/email-sent/page.tsx rename to apps/captable/app/(unauthenticated)/email-sent/page.tsx diff --git a/src/app/(unauthenticated)/forgot-password/page.tsx b/apps/captable/app/(unauthenticated)/forgot-password/page.tsx similarity index 100% rename from src/app/(unauthenticated)/forgot-password/page.tsx rename to apps/captable/app/(unauthenticated)/forgot-password/page.tsx diff --git a/src/app/(unauthenticated)/login/page.tsx b/apps/captable/app/(unauthenticated)/login/page.tsx similarity index 91% rename from src/app/(unauthenticated)/login/page.tsx rename to apps/captable/app/(unauthenticated)/login/page.tsx index 89c70fb8e..19eabf001 100644 --- a/src/app/(unauthenticated)/login/page.tsx +++ b/apps/captable/app/(unauthenticated)/login/page.tsx @@ -1,5 +1,5 @@ import SignInForm from "@/components/onboarding/signin"; -import { IS_GOOGLE_AUTH_ENABLED } from "@/constants/auth"; +import { IS_GOOGLE_AUTH_ENABLED } from "@/lib/constants/auth"; import { getServerComponentAuthSession } from "@/server/auth"; import type { Metadata } from "next"; import { redirect } from "next/navigation"; diff --git a/src/app/(unauthenticated)/new/components/LoginWithGoogle.tsx b/apps/captable/app/(unauthenticated)/new/components/LoginWithGoogle.tsx similarity index 100% rename from src/app/(unauthenticated)/new/components/LoginWithGoogle.tsx rename to apps/captable/app/(unauthenticated)/new/components/LoginWithGoogle.tsx diff --git a/src/app/(unauthenticated)/new/page.tsx b/apps/captable/app/(unauthenticated)/new/page.tsx similarity index 100% rename from src/app/(unauthenticated)/new/page.tsx rename to apps/captable/app/(unauthenticated)/new/page.tsx diff --git a/src/app/(unauthenticated)/password-updated/page.tsx b/apps/captable/app/(unauthenticated)/password-updated/page.tsx similarity index 100% rename from src/app/(unauthenticated)/password-updated/page.tsx rename to apps/captable/app/(unauthenticated)/password-updated/page.tsx diff --git a/src/app/(unauthenticated)/reset-password/[token]/page.tsx b/apps/captable/app/(unauthenticated)/reset-password/[token]/page.tsx similarity index 100% rename from src/app/(unauthenticated)/reset-password/[token]/page.tsx rename to apps/captable/app/(unauthenticated)/reset-password/[token]/page.tsx diff --git a/src/app/(unauthenticated)/reset-password/page.tsx b/apps/captable/app/(unauthenticated)/reset-password/page.tsx similarity index 100% rename from src/app/(unauthenticated)/reset-password/page.tsx rename to apps/captable/app/(unauthenticated)/reset-password/page.tsx diff --git a/src/app/(unauthenticated)/set-password/[token]/page.tsx b/apps/captable/app/(unauthenticated)/set-password/[token]/page.tsx similarity index 100% rename from src/app/(unauthenticated)/set-password/[token]/page.tsx rename to apps/captable/app/(unauthenticated)/set-password/[token]/page.tsx diff --git a/src/app/(unauthenticated)/set-password/page.tsx b/apps/captable/app/(unauthenticated)/set-password/page.tsx similarity index 100% rename from src/app/(unauthenticated)/set-password/page.tsx rename to apps/captable/app/(unauthenticated)/set-password/page.tsx diff --git a/src/app/(unauthenticated)/signup/page.tsx b/apps/captable/app/(unauthenticated)/signup/page.tsx similarity index 91% rename from src/app/(unauthenticated)/signup/page.tsx rename to apps/captable/app/(unauthenticated)/signup/page.tsx index 572ea9c7b..d83ee23ed 100644 --- a/src/app/(unauthenticated)/signup/page.tsx +++ b/apps/captable/app/(unauthenticated)/signup/page.tsx @@ -1,5 +1,5 @@ import SignUpForm from "@/components/onboarding/signup"; -import { IS_GOOGLE_AUTH_ENABLED } from "@/constants/auth"; +import { IS_GOOGLE_AUTH_ENABLED } from "@/lib/constants/auth"; import { getServerComponentAuthSession } from "@/server/auth"; import type { Metadata } from "next"; import { redirect } from "next/navigation"; diff --git a/src/app/(unauthenticated)/verify-email/[token]/page.tsx b/apps/captable/app/(unauthenticated)/verify-email/[token]/page.tsx similarity index 100% rename from src/app/(unauthenticated)/verify-email/[token]/page.tsx rename to apps/captable/app/(unauthenticated)/verify-email/[token]/page.tsx diff --git a/src/app/(unauthenticated)/verify-email/page.tsx b/apps/captable/app/(unauthenticated)/verify-email/page.tsx similarity index 100% rename from src/app/(unauthenticated)/verify-email/page.tsx rename to apps/captable/app/(unauthenticated)/verify-email/page.tsx diff --git a/src/app/updates/[publicId]/page.tsx b/apps/captable/app/[publicId]/page.tsx similarity index 98% rename from src/app/updates/[publicId]/page.tsx rename to apps/captable/app/[publicId]/page.tsx index 61a8e9f06..92e9f14e7 100644 --- a/src/app/updates/[publicId]/page.tsx +++ b/apps/captable/app/[publicId]/page.tsx @@ -1,6 +1,6 @@ "use server"; -import { dayjsExt } from "@/common/dayjs"; +import { dayjsExt } from "@/lib/common/dayjs"; import { SharePageLayout } from "@/components/share/page-layout"; import { Avatar, AvatarImage } from "@/components/ui/avatar"; import UpdateRenderer from "@/components/update/renderer"; diff --git a/src/app/api/(internal)/apiKeys/route.ts b/apps/captable/app/api/(internal)/apiKeys/route.ts similarity index 100% rename from src/app/api/(internal)/apiKeys/route.ts rename to apps/captable/app/api/(internal)/apiKeys/route.ts diff --git a/src/app/api/auth/[...nextauth]/route.ts b/apps/captable/app/api/auth/[...nextauth]/route.ts similarity index 100% rename from src/app/api/auth/[...nextauth]/route.ts rename to apps/captable/app/api/auth/[...nextauth]/route.ts diff --git a/src/app/api/stripe/webhook/route.ts b/apps/captable/app/api/stripe/webhook/route.ts similarity index 100% rename from src/app/api/stripe/webhook/route.ts rename to apps/captable/app/api/stripe/webhook/route.ts diff --git a/src/app/api/trpc/[trpc]/route.ts b/apps/captable/app/api/trpc/[trpc]/route.ts similarity index 100% rename from src/app/api/trpc/[trpc]/route.ts rename to apps/captable/app/api/trpc/[trpc]/route.ts diff --git a/src/app/api/v1/[[...route]]/route.ts b/apps/captable/app/api/v1/[[...route]]/route.ts similarity index 100% rename from src/app/api/v1/[[...route]]/route.ts rename to apps/captable/app/api/v1/[[...route]]/route.ts diff --git a/src/app/api/v1/docs/route.ts b/apps/captable/app/api/v1/docs/route.ts similarity index 100% rename from src/app/api/v1/docs/route.ts rename to apps/captable/app/api/v1/docs/route.ts diff --git a/apps/captable/app/favicon.ico b/apps/captable/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/src/app/global-error.tsx b/apps/captable/app/global-error.tsx similarity index 100% rename from src/app/global-error.tsx rename to apps/captable/app/global-error.tsx diff --git a/apps/captable/app/layout.tsx b/apps/captable/app/layout.tsx new file mode 100644 index 000000000..29bcccd0d --- /dev/null +++ b/apps/captable/app/layout.tsx @@ -0,0 +1,75 @@ +import type { Metadata } from "next"; +import "@/styles/globals.css"; +import { cn } from "@/lib/utils"; +import { robotoMono, satoshi } from "@/styles/fonts"; +import { NextAuthProvider } from "@/providers/next-auth"; +import { ProgressBarProvider } from "@/providers/progress-bar"; +import { ThemeProvider } from "@/providers/theme-provider"; +import { PublicEnvScript } from "@/components/public-env-script"; +import { ThemeToggle } from "@/components/theme-toggle"; +import { Toaster } from "sonner"; +import logo from "@/assets/logo.svg"; +import { META } from "@/lib/constants/meta"; +import ScreenSize from "@/components/screen-size"; + +export const metadata: Metadata = { + title: { + default: META.title, + template: `%s | ${META.title}`, + }, + + description: META.description, + icons: [ + { + rel: "icon", + url: logo.src, + }, + ], + + openGraph: { + title: META.title, + description: META.description, + images: [logo.src], + }, + + twitter: { + card: "summary_large_image", + title: META.title, + description: META.description, + images: [logo.src], + }, + + metadataBase: new URL(META.url), +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + const isDev = process.env.NODE_ENV === "development"; + + return ( + + + + + + +
+
+ +
+ {children} + + {isDev && } +
+
+ + + ); +} diff --git a/src/app/not-found.tsx b/apps/captable/app/not-found.tsx similarity index 100% rename from src/app/not-found.tsx rename to apps/captable/app/not-found.tsx diff --git a/src/app/page.tsx b/apps/captable/app/page.tsx similarity index 100% rename from src/app/page.tsx rename to apps/captable/app/page.tsx diff --git a/src/app/verify-member/[token]/page.tsx b/apps/captable/app/verify-member/[token]/page.tsx similarity index 100% rename from src/app/verify-member/[token]/page.tsx rename to apps/captable/app/verify-member/[token]/page.tsx diff --git a/src/assets/logo.svg b/apps/captable/assets/logo.svg similarity index 100% rename from src/assets/logo.svg rename to apps/captable/assets/logo.svg diff --git a/apps/captable/biome.json b/apps/captable/biome.json new file mode 100644 index 000000000..c1d37ae9d --- /dev/null +++ b/apps/captable/biome.json @@ -0,0 +1,3 @@ +{ + "extends": ["../../packages/config/biome.json"] +} diff --git a/components.json b/apps/captable/components.json similarity index 89% rename from components.json rename to apps/captable/components.json index 1e8d33a05..e3c2bcf91 100644 --- a/components.json +++ b/apps/captable/components.json @@ -5,7 +5,7 @@ "tsx": true, "tailwind": { "config": "tailwind.config.ts", - "css": "src/styles/globals.css", + "css": "styles/globals.css", "baseColor": "zinc", "cssVariables": true, "prefix": "" diff --git a/src/components/audit/audit-table/audit-table-toolbar.tsx b/apps/captable/components/audit/audit-table/audit-table-toolbar.tsx similarity index 100% rename from src/components/audit/audit-table/audit-table-toolbar.tsx rename to apps/captable/components/audit/audit-table/audit-table-toolbar.tsx diff --git a/src/components/audit/audit-table/index.tsx b/apps/captable/components/audit/audit-table/index.tsx similarity index 98% rename from src/components/audit/audit-table/index.tsx rename to apps/captable/components/audit/audit-table/index.tsx index 87e26a9d4..0d2e54c43 100644 --- a/src/components/audit/audit-table/index.tsx +++ b/apps/captable/components/audit/audit-table/index.tsx @@ -20,7 +20,7 @@ import { Checkbox } from "@/components/ui/checkbox"; import { type RouterOutputs } from "@/trpc/shared"; -import { dayjsExt } from "@/common/dayjs"; +import { dayjsExt } from "@/lib/common/dayjs"; import { Badge } from "@/components/ui/badge"; import { DataTable } from "@/components/ui/data-table/data-table"; import { DataTableBody } from "@/components/ui/data-table/data-table-body"; diff --git a/src/components/billing/plan-details/index.tsx b/apps/captable/components/billing/plan-details/index.tsx similarity index 97% rename from src/components/billing/plan-details/index.tsx rename to apps/captable/components/billing/plan-details/index.tsx index 1a3c790bb..f794380fb 100644 --- a/src/components/billing/plan-details/index.tsx +++ b/apps/captable/components/billing/plan-details/index.tsx @@ -1,4 +1,4 @@ -import { dayjsExt } from "@/common/dayjs"; +import { dayjsExt } from "@/lib/common/dayjs"; import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { badgeVariants } from "@/components/ui/badge"; import { buttonVariants } from "@/components/ui/button"; diff --git a/src/components/billing/pricing-modal/empty-plans.tsx b/apps/captable/components/billing/pricing-modal/empty-plans.tsx similarity index 100% rename from src/components/billing/pricing-modal/empty-plans.tsx rename to apps/captable/components/billing/pricing-modal/empty-plans.tsx diff --git a/src/components/billing/pricing-modal/index.tsx b/apps/captable/components/billing/pricing-modal/index.tsx similarity index 99% rename from src/components/billing/pricing-modal/index.tsx rename to apps/captable/components/billing/pricing-modal/index.tsx index ccb2a1fd4..8f4aacaf3 100644 --- a/src/components/billing/pricing-modal/index.tsx +++ b/apps/captable/components/billing/pricing-modal/index.tsx @@ -1,6 +1,6 @@ "use client"; -import { getStripeClient } from "@/client-only/stripe"; +import { getStripeClient } from "@/lib/client-only/stripe"; import { Dialog, diff --git a/src/components/billing/pricing-modal/pricing-button.tsx b/apps/captable/components/billing/pricing-modal/pricing-button.tsx similarity index 100% rename from src/components/billing/pricing-modal/pricing-button.tsx rename to apps/captable/components/billing/pricing-modal/pricing-button.tsx diff --git a/src/components/billing/pricing-modal/pricing-card.tsx b/apps/captable/components/billing/pricing-modal/pricing-card.tsx similarity index 100% rename from src/components/billing/pricing-modal/pricing-card.tsx rename to apps/captable/components/billing/pricing-modal/pricing-card.tsx diff --git a/src/components/common/LoadingSpinner.tsx b/apps/captable/components/common/LoadingSpinner.tsx similarity index 100% rename from src/components/common/LoadingSpinner.tsx rename to apps/captable/components/common/LoadingSpinner.tsx diff --git a/src/components/common/confirmDialog.tsx b/apps/captable/components/common/confirmDialog.tsx similarity index 100% rename from src/components/common/confirmDialog.tsx rename to apps/captable/components/common/confirmDialog.tsx diff --git a/src/components/common/empty-state.tsx b/apps/captable/components/common/empty-state.tsx similarity index 100% rename from src/components/common/empty-state.tsx rename to apps/captable/components/common/empty-state.tsx diff --git a/src/components/common/file-icon.tsx b/apps/captable/components/common/file-icon.tsx similarity index 100% rename from src/components/common/file-icon.tsx rename to apps/captable/components/common/file-icon.tsx diff --git a/src/components/common/icons.tsx b/apps/captable/components/common/icons.tsx similarity index 100% rename from src/components/common/icons.tsx rename to apps/captable/components/common/icons.tsx diff --git a/src/components/common/loading.tsx b/apps/captable/components/common/loading.tsx similarity index 100% rename from src/components/common/loading.tsx rename to apps/captable/components/common/loading.tsx diff --git a/src/components/common/logo.tsx b/apps/captable/components/common/logo.tsx similarity index 81% rename from src/components/common/logo.tsx rename to apps/captable/components/common/logo.tsx index f9b23a727..891641b6a 100644 --- a/src/components/common/logo.tsx +++ b/apps/captable/components/common/logo.tsx @@ -5,13 +5,15 @@ export const CaptableLogo = ({ className }: { className?: string }) => { - - + Captable Logo + + diff --git a/src/components/common/modal.tsx b/apps/captable/components/common/modal.tsx similarity index 100% rename from src/components/common/modal.tsx rename to apps/captable/components/common/modal.tsx diff --git a/src/components/common/push-modal.tsx b/apps/captable/components/common/push-modal.tsx similarity index 100% rename from src/components/common/push-modal.tsx rename to apps/captable/components/common/push-modal.tsx diff --git a/src/components/common/share-modal.tsx b/apps/captable/components/common/share-modal.tsx similarity index 100% rename from src/components/common/share-modal.tsx rename to apps/captable/components/common/share-modal.tsx diff --git a/src/components/common/slide-over.tsx b/apps/captable/components/common/slide-over.tsx similarity index 100% rename from src/components/common/slide-over.tsx rename to apps/captable/components/common/slide-over.tsx diff --git a/src/components/common/tldr.tsx b/apps/captable/components/common/tldr.tsx similarity index 100% rename from src/components/common/tldr.tsx rename to apps/captable/components/common/tldr.tsx diff --git a/src/components/dashboard/navbar/command-menu.tsx b/apps/captable/components/dashboard/navbar/command-menu.tsx similarity index 100% rename from src/components/dashboard/navbar/command-menu.tsx rename to apps/captable/components/dashboard/navbar/command-menu.tsx diff --git a/src/components/dashboard/navbar/index.tsx b/apps/captable/components/dashboard/navbar/index.tsx similarity index 100% rename from src/components/dashboard/navbar/index.tsx rename to apps/captable/components/dashboard/navbar/index.tsx diff --git a/src/components/dashboard/navbar/mobile-drawer.tsx b/apps/captable/components/dashboard/navbar/mobile-drawer.tsx similarity index 100% rename from src/components/dashboard/navbar/mobile-drawer.tsx rename to apps/captable/components/dashboard/navbar/mobile-drawer.tsx diff --git a/src/components/dashboard/navbar/user-dropdown.tsx b/apps/captable/components/dashboard/navbar/user-dropdown.tsx similarity index 100% rename from src/components/dashboard/navbar/user-dropdown.tsx rename to apps/captable/components/dashboard/navbar/user-dropdown.tsx diff --git a/src/components/dashboard/overview/activities-card.tsx b/apps/captable/components/dashboard/overview/activities-card.tsx similarity index 98% rename from src/components/dashboard/overview/activities-card.tsx rename to apps/captable/components/dashboard/overview/activities-card.tsx index b9dd3b1f3..65ac674ed 100644 --- a/src/components/dashboard/overview/activities-card.tsx +++ b/apps/captable/components/dashboard/overview/activities-card.tsx @@ -1,4 +1,4 @@ -import { dayjsExt } from "@/common/dayjs"; +import { dayjsExt } from "@/lib/common/dayjs"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { Card, diff --git a/src/components/dashboard/overview/donut-card.tsx b/apps/captable/components/dashboard/overview/donut-card.tsx similarity index 100% rename from src/components/dashboard/overview/donut-card.tsx rename to apps/captable/components/dashboard/overview/donut-card.tsx diff --git a/src/components/dashboard/overview/donut-selector.tsx b/apps/captable/components/dashboard/overview/donut-selector.tsx similarity index 100% rename from src/components/dashboard/overview/donut-selector.tsx rename to apps/captable/components/dashboard/overview/donut-selector.tsx diff --git a/src/components/dashboard/overview/empty.tsx b/apps/captable/components/dashboard/overview/empty.tsx similarity index 100% rename from src/components/dashboard/overview/empty.tsx rename to apps/captable/components/dashboard/overview/empty.tsx diff --git a/src/components/dashboard/overview/summary-table.tsx b/apps/captable/components/dashboard/overview/summary-table.tsx similarity index 100% rename from src/components/dashboard/overview/summary-table.tsx rename to apps/captable/components/dashboard/overview/summary-table.tsx diff --git a/src/components/dashboard/overview/top-card.tsx b/apps/captable/components/dashboard/overview/top-card.tsx similarity index 100% rename from src/components/dashboard/overview/top-card.tsx rename to apps/captable/components/dashboard/overview/top-card.tsx diff --git a/src/components/dashboard/page-layout/index.tsx b/apps/captable/components/dashboard/page-layout/index.tsx similarity index 100% rename from src/components/dashboard/page-layout/index.tsx rename to apps/captable/components/dashboard/page-layout/index.tsx diff --git a/src/components/dashboard/sidebar/company-switcher.tsx b/apps/captable/components/dashboard/sidebar/company-switcher.tsx similarity index 100% rename from src/components/dashboard/sidebar/company-switcher.tsx rename to apps/captable/components/dashboard/sidebar/company-switcher.tsx diff --git a/src/components/dashboard/sidebar/index.tsx b/apps/captable/components/dashboard/sidebar/index.tsx similarity index 100% rename from src/components/dashboard/sidebar/index.tsx rename to apps/captable/components/dashboard/sidebar/index.tsx diff --git a/src/components/dashboard/sidebar/nav-link.tsx b/apps/captable/components/dashboard/sidebar/nav-link.tsx similarity index 100% rename from src/components/dashboard/sidebar/nav-link.tsx rename to apps/captable/components/dashboard/sidebar/nav-link.tsx diff --git a/src/components/documents/data-room/explorer.tsx b/apps/captable/components/documents/data-room/explorer.tsx similarity index 100% rename from src/components/documents/data-room/explorer.tsx rename to apps/captable/components/documents/data-room/explorer.tsx diff --git a/src/components/esign/optional-message-modal.tsx b/apps/captable/components/esign/optional-message-modal.tsx similarity index 100% rename from src/components/esign/optional-message-modal.tsx rename to apps/captable/components/esign/optional-message-modal.tsx diff --git a/src/components/file/office-viewer.tsx b/apps/captable/components/file/office-viewer.tsx similarity index 100% rename from src/components/file/office-viewer.tsx rename to apps/captable/components/file/office-viewer.tsx diff --git a/src/components/file/preview.tsx b/apps/captable/components/file/preview.tsx similarity index 100% rename from src/components/file/preview.tsx rename to apps/captable/components/file/preview.tsx diff --git a/src/components/member/data.ts b/apps/captable/components/member/data.ts similarity index 100% rename from src/components/member/data.ts rename to apps/captable/components/member/data.ts diff --git a/src/components/member/member-bulk-import-modal.tsx b/apps/captable/components/member/member-bulk-import-modal.tsx similarity index 100% rename from src/components/member/member-bulk-import-modal.tsx rename to apps/captable/components/member/member-bulk-import-modal.tsx diff --git a/src/components/member/member-profile.tsx b/apps/captable/components/member/member-profile.tsx similarity index 99% rename from src/components/member/member-profile.tsx rename to apps/captable/components/member/member-profile.tsx index 59e04c679..da228f8df 100644 --- a/src/components/member/member-profile.tsx +++ b/apps/captable/components/member/member-profile.tsx @@ -1,7 +1,7 @@ /* eslint-disable @next/next/no-img-element */ "use client"; -import { uploadFile } from "@/common/uploads"; +import { uploadFile } from "@/lib/common/uploads"; import Loading from "@/components/common/loading"; import { Avatar, AvatarImage } from "@/components/ui/avatar"; import { Button } from "@/components/ui/button"; diff --git a/src/components/member/member-table-toolbar.tsx b/apps/captable/components/member/member-table-toolbar.tsx similarity index 100% rename from src/components/member/member-table-toolbar.tsx rename to apps/captable/components/member/member-table-toolbar.tsx diff --git a/src/components/member/member-table.tsx b/apps/captable/components/member/member-table.tsx similarity index 100% rename from src/components/member/member-table.tsx rename to apps/captable/components/member/member-table.tsx diff --git a/src/components/member/member-uploader.tsx b/apps/captable/components/member/member-uploader.tsx similarity index 100% rename from src/components/member/member-uploader.tsx rename to apps/captable/components/member/member-uploader.tsx diff --git a/src/components/member/verify-member-form.tsx b/apps/captable/components/member/verify-member-form.tsx similarity index 100% rename from src/components/member/verify-member-form.tsx rename to apps/captable/components/member/verify-member-form.tsx diff --git a/src/components/modals/bank-account-modal.tsx b/apps/captable/components/modals/bank-account-modal.tsx similarity index 100% rename from src/components/modals/bank-account-modal.tsx rename to apps/captable/components/modals/bank-account-modal.tsx diff --git a/src/components/modals/document-upload-modal.tsx b/apps/captable/components/modals/document-upload-modal.tsx similarity index 100% rename from src/components/modals/document-upload-modal.tsx rename to apps/captable/components/modals/document-upload-modal.tsx diff --git a/src/components/modals/equity-pan/equity-plan-form.tsx b/apps/captable/components/modals/equity-pan/equity-plan-form.tsx similarity index 100% rename from src/components/modals/equity-pan/equity-plan-form.tsx rename to apps/captable/components/modals/equity-pan/equity-plan-form.tsx diff --git a/src/components/modals/equity-pan/equity-plan-modal.tsx b/apps/captable/components/modals/equity-pan/equity-plan-modal.tsx similarity index 100% rename from src/components/modals/equity-pan/equity-plan-modal.tsx rename to apps/captable/components/modals/equity-pan/equity-plan-modal.tsx diff --git a/src/components/modals/esign-doc/index.tsx b/apps/captable/components/modals/esign-doc/index.tsx similarity index 100% rename from src/components/modals/esign-doc/index.tsx rename to apps/captable/components/modals/esign-doc/index.tsx diff --git a/src/components/modals/esign-doc/steps/add-recepients-step.tsx b/apps/captable/components/modals/esign-doc/steps/add-recepients-step.tsx similarity index 99% rename from src/components/modals/esign-doc/steps/add-recepients-step.tsx rename to apps/captable/components/modals/esign-doc/steps/add-recepients-step.tsx index 1599cdf97..02c3e6718 100644 --- a/src/components/modals/esign-doc/steps/add-recepients-step.tsx +++ b/apps/captable/components/modals/esign-doc/steps/add-recepients-step.tsx @@ -1,4 +1,4 @@ -import { uploadFile } from "@/common/uploads"; +import { uploadFile } from "@/lib/common/uploads"; import { popModal } from "@/components/modals"; import { Button } from "@/components/ui/button"; import { Checkbox } from "@/components/ui/checkbox"; diff --git a/src/components/modals/esign-doc/steps/upload-document-step.tsx b/apps/captable/components/modals/esign-doc/steps/upload-document-step.tsx similarity index 100% rename from src/components/modals/esign-doc/steps/upload-document-step.tsx rename to apps/captable/components/modals/esign-doc/steps/upload-document-step.tsx diff --git a/src/components/modals/existing-safe-modal.tsx b/apps/captable/components/modals/existing-safe-modal.tsx similarity index 100% rename from src/components/modals/existing-safe-modal.tsx rename to apps/captable/components/modals/existing-safe-modal.tsx diff --git a/src/components/modals/index.ts b/apps/captable/components/modals/index.ts similarity index 100% rename from src/components/modals/index.ts rename to apps/captable/components/modals/index.ts diff --git a/src/components/modals/investor/add-investor-form.tsx b/apps/captable/components/modals/investor/add-investor-form.tsx similarity index 100% rename from src/components/modals/investor/add-investor-form.tsx rename to apps/captable/components/modals/investor/add-investor-form.tsx diff --git a/src/components/modals/investor/add-investor-modal.tsx b/apps/captable/components/modals/investor/add-investor-modal.tsx similarity index 100% rename from src/components/modals/investor/add-investor-modal.tsx rename to apps/captable/components/modals/investor/add-investor-modal.tsx diff --git a/src/components/modals/issue-share-modal.tsx b/apps/captable/components/modals/issue-share-modal.tsx similarity index 100% rename from src/components/modals/issue-share-modal.tsx rename to apps/captable/components/modals/issue-share-modal.tsx diff --git a/src/components/modals/issue-stock-option-modal.tsx b/apps/captable/components/modals/issue-stock-option-modal.tsx similarity index 100% rename from src/components/modals/issue-stock-option-modal.tsx rename to apps/captable/components/modals/issue-stock-option-modal.tsx diff --git a/src/components/modals/new-safe-modal.tsx b/apps/captable/components/modals/new-safe-modal.tsx similarity index 100% rename from src/components/modals/new-safe-modal.tsx rename to apps/captable/components/modals/new-safe-modal.tsx diff --git a/src/components/modals/role-create-update-modal.tsx b/apps/captable/components/modals/role-create-update-modal.tsx similarity index 100% rename from src/components/modals/role-create-update-modal.tsx rename to apps/captable/components/modals/role-create-update-modal.tsx diff --git a/src/components/modals/share-class/share-class-form.tsx b/apps/captable/components/modals/share-class/share-class-form.tsx similarity index 100% rename from src/components/modals/share-class/share-class-form.tsx rename to apps/captable/components/modals/share-class/share-class-form.tsx diff --git a/src/components/modals/share-class/share-class-modal.tsx b/apps/captable/components/modals/share-class/share-class-modal.tsx similarity index 100% rename from src/components/modals/share-class/share-class-modal.tsx rename to apps/captable/components/modals/share-class/share-class-modal.tsx diff --git a/src/components/modals/share-dataroom-modal.tsx b/apps/captable/components/modals/share-dataroom-modal.tsx similarity index 100% rename from src/components/modals/share-dataroom-modal.tsx rename to apps/captable/components/modals/share-dataroom-modal.tsx diff --git a/src/components/modals/share-update-modal.tsx b/apps/captable/components/modals/share-update-modal.tsx similarity index 100% rename from src/components/modals/share-update-modal.tsx rename to apps/captable/components/modals/share-update-modal.tsx diff --git a/src/components/modals/stakeholder/multiple-stakeholders-modal.tsx b/apps/captable/components/modals/stakeholder/multiple-stakeholders-modal.tsx similarity index 100% rename from src/components/modals/stakeholder/multiple-stakeholders-modal.tsx rename to apps/captable/components/modals/stakeholder/multiple-stakeholders-modal.tsx diff --git a/src/components/modals/stakeholder/single-stake-holder-form.tsx b/apps/captable/components/modals/stakeholder/single-stake-holder-form.tsx similarity index 100% rename from src/components/modals/stakeholder/single-stake-holder-form.tsx rename to apps/captable/components/modals/stakeholder/single-stake-holder-form.tsx diff --git a/src/components/modals/stakeholder/single-stake-holder-modal.tsx b/apps/captable/components/modals/stakeholder/single-stake-holder-modal.tsx similarity index 100% rename from src/components/modals/stakeholder/single-stake-holder-modal.tsx rename to apps/captable/components/modals/stakeholder/single-stake-holder-modal.tsx diff --git a/src/components/modals/stakeholder/update-stakeholder-modal.tsx b/apps/captable/components/modals/stakeholder/update-stakeholder-modal.tsx similarity index 100% rename from src/components/modals/stakeholder/update-stakeholder-modal.tsx rename to apps/captable/components/modals/stakeholder/update-stakeholder-modal.tsx diff --git a/src/components/modals/team-member/team-member-modal.tsx b/apps/captable/components/modals/team-member/team-member-modal.tsx similarity index 100% rename from src/components/modals/team-member/team-member-modal.tsx rename to apps/captable/components/modals/team-member/team-member-modal.tsx diff --git a/src/components/modals/wip-modal.tsx b/apps/captable/components/modals/wip-modal.tsx similarity index 100% rename from src/components/modals/wip-modal.tsx rename to apps/captable/components/modals/wip-modal.tsx diff --git a/apps/captable/components/onboarding/auth-form-header.tsx b/apps/captable/components/onboarding/auth-form-header.tsx new file mode 100644 index 000000000..2415e78d5 --- /dev/null +++ b/apps/captable/components/onboarding/auth-form-header.tsx @@ -0,0 +1,21 @@ +import { CaptableLogo } from "@/components/common/logo"; + +interface LoginFormHeaderProps { + page?: string; +} + +export function AuthFormHeader({ page }: LoginFormHeaderProps) { + return ( +
+
+ +
+ +

+ {page === "signup" + ? "Signup to Captable, Inc." + : "Login to Captable, Inc."} +

+
+ ); +} diff --git a/src/components/onboarding/check-email/index.tsx b/apps/captable/components/onboarding/check-email/index.tsx similarity index 100% rename from src/components/onboarding/check-email/index.tsx rename to apps/captable/components/onboarding/check-email/index.tsx diff --git a/src/components/onboarding/company-form.tsx b/apps/captable/components/onboarding/company-form.tsx similarity index 99% rename from src/components/onboarding/company-form.tsx rename to apps/captable/components/onboarding/company-form.tsx index aa4f14796..dc0bc0c5e 100644 --- a/src/components/onboarding/company-form.tsx +++ b/apps/captable/components/onboarding/company-form.tsx @@ -25,8 +25,8 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { RiArrowRightLine } from "@remixicon/react"; import { useForm } from "react-hook-form"; -import { dayjsExt } from "@/common/dayjs"; -import { uploadFile } from "@/common/uploads"; +import { dayjsExt } from "@/lib/common/dayjs"; +import { uploadFile } from "@/lib/common/uploads"; import { Avatar, AvatarImage } from "@/components/ui/avatar"; import countries from "@/lib/countries"; import { cn, isFileExists, validateFile } from "@/lib/utils"; diff --git a/src/components/onboarding/email-sent/index.tsx b/apps/captable/components/onboarding/email-sent/index.tsx similarity index 100% rename from src/components/onboarding/email-sent/index.tsx rename to apps/captable/components/onboarding/email-sent/index.tsx diff --git a/src/components/onboarding/forgot-password/index.tsx b/apps/captable/components/onboarding/forgot-password/index.tsx similarity index 100% rename from src/components/onboarding/forgot-password/index.tsx rename to apps/captable/components/onboarding/forgot-password/index.tsx diff --git a/src/components/onboarding/reset-password/index.tsx b/apps/captable/components/onboarding/reset-password/index.tsx similarity index 100% rename from src/components/onboarding/reset-password/index.tsx rename to apps/captable/components/onboarding/reset-password/index.tsx diff --git a/src/components/onboarding/set-password/index.tsx b/apps/captable/components/onboarding/set-password/index.tsx similarity index 100% rename from src/components/onboarding/set-password/index.tsx rename to apps/captable/components/onboarding/set-password/index.tsx diff --git a/src/components/onboarding/signin/index.tsx b/apps/captable/components/onboarding/signin/index.tsx similarity index 100% rename from src/components/onboarding/signin/index.tsx rename to apps/captable/components/onboarding/signin/index.tsx diff --git a/src/components/onboarding/signup/index.tsx b/apps/captable/components/onboarding/signup/index.tsx similarity index 100% rename from src/components/onboarding/signup/index.tsx rename to apps/captable/components/onboarding/signup/index.tsx diff --git a/src/components/onboarding/verify-email/index.tsx b/apps/captable/components/onboarding/verify-email/index.tsx similarity index 100% rename from src/components/onboarding/verify-email/index.tsx rename to apps/captable/components/onboarding/verify-email/index.tsx diff --git a/src/components/public-env-script.tsx b/apps/captable/components/public-env-script.tsx similarity index 100% rename from src/components/public-env-script.tsx rename to apps/captable/components/public-env-script.tsx diff --git a/src/components/rbac/allow.tsx b/apps/captable/components/rbac/allow.tsx similarity index 100% rename from src/components/rbac/allow.tsx rename to apps/captable/components/rbac/allow.tsx diff --git a/src/components/rbac/role-table.tsx b/apps/captable/components/rbac/role-table.tsx similarity index 100% rename from src/components/rbac/role-table.tsx rename to apps/captable/components/rbac/role-table.tsx diff --git a/src/components/safe/existing-safe-modal.tsx b/apps/captable/components/safe/existing-safe-modal.tsx similarity index 100% rename from src/components/safe/existing-safe-modal.tsx rename to apps/captable/components/safe/existing-safe-modal.tsx diff --git a/src/components/safe/new-safe-modal.tsx b/apps/captable/components/safe/new-safe-modal.tsx similarity index 100% rename from src/components/safe/new-safe-modal.tsx rename to apps/captable/components/safe/new-safe-modal.tsx diff --git a/src/components/safe/safe-actions.tsx b/apps/captable/components/safe/safe-actions.tsx similarity index 100% rename from src/components/safe/safe-actions.tsx rename to apps/captable/components/safe/safe-actions.tsx diff --git a/src/components/safe/safe-table/data.tsx b/apps/captable/components/safe/safe-table/data.tsx similarity index 100% rename from src/components/safe/safe-table/data.tsx rename to apps/captable/components/safe/safe-table/data.tsx diff --git a/src/components/safe/safe-table/index.tsx b/apps/captable/components/safe/safe-table/index.tsx similarity index 100% rename from src/components/safe/safe-table/index.tsx rename to apps/captable/components/safe/safe-table/index.tsx diff --git a/src/components/safe/safe-table/safe-table-toolbar.tsx b/apps/captable/components/safe/safe-table/safe-table-toolbar.tsx similarity index 100% rename from src/components/safe/safe-table/safe-table-toolbar.tsx rename to apps/captable/components/safe/safe-table/safe-table-toolbar.tsx diff --git a/src/components/safe/steps/general-details.tsx b/apps/captable/components/safe/steps/general-details.tsx similarity index 100% rename from src/components/safe/steps/general-details.tsx rename to apps/captable/components/safe/steps/general-details.tsx diff --git a/src/components/safe/steps/investor-details/form.tsx b/apps/captable/components/safe/steps/investor-details/form.tsx similarity index 100% rename from src/components/safe/steps/investor-details/form.tsx rename to apps/captable/components/safe/steps/investor-details/form.tsx diff --git a/src/components/safe/steps/investor-details/index.tsx b/apps/captable/components/safe/steps/investor-details/index.tsx similarity index 100% rename from src/components/safe/steps/investor-details/index.tsx rename to apps/captable/components/safe/steps/investor-details/index.tsx diff --git a/src/components/safe/steps/safe-documents.tsx b/apps/captable/components/safe/steps/safe-documents.tsx similarity index 98% rename from src/components/safe/steps/safe-documents.tsx rename to apps/captable/components/safe/steps/safe-documents.tsx index b80e9a712..cf1e34911 100644 --- a/src/components/safe/steps/safe-documents.tsx +++ b/apps/captable/components/safe/steps/safe-documents.tsx @@ -9,7 +9,7 @@ import { useFormValueState } from "@/providers/form-value-provider"; import { useState } from "react"; import type { FileWithPath } from "react-dropzone"; -import { uploadFile } from "@/common/uploads"; +import { uploadFile } from "@/lib/common/uploads"; import { invariant } from "@/lib/error"; import { TAG } from "@/lib/tags"; import { api } from "@/trpc/react"; diff --git a/src/components/safe/steps/safe-template.tsx b/apps/captable/components/safe/steps/safe-template.tsx similarity index 99% rename from src/components/safe/steps/safe-template.tsx rename to apps/captable/components/safe/steps/safe-template.tsx index 7ad0b1534..551c4b3ae 100644 --- a/src/components/safe/steps/safe-template.tsx +++ b/apps/captable/components/safe/steps/safe-template.tsx @@ -34,7 +34,7 @@ import { } from "react-hook-form"; import { z } from "zod"; -import { uploadFile } from "@/common/uploads"; +import { uploadFile } from "@/lib/common/uploads"; import { Checkbox } from "@/components/ui/checkbox"; import { LinearCombobox } from "@/components/ui/combobox"; import { Input } from "@/components/ui/input"; diff --git a/src/components/screen-size.tsx b/apps/captable/components/screen-size.tsx similarity index 100% rename from src/components/screen-size.tsx rename to apps/captable/components/screen-size.tsx diff --git a/src/components/securities/options/data.tsx b/apps/captable/components/securities/options/data.tsx similarity index 100% rename from src/components/securities/options/data.tsx rename to apps/captable/components/securities/options/data.tsx diff --git a/src/components/securities/options/option-table-toolbar.tsx b/apps/captable/components/securities/options/option-table-toolbar.tsx similarity index 100% rename from src/components/securities/options/option-table-toolbar.tsx rename to apps/captable/components/securities/options/option-table-toolbar.tsx diff --git a/src/components/securities/options/option-table.tsx b/apps/captable/components/securities/options/option-table.tsx similarity index 100% rename from src/components/securities/options/option-table.tsx rename to apps/captable/components/securities/options/option-table.tsx diff --git a/src/components/securities/options/steps/documents.tsx b/apps/captable/components/securities/options/steps/documents.tsx similarity index 98% rename from src/components/securities/options/steps/documents.tsx rename to apps/captable/components/securities/options/steps/documents.tsx index e27c5ec54..babe1a3a5 100644 --- a/src/components/securities/options/steps/documents.tsx +++ b/apps/captable/components/securities/options/steps/documents.tsx @@ -1,6 +1,6 @@ "use client"; -import { uploadFile } from "@/common/uploads"; +import { uploadFile } from "@/lib/common/uploads"; import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { Button } from "@/components/ui/button"; import { DialogClose } from "@/components/ui/dialog"; diff --git a/src/components/securities/options/steps/general-details.tsx b/apps/captable/components/securities/options/steps/general-details.tsx similarity index 100% rename from src/components/securities/options/steps/general-details.tsx rename to apps/captable/components/securities/options/steps/general-details.tsx diff --git a/src/components/securities/options/steps/relevant-dates.tsx b/apps/captable/components/securities/options/steps/relevant-dates.tsx similarity index 100% rename from src/components/securities/options/steps/relevant-dates.tsx rename to apps/captable/components/securities/options/steps/relevant-dates.tsx diff --git a/src/components/securities/options/steps/vesting-details.tsx b/apps/captable/components/securities/options/steps/vesting-details.tsx similarity index 100% rename from src/components/securities/options/steps/vesting-details.tsx rename to apps/captable/components/securities/options/steps/vesting-details.tsx diff --git a/src/components/securities/shared/EmptySelect.tsx b/apps/captable/components/securities/shared/EmptySelect.tsx similarity index 100% rename from src/components/securities/shared/EmptySelect.tsx rename to apps/captable/components/securities/shared/EmptySelect.tsx diff --git a/src/components/securities/shares/data.tsx b/apps/captable/components/securities/shares/data.tsx similarity index 100% rename from src/components/securities/shares/data.tsx rename to apps/captable/components/securities/shares/data.tsx diff --git a/src/components/securities/shares/share-modal.tsx b/apps/captable/components/securities/shares/share-modal.tsx similarity index 100% rename from src/components/securities/shares/share-modal.tsx rename to apps/captable/components/securities/shares/share-modal.tsx diff --git a/src/components/securities/shares/share-table-toolbar.tsx b/apps/captable/components/securities/shares/share-table-toolbar.tsx similarity index 100% rename from src/components/securities/shares/share-table-toolbar.tsx rename to apps/captable/components/securities/shares/share-table-toolbar.tsx diff --git a/src/components/securities/shares/share-table.tsx b/apps/captable/components/securities/shares/share-table.tsx similarity index 99% rename from src/components/securities/shares/share-table.tsx rename to apps/captable/components/securities/shares/share-table.tsx index d511337ab..979144a2b 100644 --- a/src/components/securities/shares/share-table.tsx +++ b/apps/captable/components/securities/shares/share-table.tsx @@ -15,7 +15,7 @@ import { } from "@tanstack/react-table"; import * as React from "react"; -import { dayjsExt } from "@/common/dayjs"; +import { dayjsExt } from "@/lib/common/dayjs"; import { Checkbox } from "@/components/ui/checkbox"; import { Avatar, AvatarImage } from "@/components/ui/avatar"; diff --git a/src/components/securities/shares/steps/contribution-details.tsx b/apps/captable/components/securities/shares/steps/contribution-details.tsx similarity index 100% rename from src/components/securities/shares/steps/contribution-details.tsx rename to apps/captable/components/securities/shares/steps/contribution-details.tsx diff --git a/src/components/securities/shares/steps/documents.tsx b/apps/captable/components/securities/shares/steps/documents.tsx similarity index 98% rename from src/components/securities/shares/steps/documents.tsx rename to apps/captable/components/securities/shares/steps/documents.tsx index 3a8311b38..9e58641dd 100644 --- a/src/components/securities/shares/steps/documents.tsx +++ b/apps/captable/components/securities/shares/steps/documents.tsx @@ -1,6 +1,6 @@ "use client"; -import { uploadFile } from "@/common/uploads"; +import { uploadFile } from "@/lib/common/uploads"; import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { Button } from "@/components/ui/button"; import { DialogClose } from "@/components/ui/dialog"; diff --git a/src/components/securities/shares/steps/general-details.tsx b/apps/captable/components/securities/shares/steps/general-details.tsx similarity index 100% rename from src/components/securities/shares/steps/general-details.tsx rename to apps/captable/components/securities/shares/steps/general-details.tsx diff --git a/src/components/securities/shares/steps/relevant-dates.tsx b/apps/captable/components/securities/shares/steps/relevant-dates.tsx similarity index 100% rename from src/components/securities/shares/steps/relevant-dates.tsx rename to apps/captable/components/securities/shares/steps/relevant-dates.tsx diff --git a/src/components/security/SecurityList.tsx b/apps/captable/components/security/SecurityList.tsx similarity index 100% rename from src/components/security/SecurityList.tsx rename to apps/captable/components/security/SecurityList.tsx diff --git a/src/components/security/SettingHeader.tsx b/apps/captable/components/security/SettingHeader.tsx similarity index 100% rename from src/components/security/SettingHeader.tsx rename to apps/captable/components/security/SettingHeader.tsx diff --git a/src/components/security/passkey/create-passkey-modal.tsx b/apps/captable/components/security/passkey/create-passkey-modal.tsx similarity index 100% rename from src/components/security/passkey/create-passkey-modal.tsx rename to apps/captable/components/security/passkey/create-passkey-modal.tsx diff --git a/src/components/security/passkey/data.tsx b/apps/captable/components/security/passkey/data.tsx similarity index 100% rename from src/components/security/passkey/data.tsx rename to apps/captable/components/security/passkey/data.tsx diff --git a/src/components/security/passkey/passkey-table-toolbar.tsx b/apps/captable/components/security/passkey/passkey-table-toolbar.tsx similarity index 100% rename from src/components/security/passkey/passkey-table-toolbar.tsx rename to apps/captable/components/security/passkey/passkey-table-toolbar.tsx diff --git a/src/components/security/passkey/update-passkey-name-modal.tsx b/apps/captable/components/security/passkey/update-passkey-name-modal.tsx similarity index 100% rename from src/components/security/passkey/update-passkey-name-modal.tsx rename to apps/captable/components/security/passkey/update-passkey-name-modal.tsx diff --git a/src/components/security/passkey/user-passkeys-data-table.tsx b/apps/captable/components/security/passkey/user-passkeys-data-table.tsx similarity index 99% rename from src/components/security/passkey/user-passkeys-data-table.tsx rename to apps/captable/components/security/passkey/user-passkeys-data-table.tsx index ee09f23be..67ce957bc 100644 --- a/src/components/security/passkey/user-passkeys-data-table.tsx +++ b/apps/captable/components/security/passkey/user-passkeys-data-table.tsx @@ -22,7 +22,7 @@ import { useReactTable, } from "@tanstack/react-table"; -import { dayjsExt } from "@/common/dayjs"; +import { dayjsExt } from "@/lib/common/dayjs"; import { DataTable } from "@/components/ui/data-table/data-table"; import { DataTablePagination } from "@/components/ui/data-table/data-table-pagination"; import { api } from "@/trpc/react"; diff --git a/src/components/security/password/update-password-form.tsx b/apps/captable/components/security/password/update-password-form.tsx similarity index 100% rename from src/components/security/password/update-password-form.tsx rename to apps/captable/components/security/password/update-password-form.tsx diff --git a/src/components/settings/settings-sidebar.tsx b/apps/captable/components/settings/settings-sidebar.tsx similarity index 100% rename from src/components/settings/settings-sidebar.tsx rename to apps/captable/components/settings/settings-sidebar.tsx diff --git a/src/components/share/page-layout.tsx b/apps/captable/components/share/page-layout.tsx similarity index 100% rename from src/components/share/page-layout.tsx rename to apps/captable/components/share/page-layout.tsx diff --git a/src/components/stakeholder/stakeholder-dropdown.tsx b/apps/captable/components/stakeholder/stakeholder-dropdown.tsx similarity index 100% rename from src/components/stakeholder/stakeholder-dropdown.tsx rename to apps/captable/components/stakeholder/stakeholder-dropdown.tsx diff --git a/src/components/stakeholder/stakeholder-table-toolbar.tsx b/apps/captable/components/stakeholder/stakeholder-table-toolbar.tsx similarity index 100% rename from src/components/stakeholder/stakeholder-table-toolbar.tsx rename to apps/captable/components/stakeholder/stakeholder-table-toolbar.tsx diff --git a/src/components/stakeholder/stakeholder-table.tsx b/apps/captable/components/stakeholder/stakeholder-table.tsx similarity index 100% rename from src/components/stakeholder/stakeholder-table.tsx rename to apps/captable/components/stakeholder/stakeholder-table.tsx diff --git a/src/components/stakeholder/stakeholder-uploader.tsx b/apps/captable/components/stakeholder/stakeholder-uploader.tsx similarity index 100% rename from src/components/stakeholder/stakeholder-uploader.tsx rename to apps/captable/components/stakeholder/stakeholder-uploader.tsx diff --git a/src/components/template/canavs-toolbar/index.tsx b/apps/captable/components/template/canavs-toolbar/index.tsx similarity index 99% rename from src/components/template/canavs-toolbar/index.tsx rename to apps/captable/components/template/canavs-toolbar/index.tsx index 0ea45e142..db5c56b8d 100644 --- a/src/components/template/canavs-toolbar/index.tsx +++ b/apps/captable/components/template/canavs-toolbar/index.tsx @@ -1,7 +1,7 @@ "use client"; import { Button } from "@/components/ui/button"; -import { COLORS } from "@/constants/esign"; +import { COLORS } from "@/lib/constants/esign"; import type { FieldTypes } from "@/prisma/enums"; import * as Toolbar from "@radix-ui/react-toolbar"; import { FieldTypeData } from "../field-type-data"; diff --git a/src/components/template/field-canvas/custom-field-renderer/custom-select-field-renderer.tsx b/apps/captable/components/template/field-canvas/custom-field-renderer/custom-select-field-renderer.tsx similarity index 100% rename from src/components/template/field-canvas/custom-field-renderer/custom-select-field-renderer.tsx rename to apps/captable/components/template/field-canvas/custom-field-renderer/custom-select-field-renderer.tsx diff --git a/src/components/template/field-canvas/custom-field-renderer/custom-text-field-renderer.tsx b/apps/captable/components/template/field-canvas/custom-field-renderer/custom-text-field-renderer.tsx similarity index 100% rename from src/components/template/field-canvas/custom-field-renderer/custom-text-field-renderer.tsx rename to apps/captable/components/template/field-canvas/custom-field-renderer/custom-text-field-renderer.tsx diff --git a/src/components/template/field-canvas/custom-field-renderer/index.tsx b/apps/captable/components/template/field-canvas/custom-field-renderer/index.tsx similarity index 100% rename from src/components/template/field-canvas/custom-field-renderer/index.tsx rename to apps/captable/components/template/field-canvas/custom-field-renderer/index.tsx diff --git a/src/components/template/field-canvas/drawing-field.tsx b/apps/captable/components/template/field-canvas/drawing-field.tsx similarity index 92% rename from src/components/template/field-canvas/drawing-field.tsx rename to apps/captable/components/template/field-canvas/drawing-field.tsx index 3ef30bd56..bd79223fb 100644 --- a/src/components/template/field-canvas/drawing-field.tsx +++ b/apps/captable/components/template/field-canvas/drawing-field.tsx @@ -1,4 +1,4 @@ -import { COLORS } from "@/constants/esign"; +import { COLORS } from "@/lib/constants/esign"; import { cn } from "@/lib/utils"; interface DrawingFieldProps { color: string; diff --git a/src/components/template/field-canvas/index.tsx b/apps/captable/components/template/field-canvas/index.tsx similarity index 100% rename from src/components/template/field-canvas/index.tsx rename to apps/captable/components/template/field-canvas/index.tsx diff --git a/src/components/template/field-canvas/readonly-field-canvas.tsx b/apps/captable/components/template/field-canvas/readonly-field-canvas.tsx similarity index 100% rename from src/components/template/field-canvas/readonly-field-canvas.tsx rename to apps/captable/components/template/field-canvas/readonly-field-canvas.tsx diff --git a/src/components/template/field-canvas/readonly-template-field.tsx b/apps/captable/components/template/field-canvas/readonly-template-field.tsx similarity index 100% rename from src/components/template/field-canvas/readonly-template-field.tsx rename to apps/captable/components/template/field-canvas/readonly-template-field.tsx diff --git a/src/components/template/field-canvas/template-field-container.tsx b/apps/captable/components/template/field-canvas/template-field-container.tsx similarity index 98% rename from src/components/template/field-canvas/template-field-container.tsx rename to apps/captable/components/template/field-canvas/template-field-container.tsx index d9a154380..eae37ef80 100644 --- a/src/components/template/field-canvas/template-field-container.tsx +++ b/apps/captable/components/template/field-canvas/template-field-container.tsx @@ -3,7 +3,7 @@ import { PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; -import { COLORS } from "@/constants/esign"; +import { COLORS } from "@/lib/constants/esign"; import { cn } from "@/lib/utils"; import { type ComponentProps, type ReactNode } from "react"; diff --git a/src/components/template/field-canvas/template-field.tsx b/apps/captable/components/template/field-canvas/template-field.tsx similarity index 99% rename from src/components/template/field-canvas/template-field.tsx rename to apps/captable/components/template/field-canvas/template-field.tsx index e562ddd2a..6e713db4e 100644 --- a/src/components/template/field-canvas/template-field.tsx +++ b/apps/captable/components/template/field-canvas/template-field.tsx @@ -7,7 +7,7 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; -import { COLORS } from "@/constants/esign"; +import { COLORS } from "@/lib/constants/esign"; import { RiCloseCircleLine } from "@remixicon/react"; import { FieldTypeData } from "../field-type-data"; diff --git a/src/components/template/field-type-data.ts b/apps/captable/components/template/field-type-data.ts similarity index 100% rename from src/components/template/field-type-data.ts rename to apps/captable/components/template/field-type-data.ts diff --git a/src/components/template/pdf-canvas/index.tsx b/apps/captable/components/template/pdf-canvas/index.tsx similarity index 100% rename from src/components/template/pdf-canvas/index.tsx rename to apps/captable/components/template/pdf-canvas/index.tsx diff --git a/src/components/template/signing-field-form/index.tsx b/apps/captable/components/template/signing-field-form/index.tsx similarity index 100% rename from src/components/template/signing-field-form/index.tsx rename to apps/captable/components/template/signing-field-form/index.tsx diff --git a/src/components/template/signing-fields/field-renderer.tsx b/apps/captable/components/template/signing-fields/field-renderer.tsx similarity index 100% rename from src/components/template/signing-fields/field-renderer.tsx rename to apps/captable/components/template/signing-fields/field-renderer.tsx diff --git a/src/components/template/signing-fields/index.tsx b/apps/captable/components/template/signing-fields/index.tsx similarity index 100% rename from src/components/template/signing-fields/index.tsx rename to apps/captable/components/template/signing-fields/index.tsx diff --git a/src/components/template/template-field-form/index.tsx b/apps/captable/components/template/template-field-form/index.tsx similarity index 100% rename from src/components/template/template-field-form/index.tsx rename to apps/captable/components/template/template-field-form/index.tsx diff --git a/apps/captable/components/theme-toggle.tsx b/apps/captable/components/theme-toggle.tsx new file mode 100644 index 000000000..952651c95 --- /dev/null +++ b/apps/captable/components/theme-toggle.tsx @@ -0,0 +1,41 @@ +"use client"; + +import { useTheme } from "@/providers/theme-provider"; +import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; +import { RiSunFill, RiMoonFill, RiComputerFill } from "@remixicon/react"; + +export function ThemeToggle() { + const { theme, setTheme } = useTheme(); + + return ( + + + + + + setTheme("light")}> + + Light + + setTheme("dark")}> + + Dark + + setTheme("system")}> + + System + + + + ); +} diff --git a/src/components/ui/accordion.tsx b/apps/captable/components/ui/accordion.tsx similarity index 100% rename from src/components/ui/accordion.tsx rename to apps/captable/components/ui/accordion.tsx diff --git a/src/components/ui/alert-dialog.tsx b/apps/captable/components/ui/alert-dialog.tsx similarity index 100% rename from src/components/ui/alert-dialog.tsx rename to apps/captable/components/ui/alert-dialog.tsx diff --git a/src/components/ui/alert.tsx b/apps/captable/components/ui/alert.tsx similarity index 100% rename from src/components/ui/alert.tsx rename to apps/captable/components/ui/alert.tsx diff --git a/src/components/ui/avatar.tsx b/apps/captable/components/ui/avatar.tsx similarity index 100% rename from src/components/ui/avatar.tsx rename to apps/captable/components/ui/avatar.tsx diff --git a/src/components/ui/badge.tsx b/apps/captable/components/ui/badge.tsx similarity index 100% rename from src/components/ui/badge.tsx rename to apps/captable/components/ui/badge.tsx diff --git a/apps/captable/components/ui/button.tsx b/apps/captable/components/ui/button.tsx new file mode 100644 index 000000000..79b1bf40b --- /dev/null +++ b/apps/captable/components/ui/button.tsx @@ -0,0 +1,79 @@ +import * as React from "react"; + +import { type VariantProps, cva } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; +import { RiLoader5Fill } from "@remixicon/react"; + +const buttonVariants = cva( + "inline-flex items-center gap-x-2 justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-10 px-4 py-2", + xs: "h-6 px-2.5 text-xs", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + xl: "h-14 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + }, +); + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean; + loading?: boolean; + loadingText?: string; +} + +const Button = React.forwardRef( + ( + { + className, + variant, + size, + children, + disabled, + loading, + loadingText, + ...props + }, + ref, + ) => { + const isLoading = loading === true; + const isDisabled = disabled ?? isLoading; + + return ( + + ); + }, +); +Button.displayName = "Button"; + +export { Button, buttonVariants }; diff --git a/src/components/ui/card.tsx b/apps/captable/components/ui/card.tsx similarity index 100% rename from src/components/ui/card.tsx rename to apps/captable/components/ui/card.tsx diff --git a/src/components/ui/checkbox.tsx b/apps/captable/components/ui/checkbox.tsx similarity index 100% rename from src/components/ui/checkbox.tsx rename to apps/captable/components/ui/checkbox.tsx diff --git a/src/components/ui/combobox.tsx b/apps/captable/components/ui/combobox.tsx similarity index 100% rename from src/components/ui/combobox.tsx rename to apps/captable/components/ui/combobox.tsx diff --git a/src/components/ui/command.tsx b/apps/captable/components/ui/command.tsx similarity index 100% rename from src/components/ui/command.tsx rename to apps/captable/components/ui/command.tsx diff --git a/src/components/ui/data-table/data-table-body.tsx b/apps/captable/components/ui/data-table/data-table-body.tsx similarity index 100% rename from src/components/ui/data-table/data-table-body.tsx rename to apps/captable/components/ui/data-table/data-table-body.tsx diff --git a/src/components/ui/data-table/data-table-buttons.tsx b/apps/captable/components/ui/data-table/data-table-buttons.tsx similarity index 100% rename from src/components/ui/data-table/data-table-buttons.tsx rename to apps/captable/components/ui/data-table/data-table-buttons.tsx diff --git a/src/components/ui/data-table/data-table-content.tsx b/apps/captable/components/ui/data-table/data-table-content.tsx similarity index 100% rename from src/components/ui/data-table/data-table-content.tsx rename to apps/captable/components/ui/data-table/data-table-content.tsx diff --git a/src/components/ui/data-table/data-table-faceted-filter.tsx b/apps/captable/components/ui/data-table/data-table-faceted-filter.tsx similarity index 100% rename from src/components/ui/data-table/data-table-faceted-filter.tsx rename to apps/captable/components/ui/data-table/data-table-faceted-filter.tsx diff --git a/src/components/ui/data-table/data-table-header.tsx b/apps/captable/components/ui/data-table/data-table-header.tsx similarity index 100% rename from src/components/ui/data-table/data-table-header.tsx rename to apps/captable/components/ui/data-table/data-table-header.tsx diff --git a/src/components/ui/data-table/data-table-pagination.tsx b/apps/captable/components/ui/data-table/data-table-pagination.tsx similarity index 100% rename from src/components/ui/data-table/data-table-pagination.tsx rename to apps/captable/components/ui/data-table/data-table-pagination.tsx diff --git a/src/components/ui/data-table/data-table-view-options.tsx b/apps/captable/components/ui/data-table/data-table-view-options.tsx similarity index 100% rename from src/components/ui/data-table/data-table-view-options.tsx rename to apps/captable/components/ui/data-table/data-table-view-options.tsx diff --git a/src/components/ui/data-table/data-table.tsx b/apps/captable/components/ui/data-table/data-table.tsx similarity index 100% rename from src/components/ui/data-table/data-table.tsx rename to apps/captable/components/ui/data-table/data-table.tsx diff --git a/src/components/ui/dialog.tsx b/apps/captable/components/ui/dialog.tsx similarity index 100% rename from src/components/ui/dialog.tsx rename to apps/captable/components/ui/dialog.tsx diff --git a/src/components/ui/dropdown-button.tsx b/apps/captable/components/ui/dropdown-button.tsx similarity index 100% rename from src/components/ui/dropdown-button.tsx rename to apps/captable/components/ui/dropdown-button.tsx diff --git a/src/components/ui/dropdown-menu.tsx b/apps/captable/components/ui/dropdown-menu.tsx similarity index 96% rename from src/components/ui/dropdown-menu.tsx rename to apps/captable/components/ui/dropdown-menu.tsx index 370c16737..5dc185ca4 100644 --- a/src/components/ui/dropdown-menu.tsx +++ b/apps/captable/components/ui/dropdown-menu.tsx @@ -1,10 +1,13 @@ "use client"; -import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; import * as React from "react"; - +import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; import { cn } from "@/lib/utils"; -import { RiArrowRightSLine, RiCheckLine, RiCircleLine } from "@remixicon/react"; +import { + RiCheckLine, + RiArrowRightSLine, + RiCheckboxBlankCircleFill, +} from "@remixicon/react"; const DropdownMenu = DropdownMenuPrimitive.Root; @@ -34,7 +37,7 @@ const DropdownMenuSubTrigger = React.forwardRef< {...props} > {children} - + )); DropdownMenuSubTrigger.displayName = @@ -107,7 +110,7 @@ const DropdownMenuCheckboxItem = React.forwardRef< > - + {children} @@ -130,7 +133,7 @@ const DropdownMenuRadioItem = React.forwardRef< > - + {children} diff --git a/src/components/ui/form.tsx b/apps/captable/components/ui/form.tsx similarity index 100% rename from src/components/ui/form.tsx rename to apps/captable/components/ui/form.tsx diff --git a/src/components/ui/input-otp.tsx b/apps/captable/components/ui/input-otp.tsx similarity index 100% rename from src/components/ui/input-otp.tsx rename to apps/captable/components/ui/input-otp.tsx diff --git a/src/components/ui/input.tsx b/apps/captable/components/ui/input.tsx similarity index 100% rename from src/components/ui/input.tsx rename to apps/captable/components/ui/input.tsx diff --git a/src/components/ui/kbd.tsx b/apps/captable/components/ui/kbd.tsx similarity index 100% rename from src/components/ui/kbd.tsx rename to apps/captable/components/ui/kbd.tsx diff --git a/src/components/ui/label.tsx b/apps/captable/components/ui/label.tsx similarity index 100% rename from src/components/ui/label.tsx rename to apps/captable/components/ui/label.tsx diff --git a/src/components/ui/multi-selector.tsx b/apps/captable/components/ui/multi-selector.tsx similarity index 100% rename from src/components/ui/multi-selector.tsx rename to apps/captable/components/ui/multi-selector.tsx diff --git a/src/components/ui/password-input.tsx b/apps/captable/components/ui/password-input.tsx similarity index 100% rename from src/components/ui/password-input.tsx rename to apps/captable/components/ui/password-input.tsx diff --git a/src/components/ui/pdf-viewer.tsx b/apps/captable/components/ui/pdf-viewer.tsx similarity index 100% rename from src/components/ui/pdf-viewer.tsx rename to apps/captable/components/ui/pdf-viewer.tsx diff --git a/src/components/ui/popover.tsx b/apps/captable/components/ui/popover.tsx similarity index 100% rename from src/components/ui/popover.tsx rename to apps/captable/components/ui/popover.tsx diff --git a/src/components/ui/radio-group.tsx b/apps/captable/components/ui/radio-group.tsx similarity index 100% rename from src/components/ui/radio-group.tsx rename to apps/captable/components/ui/radio-group.tsx diff --git a/src/components/ui/scroll-area.tsx b/apps/captable/components/ui/scroll-area.tsx similarity index 100% rename from src/components/ui/scroll-area.tsx rename to apps/captable/components/ui/scroll-area.tsx diff --git a/src/components/ui/select.tsx b/apps/captable/components/ui/select.tsx similarity index 100% rename from src/components/ui/select.tsx rename to apps/captable/components/ui/select.tsx diff --git a/src/components/ui/separator.tsx b/apps/captable/components/ui/separator.tsx similarity index 100% rename from src/components/ui/separator.tsx rename to apps/captable/components/ui/separator.tsx diff --git a/src/components/ui/sheet.tsx b/apps/captable/components/ui/sheet.tsx similarity index 100% rename from src/components/ui/sheet.tsx rename to apps/captable/components/ui/sheet.tsx diff --git a/src/components/ui/signature-pad.tsx b/apps/captable/components/ui/signature-pad.tsx similarity index 100% rename from src/components/ui/signature-pad.tsx rename to apps/captable/components/ui/signature-pad.tsx diff --git a/src/components/ui/simple-multi-select.tsx b/apps/captable/components/ui/simple-multi-select.tsx similarity index 100% rename from src/components/ui/simple-multi-select.tsx rename to apps/captable/components/ui/simple-multi-select.tsx diff --git a/src/components/ui/stepper.tsx b/apps/captable/components/ui/stepper.tsx similarity index 100% rename from src/components/ui/stepper.tsx rename to apps/captable/components/ui/stepper.tsx diff --git a/src/components/ui/switch.tsx b/apps/captable/components/ui/switch.tsx similarity index 100% rename from src/components/ui/switch.tsx rename to apps/captable/components/ui/switch.tsx diff --git a/src/components/ui/table.tsx b/apps/captable/components/ui/table.tsx similarity index 100% rename from src/components/ui/table.tsx rename to apps/captable/components/ui/table.tsx diff --git a/src/components/ui/tabs.tsx b/apps/captable/components/ui/tabs.tsx similarity index 100% rename from src/components/ui/tabs.tsx rename to apps/captable/components/ui/tabs.tsx diff --git a/src/components/ui/textarea.tsx b/apps/captable/components/ui/textarea.tsx similarity index 100% rename from src/components/ui/textarea.tsx rename to apps/captable/components/ui/textarea.tsx diff --git a/src/components/ui/tooltip.tsx b/apps/captable/components/ui/tooltip.tsx similarity index 100% rename from src/components/ui/tooltip.tsx rename to apps/captable/components/ui/tooltip.tsx diff --git a/src/components/ui/un-authorized-state.tsx b/apps/captable/components/ui/un-authorized-state.tsx similarity index 100% rename from src/components/ui/un-authorized-state.tsx rename to apps/captable/components/ui/un-authorized-state.tsx diff --git a/src/components/ui/uploader.tsx b/apps/captable/components/ui/uploader.tsx similarity index 98% rename from src/components/ui/uploader.tsx rename to apps/captable/components/ui/uploader.tsx index 842bc4319..88a81bdab 100644 --- a/src/components/ui/uploader.tsx +++ b/apps/captable/components/ui/uploader.tsx @@ -1,6 +1,6 @@ "use client"; -import { uploadFile } from "@/common/uploads"; +import { uploadFile } from "@/lib/common/uploads"; import { api } from "@/trpc/react"; import type React from "react"; import { useCallback, useState } from "react"; diff --git a/src/components/update/change-update-visibility-alert-dialog.tsx b/apps/captable/components/update/change-update-visibility-alert-dialog.tsx similarity index 100% rename from src/components/update/change-update-visibility-alert-dialog.tsx rename to apps/captable/components/update/change-update-visibility-alert-dialog.tsx diff --git a/src/components/update/editor.tsx b/apps/captable/components/update/editor.tsx similarity index 99% rename from src/components/update/editor.tsx rename to apps/captable/components/update/editor.tsx index 64742a4c4..cebde7310 100644 --- a/src/components/update/editor.tsx +++ b/apps/captable/components/update/editor.tsx @@ -1,6 +1,6 @@ "use client"; -import { dayjsExt } from "@/common/dayjs"; +import { dayjsExt } from "@/lib/common/dayjs"; import Loading from "@/components/common/loading"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; diff --git a/src/components/update/renderer.tsx b/apps/captable/components/update/renderer.tsx similarity index 100% rename from src/components/update/renderer.tsx rename to apps/captable/components/update/renderer.tsx diff --git a/src/components/update/update-table-toolbar.tsx b/apps/captable/components/update/update-table-toolbar.tsx similarity index 100% rename from src/components/update/update-table-toolbar.tsx rename to apps/captable/components/update/update-table-toolbar.tsx diff --git a/src/components/update/update-table.tsx b/apps/captable/components/update/update-table.tsx similarity index 100% rename from src/components/update/update-table.tsx rename to apps/captable/components/update/update-table.tsx diff --git a/apps/captable/components/update/web-component.tsx b/apps/captable/components/update/web-component.tsx new file mode 100644 index 000000000..e69de29bb diff --git a/src/emails/AccountVerificationEmail.tsx b/apps/captable/emails/AccountVerificationEmail.tsx similarity index 100% rename from src/emails/AccountVerificationEmail.tsx rename to apps/captable/emails/AccountVerificationEmail.tsx diff --git a/src/emails/EsignConfirmationEmail.tsx b/apps/captable/emails/EsignConfirmationEmail.tsx similarity index 100% rename from src/emails/EsignConfirmationEmail.tsx rename to apps/captable/emails/EsignConfirmationEmail.tsx diff --git a/src/emails/EsignEmail.tsx b/apps/captable/emails/EsignEmail.tsx similarity index 100% rename from src/emails/EsignEmail.tsx rename to apps/captable/emails/EsignEmail.tsx diff --git a/src/emails/MagicLinkEmail.tsx b/apps/captable/emails/MagicLinkEmail.tsx similarity index 100% rename from src/emails/MagicLinkEmail.tsx rename to apps/captable/emails/MagicLinkEmail.tsx diff --git a/src/emails/MemberInviteEmail.tsx b/apps/captable/emails/MemberInviteEmail.tsx similarity index 100% rename from src/emails/MemberInviteEmail.tsx rename to apps/captable/emails/MemberInviteEmail.tsx diff --git a/src/emails/PasswordResetEmail.tsx b/apps/captable/emails/PasswordResetEmail.tsx similarity index 100% rename from src/emails/PasswordResetEmail.tsx rename to apps/captable/emails/PasswordResetEmail.tsx diff --git a/src/emails/ShareDataRoomEmail.tsx b/apps/captable/emails/ShareDataRoomEmail.tsx similarity index 100% rename from src/emails/ShareDataRoomEmail.tsx rename to apps/captable/emails/ShareDataRoomEmail.tsx diff --git a/src/emails/ShareUpdateEmail.tsx b/apps/captable/emails/ShareUpdateEmail.tsx similarity index 100% rename from src/emails/ShareUpdateEmail.tsx rename to apps/captable/emails/ShareUpdateEmail.tsx diff --git a/src/env.js b/apps/captable/env.ts similarity index 91% rename from src/env.js rename to apps/captable/env.ts index 3732389e2..946ce9cb7 100644 --- a/src/env.js +++ b/apps/captable/env.ts @@ -2,7 +2,7 @@ import { createEnv } from "@t3-oss/env-nextjs"; import { z } from "zod"; -const PUBLIC_ENV_KEY = "___ENV"; +export const PUBLIC_ENV_KEY = "___ENV"; function isBrowser() { return typeof window !== "undefined"; @@ -138,3 +138,17 @@ export const env = createEnv({ } }, }); + +export function getPublicEnv() { + const publicEnv = Object.keys(process.env) + .filter((key) => /^NEXT_PUBLIC_/i.test(key)) + .reduce>((prev, curr) => { + const env = process.env[curr]; + if (env) { + prev[curr] = env; + } + return prev; + }, {}); + + return publicEnv; +} diff --git a/src/hooks/use-allowed.tsx b/apps/captable/hooks/use-allowed.tsx similarity index 100% rename from src/hooks/use-allowed.tsx rename to apps/captable/hooks/use-allowed.tsx diff --git a/src/hooks/use-force-update.ts b/apps/captable/hooks/use-force-update.ts similarity index 100% rename from src/hooks/use-force-update.ts rename to apps/captable/hooks/use-force-update.ts diff --git a/src/hooks/use-isomorphic-layout-effect.ts b/apps/captable/hooks/use-isomorphic-layout-effect.ts similarity index 100% rename from src/hooks/use-isomorphic-layout-effect.ts rename to apps/captable/hooks/use-isomorphic-layout-effect.ts diff --git a/src/hooks/use-listen-pkey.ts b/apps/captable/hooks/use-listen-pkey.ts similarity index 100% rename from src/hooks/use-listen-pkey.ts rename to apps/captable/hooks/use-listen-pkey.ts diff --git a/src/jobs/auth-verification-email.ts b/apps/captable/jobs/auth-verification-email.ts similarity index 100% rename from src/jobs/auth-verification-email.ts rename to apps/captable/jobs/auth-verification-email.ts diff --git a/src/jobs/base.ts b/apps/captable/jobs/base.ts similarity index 98% rename from src/jobs/base.ts rename to apps/captable/jobs/base.ts index e506ea253..db41bfa3a 100644 --- a/src/jobs/base.ts +++ b/apps/captable/jobs/base.ts @@ -1,4 +1,4 @@ -import type { JOB_TYPES } from "@/constants/job"; +import type { JOB_TYPES } from "@/lib/constants/job"; import { env } from "@/env"; import { logger } from "@/lib/logger"; import { singleton } from "@/lib/singleton"; diff --git a/src/jobs/esign-confirmation-email.ts b/apps/captable/jobs/esign-confirmation-email.ts similarity index 100% rename from src/jobs/esign-confirmation-email.ts rename to apps/captable/jobs/esign-confirmation-email.ts diff --git a/src/jobs/esign-email.ts b/apps/captable/jobs/esign-email.ts similarity index 100% rename from src/jobs/esign-email.ts rename to apps/captable/jobs/esign-email.ts diff --git a/src/jobs/esign-pdf.ts b/apps/captable/jobs/esign-pdf.ts similarity index 100% rename from src/jobs/esign-pdf.ts rename to apps/captable/jobs/esign-pdf.ts diff --git a/src/jobs/member-inivite-email.ts b/apps/captable/jobs/member-inivite-email.ts similarity index 100% rename from src/jobs/member-inivite-email.ts rename to apps/captable/jobs/member-inivite-email.ts diff --git a/src/jobs/password-reset-email.ts b/apps/captable/jobs/password-reset-email.ts similarity index 100% rename from src/jobs/password-reset-email.ts rename to apps/captable/jobs/password-reset-email.ts diff --git a/src/jobs/share-data-room-email.ts b/apps/captable/jobs/share-data-room-email.ts similarity index 100% rename from src/jobs/share-data-room-email.ts rename to apps/captable/jobs/share-data-room-email.ts diff --git a/src/jobs/share-update-email.ts b/apps/captable/jobs/share-update-email.ts similarity index 100% rename from src/jobs/share-update-email.ts rename to apps/captable/jobs/share-update-email.ts diff --git a/src/jobs/start.ts b/apps/captable/jobs/start.ts similarity index 100% rename from src/jobs/start.ts rename to apps/captable/jobs/start.ts diff --git a/src/lib/authenticator.ts b/apps/captable/lib/authenticator.ts similarity index 86% rename from src/lib/authenticator.ts rename to apps/captable/lib/authenticator.ts index 8a608acf1..7e25ee8b3 100644 --- a/src/lib/authenticator.ts +++ b/apps/captable/lib/authenticator.ts @@ -1,4 +1,4 @@ -import { PASSKEY_TIMEOUT } from "@/constants/passkey"; +import { PASSKEY_TIMEOUT } from "@/lib/constants/passkey"; import { env } from "@/env"; /** diff --git a/src/client-only/stripe.ts b/apps/captable/lib/client-only/stripe.ts similarity index 100% rename from src/client-only/stripe.ts rename to apps/captable/lib/client-only/stripe.ts diff --git a/src/common/dayjs.ts b/apps/captable/lib/common/dayjs.ts similarity index 100% rename from src/common/dayjs.ts rename to apps/captable/lib/common/dayjs.ts diff --git a/src/common/id.ts b/apps/captable/lib/common/id.ts similarity index 100% rename from src/common/id.ts rename to apps/captable/lib/common/id.ts diff --git a/src/common/uploads.ts b/apps/captable/lib/common/uploads.ts similarity index 100% rename from src/common/uploads.ts rename to apps/captable/lib/common/uploads.ts diff --git a/src/constants/auth.ts b/apps/captable/lib/constants/auth.ts similarity index 59% rename from src/constants/auth.ts rename to apps/captable/lib/constants/auth.ts index 3f2e17225..2f1230088 100644 --- a/src/constants/auth.ts +++ b/apps/captable/lib/constants/auth.ts @@ -1,5 +1,5 @@ import { env } from "@/env"; export const IS_GOOGLE_AUTH_ENABLED = !!( - env.GOOGLE_CLIENT_ID && env.GOOGLE_CLIENT_SECRET + env.GOOGLE_CLIENT_ID && env.GOOGLE_CLIENT_SECRET ); diff --git a/src/constants/esign.ts b/apps/captable/lib/constants/esign.ts similarity index 100% rename from src/constants/esign.ts rename to apps/captable/lib/constants/esign.ts diff --git a/src/constants/job.ts b/apps/captable/lib/constants/job.ts similarity index 100% rename from src/constants/job.ts rename to apps/captable/lib/constants/job.ts diff --git a/src/lib/constants.ts b/apps/captable/lib/constants/meta.ts similarity index 80% rename from src/lib/constants.ts rename to apps/captable/lib/constants/meta.ts index 00f0ab237..f3655274d 100644 --- a/src/lib/constants.ts +++ b/apps/captable/lib/constants/meta.ts @@ -1,4 +1,4 @@ -export const constants = { +export const META = { title: "Captable, Inc.", url: "https://captable.inc", description: @@ -19,8 +19,3 @@ export const constants = { }, }, }; - -export enum PayloadType { - PROFILE_DATA = "profile-data", - PROFILE_AVATAR = "profile-avatar", -} diff --git a/src/constants/passkey.ts b/apps/captable/lib/constants/passkey.ts similarity index 100% rename from src/constants/passkey.ts rename to apps/captable/lib/constants/passkey.ts diff --git a/src/constants/sentry.ts b/apps/captable/lib/constants/sentry.ts similarity index 100% rename from src/constants/sentry.ts rename to apps/captable/lib/constants/sentry.ts diff --git a/src/constants/stripe.ts b/apps/captable/lib/constants/stripe.ts similarity index 100% rename from src/constants/stripe.ts rename to apps/captable/lib/constants/stripe.ts diff --git a/src/lib/countries.ts b/apps/captable/lib/countries.ts similarity index 100% rename from src/lib/countries.ts rename to apps/captable/lib/countries.ts diff --git a/src/lib/crypto.ts b/apps/captable/lib/crypto.ts similarity index 96% rename from src/lib/crypto.ts rename to apps/captable/lib/crypto.ts index 147f61d7c..9f2cb7404 100644 --- a/src/lib/crypto.ts +++ b/apps/captable/lib/crypto.ts @@ -1,5 +1,5 @@ import { randomBytes, scryptSync, subtle } from "node:crypto"; -import { customId } from "@/common/id"; +import { customId } from "@/lib/common/id"; export const createHash = async (key: string) => { const data = new TextEncoder().encode(key); diff --git a/src/lib/dom.ts b/apps/captable/lib/dom.ts similarity index 100% rename from src/lib/dom.ts rename to apps/captable/lib/dom.ts diff --git a/src/lib/error/errors/base.ts b/apps/captable/lib/error/errors/base.ts similarity index 100% rename from src/lib/error/errors/base.ts rename to apps/captable/lib/error/errors/base.ts diff --git a/src/lib/error/index.ts b/apps/captable/lib/error/index.ts similarity index 100% rename from src/lib/error/index.ts rename to apps/captable/lib/error/index.ts diff --git a/src/lib/headers.ts b/apps/captable/lib/headers.ts similarity index 100% rename from src/lib/headers.ts rename to apps/captable/lib/headers.ts diff --git a/src/lib/invite-team-members-csv-parser.ts b/apps/captable/lib/invite-team-members-csv-parser.ts similarity index 100% rename from src/lib/invite-team-members-csv-parser.ts rename to apps/captable/lib/invite-team-members-csv-parser.ts diff --git a/src/lib/jwt.ts b/apps/captable/lib/jwt.ts similarity index 100% rename from src/lib/jwt.ts rename to apps/captable/lib/jwt.ts diff --git a/src/lib/logger.ts b/apps/captable/lib/logger.ts similarity index 100% rename from src/lib/logger.ts rename to apps/captable/lib/logger.ts diff --git a/src/lib/mime.ts b/apps/captable/lib/mime.ts similarity index 100% rename from src/lib/mime.ts rename to apps/captable/lib/mime.ts diff --git a/src/pdf-templates/audit-log-template.tsx b/apps/captable/lib/pdf-templates/audit-log-template.tsx similarity index 98% rename from src/pdf-templates/audit-log-template.tsx rename to apps/captable/lib/pdf-templates/audit-log-template.tsx index 8bed2dc8f..80b8f3cc0 100644 --- a/src/pdf-templates/audit-log-template.tsx +++ b/apps/captable/lib/pdf-templates/audit-log-template.tsx @@ -1,4 +1,4 @@ -import { dayjsExt } from "@/common/dayjs"; +import { dayjsExt } from "@/lib/common/dayjs"; import type { TEsignAuditSchema } from "@/server/audit/schema"; import type { TGetEsignAudits } from "@/server/esign"; diff --git a/src/lib/rbac/README.md b/apps/captable/lib/rbac/README.md similarity index 100% rename from src/lib/rbac/README.md rename to apps/captable/lib/rbac/README.md diff --git a/src/lib/rbac/access-control-utils.ts b/apps/captable/lib/rbac/access-control-utils.ts similarity index 100% rename from src/lib/rbac/access-control-utils.ts rename to apps/captable/lib/rbac/access-control-utils.ts diff --git a/src/lib/rbac/access-control.ts b/apps/captable/lib/rbac/access-control.ts similarity index 100% rename from src/lib/rbac/access-control.ts rename to apps/captable/lib/rbac/access-control.ts diff --git a/src/lib/rbac/actions.ts b/apps/captable/lib/rbac/actions.ts similarity index 100% rename from src/lib/rbac/actions.ts rename to apps/captable/lib/rbac/actions.ts diff --git a/src/lib/rbac/constants.ts b/apps/captable/lib/rbac/constants.ts similarity index 100% rename from src/lib/rbac/constants.ts rename to apps/captable/lib/rbac/constants.ts diff --git a/src/lib/rbac/index.ts b/apps/captable/lib/rbac/index.ts similarity index 100% rename from src/lib/rbac/index.ts rename to apps/captable/lib/rbac/index.ts diff --git a/src/lib/rbac/rbac.test.ts b/apps/captable/lib/rbac/rbac.test.ts similarity index 100% rename from src/lib/rbac/rbac.test.ts rename to apps/captable/lib/rbac/rbac.test.ts diff --git a/src/lib/rbac/schema.ts b/apps/captable/lib/rbac/schema.ts similarity index 100% rename from src/lib/rbac/schema.ts rename to apps/captable/lib/rbac/schema.ts diff --git a/src/lib/rbac/subjects.ts b/apps/captable/lib/rbac/subjects.ts similarity index 100% rename from src/lib/rbac/subjects.ts rename to apps/captable/lib/rbac/subjects.ts diff --git a/scripts/copy-pdfjs-worker.cjs b/apps/captable/lib/scripts/copy-pdfjs-worker.cjs similarity index 100% rename from scripts/copy-pdfjs-worker.cjs rename to apps/captable/lib/scripts/copy-pdfjs-worker.cjs diff --git a/scripts/migrate.sh b/apps/captable/lib/scripts/migrate.sh similarity index 100% rename from scripts/migrate.sh rename to apps/captable/lib/scripts/migrate.sh diff --git a/src/lib/singleton.ts b/apps/captable/lib/singleton.ts similarity index 100% rename from src/lib/singleton.ts rename to apps/captable/lib/singleton.ts diff --git a/src/lib/stakeholders-csv-parser.ts b/apps/captable/lib/stakeholders-csv-parser.ts similarity index 100% rename from src/lib/stakeholders-csv-parser.ts rename to apps/captable/lib/stakeholders-csv-parser.ts diff --git a/src/lib/states.ts b/apps/captable/lib/states.ts similarity index 100% rename from src/lib/states.ts rename to apps/captable/lib/states.ts diff --git a/src/lib/string.ts b/apps/captable/lib/string.ts similarity index 100% rename from src/lib/string.ts rename to apps/captable/lib/string.ts diff --git a/src/lib/tags.ts b/apps/captable/lib/tags.ts similarity index 100% rename from src/lib/tags.ts rename to apps/captable/lib/tags.ts diff --git a/src/lib/token.ts b/apps/captable/lib/token.ts similarity index 100% rename from src/lib/token.ts rename to apps/captable/lib/token.ts diff --git a/src/lib/types.ts b/apps/captable/lib/types.ts similarity index 95% rename from src/lib/types.ts rename to apps/captable/lib/types.ts index 1218c58b8..bfc68d440 100644 --- a/src/lib/types.ts +++ b/apps/captable/lib/types.ts @@ -1,5 +1,9 @@ import { z } from "zod"; -import { type PayloadType } from "./constants"; + +export enum PayloadType { + PROFILE_DATA = "profile-data", + PROFILE_AVATAR = "profile-avatar", +} type ProfilePayload = { type: PayloadType.PROFILE_DATA; diff --git a/src/lib/utils.ts b/apps/captable/lib/utils.ts similarity index 100% rename from src/lib/utils.ts rename to apps/captable/lib/utils.ts diff --git a/src/lib/vesting.ts b/apps/captable/lib/vesting.ts similarity index 100% rename from src/lib/vesting.ts rename to apps/captable/lib/vesting.ts diff --git a/src/lib/zodSchemas.ts b/apps/captable/lib/zodSchemas.ts similarity index 100% rename from src/lib/zodSchemas.ts rename to apps/captable/lib/zodSchemas.ts diff --git a/src/middleware.ts b/apps/captable/middleware.ts similarity index 100% rename from src/middleware.ts rename to apps/captable/middleware.ts diff --git a/apps/captable/next.config.js b/apps/captable/next.config.js new file mode 100644 index 000000000..d55e0fc3d --- /dev/null +++ b/apps/captable/next.config.js @@ -0,0 +1,8 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + eslint: { + ignoreDuringBuilds: true, + }, +}; + +export default nextConfig; diff --git a/apps/captable/package.json b/apps/captable/package.json new file mode 100644 index 000000000..cf9e59ab0 --- /dev/null +++ b/apps/captable/package.json @@ -0,0 +1,54 @@ +{ + "name": "captable", + "version": "0.1.0", + "type": "module", + "private": true, + "scripts": { + "dev": "next dev --turbopack --port 3000", + "build": "next build", + "start": "next start", + "check-types": "tsc --noEmit", + "format": "biome format --write", + "lint": "biome check" + }, + "dependencies": { + "@captable/config": "*", + "@captable/db": "*", + "@captable/logger": "*", + "@hookform/resolvers": "^5.0.1", + "@radix-ui/react-dropdown-menu": "^2.1.15", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-slot": "^1.2.3", + "@remixicon/react": "^4.6.0", + "@simplewebauthn/browser": "^13.1.0", + "@simplewebauthn/server": "^13.1.1", + "@t3-oss/env-nextjs": "^0.13.4", + "@tailwindcss/typography": "^0.5.16", + "@tanstack/react-query": "^5.76.1", + "@trpc/client": "^11.1.2", + "@trpc/react-query": "^11.1.2", + "@trpc/server": "^11.1.2", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "next": "^15.3.0", + "next-auth": "^4.24.11", + "next-nprogress-bar": "^2.4.7", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "react-hook-form": "^7.56.4", + "sonner": "^2.0.3", + "superjson": "^2.2.2", + "tailwind-merge": "^3.3.0", + "tailwindcss": "^3.4.3", + "tailwindcss-animate": "^1.0.7", + "zod": "^3.25.5" + }, + "devDependencies": { + "@biomejs/biome": "1.9.4", + "@captable/config": "*", + "@types/node": "^22.15.3", + "@types/react": "19.1.0", + "@types/react-dom": "19.1.1", + "typescript": "5.8.2" + } +} diff --git a/postcss.config.cjs b/apps/captable/postcss.config.cjs similarity index 100% rename from postcss.config.cjs rename to apps/captable/postcss.config.cjs diff --git a/src/providers/add-share-form-provider.tsx b/apps/captable/providers/add-share-form-provider.tsx similarity index 100% rename from src/providers/add-share-form-provider.tsx rename to apps/captable/providers/add-share-form-provider.tsx diff --git a/src/providers/descendants.tsx b/apps/captable/providers/descendants.tsx similarity index 100% rename from src/providers/descendants.tsx rename to apps/captable/providers/descendants.tsx diff --git a/src/providers/esign-form-provider.tsx b/apps/captable/providers/esign-form-provider.tsx similarity index 100% rename from src/providers/esign-form-provider.tsx rename to apps/captable/providers/esign-form-provider.tsx diff --git a/src/providers/form-value-provider.tsx b/apps/captable/providers/form-value-provider.tsx similarity index 100% rename from src/providers/form-value-provider.tsx rename to apps/captable/providers/form-value-provider.tsx diff --git a/src/providers/next-auth.tsx b/apps/captable/providers/next-auth.tsx similarity index 100% rename from src/providers/next-auth.tsx rename to apps/captable/providers/next-auth.tsx diff --git a/src/providers/progress-bar.tsx b/apps/captable/providers/progress-bar.tsx similarity index 100% rename from src/providers/progress-bar.tsx rename to apps/captable/providers/progress-bar.tsx diff --git a/src/providers/roles-provider.tsx b/apps/captable/providers/roles-provider.tsx similarity index 100% rename from src/providers/roles-provider.tsx rename to apps/captable/providers/roles-provider.tsx diff --git a/src/providers/stock-option-form-provider.tsx b/apps/captable/providers/stock-option-form-provider.tsx similarity index 100% rename from src/providers/stock-option-form-provider.tsx rename to apps/captable/providers/stock-option-form-provider.tsx diff --git a/src/providers/template-field-provider.tsx b/apps/captable/providers/template-field-provider.tsx similarity index 97% rename from src/providers/template-field-provider.tsx rename to apps/captable/providers/template-field-provider.tsx index b6cbb3fbd..3ba63f7b4 100644 --- a/src/providers/template-field-provider.tsx +++ b/apps/captable/providers/template-field-provider.tsx @@ -1,7 +1,7 @@ "use client"; import { Form } from "@/components/ui/form"; -import { COLORS } from "@/constants/esign"; +import { COLORS } from "@/lib/constants/esign"; import { FieldTypes, TemplateStatus } from "@/prisma/enums"; import { type RouterOutputs } from "@/trpc/shared"; import { zodResolver } from "@hookform/resolvers/zod"; diff --git a/src/providers/template-signing-field-provider.tsx b/apps/captable/providers/template-signing-field-provider.tsx similarity index 96% rename from src/providers/template-signing-field-provider.tsx rename to apps/captable/providers/template-signing-field-provider.tsx index a404bc1c4..3ab33f56c 100644 --- a/src/providers/template-signing-field-provider.tsx +++ b/apps/captable/providers/template-signing-field-provider.tsx @@ -1,7 +1,7 @@ "use client"; import { Form } from "@/components/ui/form"; -import { COLORS } from "@/constants/esign"; +import { COLORS } from "@/lib/constants/esign"; import { type RouterOutputs } from "@/trpc/shared"; import { type ReactNode } from "react"; import { useForm } from "react-hook-form"; diff --git a/apps/captable/providers/theme-provider.tsx b/apps/captable/providers/theme-provider.tsx new file mode 100644 index 000000000..80155545e --- /dev/null +++ b/apps/captable/providers/theme-provider.tsx @@ -0,0 +1,93 @@ +"use client"; + +import { createContext, useContext, useEffect, useState } from "react"; + +type Theme = "dark" | "light" | "system"; + +type ThemeProviderProps = { + children: React.ReactNode; + defaultTheme?: Theme; + storageKey?: string; +}; + +type ThemeProviderState = { + theme: Theme; + setTheme: (theme: Theme) => void; +}; + +const initialState: ThemeProviderState = { + theme: "system", + setTheme: () => null, +}; + +const ThemeProviderContext = createContext(initialState); + +export function ThemeProvider({ + children, + defaultTheme = "system", + storageKey = "captable-theme", + ...props +}: ThemeProviderProps) { + const [theme, setTheme] = useState(defaultTheme); + + useEffect(() => { + const savedTheme = localStorage.getItem(storageKey) as Theme | null; + if (savedTheme) { + setTheme(savedTheme); + } + }, [storageKey]); + + useEffect(() => { + const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)"); + + const applyTheme = (newTheme: Theme) => { + const root = window.document.documentElement; + root.classList.remove("light", "dark"); + + if (newTheme === "system") { + const systemTheme = mediaQuery.matches ? "dark" : "light"; + root.classList.add(systemTheme); + } else { + root.classList.add(newTheme); + } + }; + + applyTheme(theme); + + const handleChange = () => { + if (theme === "system") { + applyTheme("system"); + } + }; + + mediaQuery.addEventListener("change", handleChange); + + return () => { + mediaQuery.removeEventListener("change", handleChange); + }; + }, [theme]); + + const value = { + theme, + setTheme: (newTheme: Theme) => { + localStorage.setItem(storageKey, newTheme); + setTheme(newTheme); + }, + }; + + return ( + + {children} + + ); +} + +export const useTheme = () => { + const context = useContext(ThemeProviderContext); + + if (context === undefined) { + throw new Error("useTheme must be used within a ThemeProvider"); + } + + return context; +}; diff --git a/apps/captable/public/file-text.svg b/apps/captable/public/file-text.svg new file mode 100644 index 000000000..9cfb3c986 --- /dev/null +++ b/apps/captable/public/file-text.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/captable/public/globe.svg b/apps/captable/public/globe.svg new file mode 100644 index 000000000..4230a3d20 --- /dev/null +++ b/apps/captable/public/globe.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/captable/public/next.svg b/apps/captable/public/next.svg new file mode 100644 index 000000000..5174b28c5 --- /dev/null +++ b/apps/captable/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/placeholders/company.svg b/apps/captable/public/placeholders/company.svg similarity index 100% rename from public/placeholders/company.svg rename to apps/captable/public/placeholders/company.svg diff --git a/public/placeholders/user.svg b/apps/captable/public/placeholders/user.svg similarity index 100% rename from public/placeholders/user.svg rename to apps/captable/public/placeholders/user.svg diff --git a/public/sample/csv/captable-stakeholders-template.csv b/apps/captable/public/sample/csv/captable-stakeholders-template.csv similarity index 100% rename from public/sample/csv/captable-stakeholders-template.csv rename to apps/captable/public/sample/csv/captable-stakeholders-template.csv diff --git a/public/sample/csv/captable-team-members-template.csv b/apps/captable/public/sample/csv/captable-team-members-template.csv similarity index 100% rename from public/sample/csv/captable-team-members-template.csv rename to apps/captable/public/sample/csv/captable-team-members-template.csv diff --git a/public/sample/pdf/dummy.pdf b/apps/captable/public/sample/pdf/dummy.pdf similarity index 100% rename from public/sample/pdf/dummy.pdf rename to apps/captable/public/sample/pdf/dummy.pdf diff --git a/apps/captable/public/turborepo-dark.svg b/apps/captable/public/turborepo-dark.svg new file mode 100644 index 000000000..dae38fed5 --- /dev/null +++ b/apps/captable/public/turborepo-dark.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/apps/captable/public/turborepo-light.svg b/apps/captable/public/turborepo-light.svg new file mode 100644 index 000000000..ddea91581 --- /dev/null +++ b/apps/captable/public/turborepo-light.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/apps/captable/public/vercel.svg b/apps/captable/public/vercel.svg new file mode 100644 index 000000000..0164ddc5a --- /dev/null +++ b/apps/captable/public/vercel.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/captable/public/window.svg b/apps/captable/public/window.svg new file mode 100644 index 000000000..bbc780069 --- /dev/null +++ b/apps/captable/public/window.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/yc/POST_MONEY_CAP.pdf b/apps/captable/public/yc/POST_MONEY_CAP.pdf similarity index 100% rename from public/yc/POST_MONEY_CAP.pdf rename to apps/captable/public/yc/POST_MONEY_CAP.pdf diff --git a/public/yc/POST_MONEY_CAP_WITH_PRO_RATA.pdf b/apps/captable/public/yc/POST_MONEY_CAP_WITH_PRO_RATA.pdf similarity index 100% rename from public/yc/POST_MONEY_CAP_WITH_PRO_RATA.pdf rename to apps/captable/public/yc/POST_MONEY_CAP_WITH_PRO_RATA.pdf diff --git a/public/yc/POST_MONEY_DISCOUNT.pdf b/apps/captable/public/yc/POST_MONEY_DISCOUNT.pdf similarity index 100% rename from public/yc/POST_MONEY_DISCOUNT.pdf rename to apps/captable/public/yc/POST_MONEY_DISCOUNT.pdf diff --git a/public/yc/POST_MONEY_DISCOUNT_WITH_PRO_RATA.pdf b/apps/captable/public/yc/POST_MONEY_DISCOUNT_WITH_PRO_RATA.pdf similarity index 100% rename from public/yc/POST_MONEY_DISCOUNT_WITH_PRO_RATA.pdf rename to apps/captable/public/yc/POST_MONEY_DISCOUNT_WITH_PRO_RATA.pdf diff --git a/public/yc/POST_MONEY_MFN.pdf b/apps/captable/public/yc/POST_MONEY_MFN.pdf similarity index 100% rename from public/yc/POST_MONEY_MFN.pdf rename to apps/captable/public/yc/POST_MONEY_MFN.pdf diff --git a/public/yc/POST_MONEY_MFN_WITH_PRO_RATA.pdf b/apps/captable/public/yc/POST_MONEY_MFN_WITH_PRO_RATA.pdf similarity index 100% rename from public/yc/POST_MONEY_MFN_WITH_PRO_RATA.pdf rename to apps/captable/public/yc/POST_MONEY_MFN_WITH_PRO_RATA.pdf diff --git a/src/schema/contacts.ts b/apps/captable/schema/contacts.ts similarity index 100% rename from src/schema/contacts.ts rename to apps/captable/schema/contacts.ts diff --git a/sentry.client.config.ts b/apps/captable/sentry.client.config.ts similarity index 100% rename from sentry.client.config.ts rename to apps/captable/sentry.client.config.ts diff --git a/sentry.edge.config.ts b/apps/captable/sentry.edge.config.ts similarity index 100% rename from sentry.edge.config.ts rename to apps/captable/sentry.edge.config.ts diff --git a/sentry.server.config.ts b/apps/captable/sentry.server.config.ts similarity index 100% rename from sentry.server.config.ts rename to apps/captable/sentry.server.config.ts diff --git a/src/server/api/const.ts b/apps/captable/server/api/const.ts similarity index 100% rename from src/server/api/const.ts rename to apps/captable/server/api/const.ts diff --git a/src/server/api/error.ts b/apps/captable/server/api/error.ts similarity index 100% rename from src/server/api/error.ts rename to apps/captable/server/api/error.ts diff --git a/src/server/api/hono.ts b/apps/captable/server/api/hono.ts similarity index 100% rename from src/server/api/hono.ts rename to apps/captable/server/api/hono.ts diff --git a/src/server/api/index.ts b/apps/captable/server/api/index.ts similarity index 100% rename from src/server/api/index.ts rename to apps/captable/server/api/index.ts diff --git a/src/server/api/middlewares/bearer-token.ts b/apps/captable/server/api/middlewares/bearer-token.ts similarity index 100% rename from src/server/api/middlewares/bearer-token.ts rename to apps/captable/server/api/middlewares/bearer-token.ts diff --git a/src/server/api/middlewares/services.ts b/apps/captable/server/api/middlewares/services.ts similarity index 100% rename from src/server/api/middlewares/services.ts rename to apps/captable/server/api/middlewares/services.ts diff --git a/src/server/api/middlewares/session-token.ts b/apps/captable/server/api/middlewares/session-token.ts similarity index 100% rename from src/server/api/middlewares/session-token.ts rename to apps/captable/server/api/middlewares/session-token.ts diff --git a/src/server/api/routes/_example.ts b/apps/captable/server/api/routes/_example.ts similarity index 100% rename from src/server/api/routes/_example.ts rename to apps/captable/server/api/routes/_example.ts diff --git a/src/server/api/routes/company/getMany.ts b/apps/captable/server/api/routes/company/getMany.ts similarity index 100% rename from src/server/api/routes/company/getMany.ts rename to apps/captable/server/api/routes/company/getMany.ts diff --git a/src/server/api/routes/company/getOne.ts b/apps/captable/server/api/routes/company/getOne.ts similarity index 100% rename from src/server/api/routes/company/getOne.ts rename to apps/captable/server/api/routes/company/getOne.ts diff --git a/src/server/api/routes/company/index.ts b/apps/captable/server/api/routes/company/index.ts similarity index 100% rename from src/server/api/routes/company/index.ts rename to apps/captable/server/api/routes/company/index.ts diff --git a/src/server/api/routes/share/create.ts b/apps/captable/server/api/routes/share/create.ts similarity index 100% rename from src/server/api/routes/share/create.ts rename to apps/captable/server/api/routes/share/create.ts diff --git a/src/server/api/routes/share/delete.ts b/apps/captable/server/api/routes/share/delete.ts similarity index 100% rename from src/server/api/routes/share/delete.ts rename to apps/captable/server/api/routes/share/delete.ts diff --git a/src/server/api/routes/share/getMany.ts b/apps/captable/server/api/routes/share/getMany.ts similarity index 100% rename from src/server/api/routes/share/getMany.ts rename to apps/captable/server/api/routes/share/getMany.ts diff --git a/src/server/api/routes/share/getOne.ts b/apps/captable/server/api/routes/share/getOne.ts similarity index 100% rename from src/server/api/routes/share/getOne.ts rename to apps/captable/server/api/routes/share/getOne.ts diff --git a/src/server/api/routes/share/index.ts b/apps/captable/server/api/routes/share/index.ts similarity index 100% rename from src/server/api/routes/share/index.ts rename to apps/captable/server/api/routes/share/index.ts diff --git a/src/server/api/routes/share/update.ts b/apps/captable/server/api/routes/share/update.ts similarity index 100% rename from src/server/api/routes/share/update.ts rename to apps/captable/server/api/routes/share/update.ts diff --git a/src/server/api/routes/stakeholder/create.ts b/apps/captable/server/api/routes/stakeholder/create.ts similarity index 100% rename from src/server/api/routes/stakeholder/create.ts rename to apps/captable/server/api/routes/stakeholder/create.ts diff --git a/src/server/api/routes/stakeholder/delete.ts b/apps/captable/server/api/routes/stakeholder/delete.ts similarity index 100% rename from src/server/api/routes/stakeholder/delete.ts rename to apps/captable/server/api/routes/stakeholder/delete.ts diff --git a/src/server/api/routes/stakeholder/getMany.ts b/apps/captable/server/api/routes/stakeholder/getMany.ts similarity index 100% rename from src/server/api/routes/stakeholder/getMany.ts rename to apps/captable/server/api/routes/stakeholder/getMany.ts diff --git a/src/server/api/routes/stakeholder/getOne.ts b/apps/captable/server/api/routes/stakeholder/getOne.ts similarity index 100% rename from src/server/api/routes/stakeholder/getOne.ts rename to apps/captable/server/api/routes/stakeholder/getOne.ts diff --git a/src/server/api/routes/stakeholder/index.ts b/apps/captable/server/api/routes/stakeholder/index.ts similarity index 100% rename from src/server/api/routes/stakeholder/index.ts rename to apps/captable/server/api/routes/stakeholder/index.ts diff --git a/src/server/api/routes/stakeholder/update.ts b/apps/captable/server/api/routes/stakeholder/update.ts similarity index 100% rename from src/server/api/routes/stakeholder/update.ts rename to apps/captable/server/api/routes/stakeholder/update.ts diff --git a/src/server/api/schema/company.ts b/apps/captable/server/api/schema/company.ts similarity index 100% rename from src/server/api/schema/company.ts rename to apps/captable/server/api/schema/company.ts diff --git a/src/server/api/schema/pagination.ts b/apps/captable/server/api/schema/pagination.ts similarity index 100% rename from src/server/api/schema/pagination.ts rename to apps/captable/server/api/schema/pagination.ts diff --git a/src/server/api/schema/shares.ts b/apps/captable/server/api/schema/shares.ts similarity index 100% rename from src/server/api/schema/shares.ts rename to apps/captable/server/api/schema/shares.ts diff --git a/src/server/api/schema/stakeholder.ts b/apps/captable/server/api/schema/stakeholder.ts similarity index 100% rename from src/server/api/schema/stakeholder.ts rename to apps/captable/server/api/schema/stakeholder.ts diff --git a/src/server/api/utils/endpoint-creator.ts b/apps/captable/server/api/utils/endpoint-creator.ts similarity index 100% rename from src/server/api/utils/endpoint-creator.ts rename to apps/captable/server/api/utils/endpoint-creator.ts diff --git a/src/server/audit/actions.ts b/apps/captable/server/audit/actions.ts similarity index 100% rename from src/server/audit/actions.ts rename to apps/captable/server/audit/actions.ts diff --git a/src/server/audit/index.ts b/apps/captable/server/audit/index.ts similarity index 100% rename from src/server/audit/index.ts rename to apps/captable/server/audit/index.ts diff --git a/src/server/audit/schema.ts b/apps/captable/server/audit/schema.ts similarity index 100% rename from src/server/audit/schema.ts rename to apps/captable/server/audit/schema.ts diff --git a/src/server/audit/types.ts b/apps/captable/server/audit/types.ts similarity index 100% rename from src/server/audit/types.ts rename to apps/captable/server/audit/types.ts diff --git a/src/server/auth.ts b/apps/captable/server/auth.ts similarity index 57% rename from src/server/auth.ts rename to apps/captable/server/auth.ts index 1284f0fcf..7b3770722 100644 --- a/src/server/auth.ts +++ b/apps/captable/server/auth.ts @@ -1,13 +1,20 @@ -/* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-unsafe-assignment */ -import { PrismaAdapter } from "@next-auth/prisma-adapter"; import bcrypt from "bcryptjs"; +import { DrizzleAdapter } from "@auth/drizzle-adapter"; +import { db, type DBTransaction } from "@captable/db"; +import { + members, + users, + passkeyVerificationTokens, + passkeys, + companies, +} from "@captable/db/schema"; import { type DefaultSession, type NextAuthOptions, type Session, getServerSession, } from "next-auth"; +import { eq, and, sql } from "@captable/db/utils"; import { env } from "@/env"; import { getAuthenticatorOptions } from "@/lib/authenticator"; @@ -15,9 +22,12 @@ import { type TAuthenticationResponseJSONSchema, ZAuthenticationResponseJSONSchema, } from "@/lib/types"; -import type { MemberStatusEnum } from "@/prisma/enums"; -import { type TPrismaOrTransaction, db } from "@/server/db"; -import { verifyAuthenticationResponse } from "@simplewebauthn/server"; + +import type { MemberStatusEnum } from "@captable/db/schema/enums"; +import { + verifyAuthenticationResponse, + type AuthenticatorTransportFuture, +} from "@simplewebauthn/server"; import CredentialsProvider from "next-auth/providers/credentials"; import GoogleProvider from "next-auth/providers/google"; import { cache } from "react"; @@ -65,10 +75,10 @@ declare module "next-auth/jwt" { export const authOptions: NextAuthOptions = { events: { async linkAccount({ user }) { - await db.user.update({ - where: { id: user.id }, - data: { emailVerified: new Date() }, - }); + await db + .update(users) + .set({ emailVerified: new Date() }) + .where(eq(users.id, user.id)); }, }, callbacks: { @@ -97,55 +107,55 @@ export const authOptions: NextAuthOptions = { }, async jwt({ token, trigger }) { - if (trigger) { - const member = await db.member.findFirst({ - where: { - userId: token.sub, - isOnboarded: true, - status: "ACTIVE", - }, - orderBy: { - lastAccessed: "desc", - }, - select: { - id: true, - status: true, - companyId: true, - isOnboarded: true, - user: { - select: { - name: true, - image: true, - }, - }, - company: { - select: { - publicId: true, - }, + if (trigger && token.sub) { + try { + // Cast to string to fix type issue + const userIdStr = token.sub as string; + + // Using raw SQL for enum comparison to fix type issues + const memberStatus = sql`'ACTIVE'`; + + const memberRecords = await db.query.members.findMany({ + where: and( + eq(members.userId, userIdStr), + eq(members.isOnboarded, true), + sql`${members.status} = ${memberStatus}`, + ), + orderBy: (members, { desc }) => [desc(members.lastAccessed)], + limit: 1, + with: { + user: true, + company: true, }, - }, - }); - if (member) { - token.status = member.status; - token.name = member.user?.name; - token.memberId = member.id; - token.companyId = member.companyId; - token.isOnboarded = member.isOnboarded; - token.companyPublicId = member.company.publicId; - token.picture = member.user?.image; - } else { - token.status = ""; - token.companyId = ""; - token.memberId = ""; - token.isOnboarded = false; - token.companyPublicId = ""; + }); + + const member = memberRecords[0]; + + if (member) { + // Use type assertion for safe access + token.status = member.status; + token.name = member.user?.name ?? null; + token.memberId = member.id; + token.companyId = member.companyId; + token.isOnboarded = member.isOnboarded; + token.companyPublicId = member.company?.publicId ?? ""; + token.picture = member.user?.image ?? null; + } else { + token.status = ""; + token.companyId = ""; + token.memberId = ""; + token.isOnboarded = false; + token.companyPublicId = ""; + } + } catch (error) { + console.error("Error in jwt callback:", error); } } return token; }, }, - // @ts-expect-error - adapter: PrismaAdapter(db), + + adapter: DrizzleAdapter(db), secret: env.NEXTAUTH_SECRET ?? "secret", session: { strategy: "jwt", @@ -194,13 +204,13 @@ export const authOptions: NextAuthOptions = { throw new Error("Invalid request"); } - const challengeToken = await db.passkeyVerificationToken - .delete({ - where: { - id: csrfToken, - }, - }) - .catch(() => null); + // Delete and retrieve the verification token in one step + const deletedRows = await db + .delete(passkeyVerificationTokens) + .where(eq(passkeyVerificationTokens.id, csrfToken)) + .returning(); + + const challengeToken = deletedRows.length > 0 ? deletedRows[0] : null; if (!challengeToken) { return null; @@ -210,60 +220,66 @@ export const authOptions: NextAuthOptions = { throw new Error("Challenge token has expired."); } - const passkey = await db.passkey.findFirst({ - where: { - credentialId: Buffer.from(requestBodyCrediential.id), - }, - include: { - user: { - select: { - id: true, - email: true, - name: true, - emailVerified: true, - }, - }, - }, + // Get the credential ID as a string + const credentialIdString = requestBodyCrediential.id; + + // Find the passkey + const passkeyRecord = await db.query.passkeys.findFirst({ + where: eq(passkeys.credentialId, credentialIdString), }); - if (!passkey) { - throw new Error("Cannot setup passkey."); + if (!passkeyRecord) { + throw new Error("Passkey not found"); } - const user = passkey.user; + // Get the user separately + const userRecord = await db.query.users.findFirst({ + where: eq(users.id, passkeyRecord.userId), + }); + + if (!userRecord) { + throw new Error("User not found"); + } const { rpId, origin } = getAuthenticatorOptions(); + // Create proper Uint8Array from string + const credentialIdArray = new TextEncoder().encode(credentialIdString); + const publicKeyArray = new TextEncoder().encode( + passkeyRecord.credentialPublicKey, + ); + + // The simplewebauthn library's typings don't match what it expects at runtime + // We need to cast to any here to avoid type errors const verification = await verifyAuthenticationResponse({ response: requestBodyCrediential, expectedChallenge: challengeToken.token, expectedOrigin: origin, expectedRPID: rpId, - authenticator: { - //@ts-expect-error error - credentialID: new Uint8Array(Array.from(passkey.credentialId)), - credentialPublicKey: new Uint8Array(passkey.credentialPublicKey), - counter: Number(passkey.counter), - }, + credential: { + id: credentialIdString, + publicKey: publicKeyArray, + counter: Number(passkeyRecord.counter), + transports: + passkeyRecord.transports as AuthenticatorTransportFuture[], + }, // Using the correct property name as per SimpleWebAuthn documentation }).catch(() => null); - //@TODO (Add audits for verification.verified event) + // @TODO (Add audits for verification.verified event) - await db.passkey.update({ - where: { - id: passkey.id, - }, - data: { + await db + .update(passkeys) + .set({ lastUsedAt: new Date(), counter: verification?.authenticationInfo.newCounter, - }, - }); + }) + .where(eq(passkeys.id, passkeyRecord.id)); return { - id: user.id, - email: user.email, - name: user.name, - emailVerified: user.emailVerified?.toISOString() ?? null, + id: userRecord.id, + email: userRecord.email, + name: userRecord.name, + emailVerified: userRecord.emailVerified?.toISOString() ?? null, }; }, }), @@ -323,36 +339,48 @@ export const withServerComponentSession = cache(async () => { export interface checkMembershipOptions { session: Session; - tx: TPrismaOrTransaction; + tx: DBTransaction; } export async function checkMembership({ session, tx }: checkMembershipOptions) { - const data = await tx.member.findFirst({ - where: { - id: session.user.memberId, - companyId: session.user.companyId, - isOnboarded: true, - }, - select: { + const memberRecord = await tx.query.members.findFirst({ + where: and( + eq(members.id, session.user.memberId), + eq(members.companyId, session.user.companyId), + eq(members.isOnboarded, true), + ), + columns: { id: true, companyId: true, role: true, customRoleId: true, userId: true, - user: { - select: { - name: true, - email: true, - }, - }, }, }); - if (!data) { - throw new Error("membership not found"); + if (!memberRecord) { + throw new Error("Membership not found"); } - const { companyId, id: memberId, ...rest } = data; - - return { companyId, memberId, ...rest }; + // Get user data separately + const userRecord = await tx + .select({ + name: users.name, + email: users.email, + }) + .from(users) + .where(eq(users.id, memberRecord.userId)) + .limit(1); + + const user = + userRecord.length > 0 ? userRecord[0] : { name: null, email: null }; + + const { companyId, id: memberId, ...rest } = memberRecord; + + return { + companyId, + memberId, + ...rest, + user, + }; } diff --git a/src/server/company.ts b/apps/captable/server/company.ts similarity index 100% rename from src/server/company.ts rename to apps/captable/server/company.ts diff --git a/src/server/esign.ts b/apps/captable/server/esign.ts similarity index 96% rename from src/server/esign.ts rename to apps/captable/server/esign.ts index d729fe986..8e35e3eb6 100644 --- a/src/server/esign.ts +++ b/apps/captable/server/esign.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/prefer-for-of */ -import { dayjsExt } from "@/common/dayjs"; -import { type TUploadFile, getFileFromS3, uploadFile } from "@/common/uploads"; +import { dayjsExt } from "@/lib/common/dayjs"; +import { type TUploadFile, getFileFromS3, uploadFile } from "@/lib/common/uploads"; import { TAG } from "@/lib/tags"; -import { AuditLogTemplate } from "@/pdf-templates/audit-log-template"; +import { AuditLogTemplate } from "@/lib/pdf-templates/audit-log-template"; import { createBucketHandler } from "@/trpc/routers/bucket-router/procedures/create-bucket"; import { createDocumentHandler } from "@/trpc/routers/document-router/procedures/create-document"; import { renderToBuffer } from "@react-pdf/renderer"; diff --git a/src/server/file-uploads.ts b/apps/captable/server/file-uploads.ts similarity index 98% rename from src/server/file-uploads.ts rename to apps/captable/server/file-uploads.ts index 950827b06..b2e7e9cbd 100644 --- a/src/server/file-uploads.ts +++ b/apps/captable/server/file-uploads.ts @@ -1,7 +1,7 @@ "use server"; import path from "node:path"; -import { customId } from "@/common/id"; +import { customId } from "@/lib/common/id"; import { env } from "@/env"; import { DeleteObjectCommand, diff --git a/src/server/mailer.ts b/apps/captable/server/mailer.ts similarity index 100% rename from src/server/mailer.ts rename to apps/captable/server/mailer.ts diff --git a/src/server/member.ts b/apps/captable/server/member.ts similarity index 100% rename from src/server/member.ts rename to apps/captable/server/member.ts diff --git a/src/server/passkey/create-authentication-option.ts b/apps/captable/server/passkey/create-authentication-option.ts similarity index 100% rename from src/server/passkey/create-authentication-option.ts rename to apps/captable/server/passkey/create-authentication-option.ts diff --git a/src/server/passkey/create-passkey.ts b/apps/captable/server/passkey/create-passkey.ts similarity index 98% rename from src/server/passkey/create-passkey.ts rename to apps/captable/server/passkey/create-passkey.ts index d398cd4f4..6a71c2298 100644 --- a/src/server/passkey/create-passkey.ts +++ b/apps/captable/server/passkey/create-passkey.ts @@ -1,4 +1,4 @@ -import { MAXIMUM_PASSKEYS } from "@/constants/passkey"; +import { MAXIMUM_PASSKEYS } from "@/lib/constants/passkey"; import { getAuthenticatorOptions } from "@/lib/authenticator"; import { CredentialDeviceTypeEnum } from "@/prisma/enums"; import { db } from "@/server/db"; diff --git a/src/server/passkey/create-registration-options.ts b/apps/captable/server/passkey/create-registration-options.ts similarity index 97% rename from src/server/passkey/create-registration-options.ts rename to apps/captable/server/passkey/create-registration-options.ts index b43943a47..cb537b2ab 100644 --- a/src/server/passkey/create-registration-options.ts +++ b/apps/captable/server/passkey/create-registration-options.ts @@ -1,4 +1,4 @@ -import { PASSKEY_TIMEOUT } from "@/constants/passkey"; +import { PASSKEY_TIMEOUT } from "@/lib/constants/passkey"; import { getAuthenticatorOptions } from "@/lib/authenticator"; import { db } from "@/server/db"; import type { PasskeyAudit } from "@/trpc/routers/passkey-router/schema"; diff --git a/src/server/passkey/create-signin-options.ts b/apps/captable/server/passkey/create-signin-options.ts similarity index 100% rename from src/server/passkey/create-signin-options.ts rename to apps/captable/server/passkey/create-signin-options.ts diff --git a/src/server/passkey/delete-passkey.ts b/apps/captable/server/passkey/delete-passkey.ts similarity index 100% rename from src/server/passkey/delete-passkey.ts rename to apps/captable/server/passkey/delete-passkey.ts diff --git a/src/server/passkey/find-passkeys.ts b/apps/captable/server/passkey/find-passkeys.ts similarity index 100% rename from src/server/passkey/find-passkeys.ts rename to apps/captable/server/passkey/find-passkeys.ts diff --git a/src/server/passkey/update-passkey.ts b/apps/captable/server/passkey/update-passkey.ts similarity index 100% rename from src/server/passkey/update-passkey.ts rename to apps/captable/server/passkey/update-passkey.ts diff --git a/src/server/password-reset-token.ts b/apps/captable/server/password-reset-token.ts similarity index 100% rename from src/server/password-reset-token.ts rename to apps/captable/server/password-reset-token.ts diff --git a/src/server/stripe.ts b/apps/captable/server/stripe.ts similarity index 100% rename from src/server/stripe.ts rename to apps/captable/server/stripe.ts diff --git a/apps/captable/server/user.ts b/apps/captable/server/user.ts new file mode 100644 index 000000000..e79429507 --- /dev/null +++ b/apps/captable/server/user.ts @@ -0,0 +1,23 @@ +import { db } from "@captable/db"; +import { eq } from "@captable/db/utils"; +import { users } from "@captable/db/schema"; + +export const getUserByEmail = async (email: string) => { + try { + return await db.query.users.findFirst({ + where: eq(users.email, email), + }); + } catch { + return null; + } +}; + +export const getUserById = async (id: string) => { + try { + return await db.query.users.findFirst({ + where: eq(users.id, id), + }); + } catch { + return null; + } +}; diff --git a/src/server/verification-token.ts b/apps/captable/server/verification-token.ts similarity index 100% rename from src/server/verification-token.ts rename to apps/captable/server/verification-token.ts diff --git a/src/styles/editor.css b/apps/captable/styles/editor.css similarity index 100% rename from src/styles/editor.css rename to apps/captable/styles/editor.css diff --git a/src/styles/fonts.ts b/apps/captable/styles/fonts.ts similarity index 100% rename from src/styles/fonts.ts rename to apps/captable/styles/fonts.ts diff --git a/apps/captable/styles/fonts/GeistMonoVF.woff b/apps/captable/styles/fonts/GeistMonoVF.woff new file mode 100644 index 0000000000000000000000000000000000000000..f2ae185cbfd16946a534d819e9eb03924abbcc49 GIT binary patch literal 67864 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ϣ%UY8`RWp~V-U_7 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 CLkb=M literal 0 HcmV?d00001 diff --git a/apps/captable/styles/fonts/GeistVF.woff b/apps/captable/styles/fonts/GeistVF.woff new file mode 100644 index 0000000000000000000000000000000000000000..1b62daacff96dad6584e71cd962051b82957c313 GIT binary patch literal 66268 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 >-Aun5A4Gp>4U0IQJ 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 G)cz05(PHWV literal 0 HcmV?d00001 diff --git a/src/styles/fonts/Satoshi-Black.ttf b/apps/captable/styles/fonts/Satoshi-Black.ttf similarity index 100% rename from src/styles/fonts/Satoshi-Black.ttf rename to apps/captable/styles/fonts/Satoshi-Black.ttf diff --git a/src/styles/fonts/Satoshi-Bold.ttf b/apps/captable/styles/fonts/Satoshi-Bold.ttf similarity index 100% rename from src/styles/fonts/Satoshi-Bold.ttf rename to apps/captable/styles/fonts/Satoshi-Bold.ttf diff --git a/src/styles/fonts/Satoshi-Variable.woff2 b/apps/captable/styles/fonts/Satoshi-Variable.woff2 similarity index 100% rename from src/styles/fonts/Satoshi-Variable.woff2 rename to apps/captable/styles/fonts/Satoshi-Variable.woff2 diff --git a/apps/captable/styles/fonts/index.ts b/apps/captable/styles/fonts/index.ts new file mode 100644 index 000000000..babc5e7c5 --- /dev/null +++ b/apps/captable/styles/fonts/index.ts @@ -0,0 +1,17 @@ +import { Roboto_Mono } from "next/font/google"; +import localFont from "next/font/local"; + +export const satoshi = localFont({ + src: "./Satoshi-Variable.woff2", + variable: "--font-satoshi", + weight: "300 900", + display: "swap", + style: "normal", +}); + +export const robotoMono = Roboto_Mono({ + subsets: ["latin"], + display: "swap", + variable: "--font-roboto-mono", + adjustFontFallback: false, +}); diff --git a/src/styles/globals.css b/apps/captable/styles/globals.css similarity index 100% rename from src/styles/globals.css rename to apps/captable/styles/globals.css diff --git a/src/styles/hint.css b/apps/captable/styles/hint.css similarity index 100% rename from src/styles/hint.css rename to apps/captable/styles/hint.css diff --git a/tailwind.config.ts b/apps/captable/tailwind.config.ts similarity index 100% rename from tailwind.config.ts rename to apps/captable/tailwind.config.ts diff --git a/src/trpc/api/root.ts b/apps/captable/trpc/api/root.ts similarity index 100% rename from src/trpc/api/root.ts rename to apps/captable/trpc/api/root.ts diff --git a/src/trpc/api/trpc.ts b/apps/captable/trpc/api/trpc.ts similarity index 98% rename from src/trpc/api/trpc.ts rename to apps/captable/trpc/api/trpc.ts index 2bdfaec0b..2c2a0ec95 100644 --- a/src/trpc/api/trpc.ts +++ b/apps/captable/trpc/api/trpc.ts @@ -11,7 +11,7 @@ import { TRPCError, initTRPC } from "@trpc/server"; import superjson from "superjson"; import { ZodError } from "zod"; -import { isSentryEnabled } from "@/constants/sentry"; +import { isSentryEnabled } from "@/lib/constants/sentry"; import { getIp, getUserAgent } from "@/lib/headers"; import { RBAC, type addPolicyOption } from "@/lib/rbac"; import { diff --git a/src/trpc/react.tsx b/apps/captable/trpc/react.tsx similarity index 100% rename from src/trpc/react.tsx rename to apps/captable/trpc/react.tsx diff --git a/src/trpc/routers/access-token/router.ts b/apps/captable/trpc/routers/access-token/router.ts similarity index 100% rename from src/trpc/routers/access-token/router.ts rename to apps/captable/trpc/routers/access-token/router.ts diff --git a/src/trpc/routers/audit-router/procedures/all-esign-audits.ts b/apps/captable/trpc/routers/audit-router/procedures/all-esign-audits.ts similarity index 100% rename from src/trpc/routers/audit-router/procedures/all-esign-audits.ts rename to apps/captable/trpc/routers/audit-router/procedures/all-esign-audits.ts diff --git a/src/trpc/routers/audit-router/router.ts b/apps/captable/trpc/routers/audit-router/router.ts similarity index 100% rename from src/trpc/routers/audit-router/router.ts rename to apps/captable/trpc/routers/audit-router/router.ts diff --git a/src/trpc/routers/audit-router/schema.ts b/apps/captable/trpc/routers/audit-router/schema.ts similarity index 100% rename from src/trpc/routers/audit-router/schema.ts rename to apps/captable/trpc/routers/audit-router/schema.ts diff --git a/src/trpc/routers/auth/procedure/forgot-password.ts b/apps/captable/trpc/routers/auth/procedure/forgot-password.ts similarity index 100% rename from src/trpc/routers/auth/procedure/forgot-password.ts rename to apps/captable/trpc/routers/auth/procedure/forgot-password.ts diff --git a/src/trpc/routers/auth/procedure/new-password.ts b/apps/captable/trpc/routers/auth/procedure/new-password.ts similarity index 100% rename from src/trpc/routers/auth/procedure/new-password.ts rename to apps/captable/trpc/routers/auth/procedure/new-password.ts diff --git a/src/trpc/routers/auth/procedure/resend-email.ts b/apps/captable/trpc/routers/auth/procedure/resend-email.ts similarity index 100% rename from src/trpc/routers/auth/procedure/resend-email.ts rename to apps/captable/trpc/routers/auth/procedure/resend-email.ts diff --git a/src/trpc/routers/auth/procedure/signup.ts b/apps/captable/trpc/routers/auth/procedure/signup.ts similarity index 100% rename from src/trpc/routers/auth/procedure/signup.ts rename to apps/captable/trpc/routers/auth/procedure/signup.ts diff --git a/src/trpc/routers/auth/procedure/verify-email.ts b/apps/captable/trpc/routers/auth/procedure/verify-email.ts similarity index 100% rename from src/trpc/routers/auth/procedure/verify-email.ts rename to apps/captable/trpc/routers/auth/procedure/verify-email.ts diff --git a/src/trpc/routers/auth/router.ts b/apps/captable/trpc/routers/auth/router.ts similarity index 100% rename from src/trpc/routers/auth/router.ts rename to apps/captable/trpc/routers/auth/router.ts diff --git a/src/trpc/routers/auth/schema.ts b/apps/captable/trpc/routers/auth/schema.ts similarity index 100% rename from src/trpc/routers/auth/schema.ts rename to apps/captable/trpc/routers/auth/schema.ts diff --git a/src/trpc/routers/bank-accounts/router.ts b/apps/captable/trpc/routers/bank-accounts/router.ts similarity index 100% rename from src/trpc/routers/bank-accounts/router.ts rename to apps/captable/trpc/routers/bank-accounts/router.ts diff --git a/src/trpc/routers/billing-router/procedures/checkout.ts b/apps/captable/trpc/routers/billing-router/procedures/checkout.ts similarity index 100% rename from src/trpc/routers/billing-router/procedures/checkout.ts rename to apps/captable/trpc/routers/billing-router/procedures/checkout.ts diff --git a/src/trpc/routers/billing-router/procedures/get-products.ts b/apps/captable/trpc/routers/billing-router/procedures/get-products.ts similarity index 100% rename from src/trpc/routers/billing-router/procedures/get-products.ts rename to apps/captable/trpc/routers/billing-router/procedures/get-products.ts diff --git a/src/trpc/routers/billing-router/procedures/get-subscription.ts b/apps/captable/trpc/routers/billing-router/procedures/get-subscription.ts similarity index 100% rename from src/trpc/routers/billing-router/procedures/get-subscription.ts rename to apps/captable/trpc/routers/billing-router/procedures/get-subscription.ts diff --git a/src/trpc/routers/billing-router/procedures/stripe-portal.ts b/apps/captable/trpc/routers/billing-router/procedures/stripe-portal.ts similarity index 100% rename from src/trpc/routers/billing-router/procedures/stripe-portal.ts rename to apps/captable/trpc/routers/billing-router/procedures/stripe-portal.ts diff --git a/src/trpc/routers/billing-router/router.ts b/apps/captable/trpc/routers/billing-router/router.ts similarity index 100% rename from src/trpc/routers/billing-router/router.ts rename to apps/captable/trpc/routers/billing-router/router.ts diff --git a/src/trpc/routers/billing-router/schema.ts b/apps/captable/trpc/routers/billing-router/schema.ts similarity index 100% rename from src/trpc/routers/billing-router/schema.ts rename to apps/captable/trpc/routers/billing-router/schema.ts diff --git a/src/trpc/routers/bucket-router/procedures/create-bucket.ts b/apps/captable/trpc/routers/bucket-router/procedures/create-bucket.ts similarity index 100% rename from src/trpc/routers/bucket-router/procedures/create-bucket.ts rename to apps/captable/trpc/routers/bucket-router/procedures/create-bucket.ts diff --git a/src/trpc/routers/bucket-router/router.ts b/apps/captable/trpc/routers/bucket-router/router.ts similarity index 100% rename from src/trpc/routers/bucket-router/router.ts rename to apps/captable/trpc/routers/bucket-router/router.ts diff --git a/src/trpc/routers/bucket-router/schema.ts b/apps/captable/trpc/routers/bucket-router/schema.ts similarity index 100% rename from src/trpc/routers/bucket-router/schema.ts rename to apps/captable/trpc/routers/bucket-router/schema.ts diff --git a/src/trpc/routers/common/router.ts b/apps/captable/trpc/routers/common/router.ts similarity index 100% rename from src/trpc/routers/common/router.ts rename to apps/captable/trpc/routers/common/router.ts diff --git a/src/trpc/routers/company-router/router.ts b/apps/captable/trpc/routers/company-router/router.ts similarity index 100% rename from src/trpc/routers/company-router/router.ts rename to apps/captable/trpc/routers/company-router/router.ts diff --git a/src/trpc/routers/company-router/schema.ts b/apps/captable/trpc/routers/company-router/schema.ts similarity index 100% rename from src/trpc/routers/company-router/schema.ts rename to apps/captable/trpc/routers/company-router/schema.ts diff --git a/src/trpc/routers/data-room-router/router.ts b/apps/captable/trpc/routers/data-room-router/router.ts similarity index 99% rename from src/trpc/routers/data-room-router/router.ts rename to apps/captable/trpc/routers/data-room-router/router.ts index 51b15ddd4..9e67218de 100644 --- a/src/trpc/routers/data-room-router/router.ts +++ b/apps/captable/trpc/routers/data-room-router/router.ts @@ -1,4 +1,4 @@ -import { generatePublicId } from "@/common/id"; +import { generatePublicId } from "@/lib/common/id"; import { env } from "@/env"; import { type DataRoomEmailPayloadType, diff --git a/src/trpc/routers/data-room-router/schema.ts b/apps/captable/trpc/routers/data-room-router/schema.ts similarity index 100% rename from src/trpc/routers/data-room-router/schema.ts rename to apps/captable/trpc/routers/data-room-router/schema.ts diff --git a/src/trpc/routers/document-router/procedures/create-document.ts b/apps/captable/trpc/routers/document-router/procedures/create-document.ts similarity index 97% rename from src/trpc/routers/document-router/procedures/create-document.ts rename to apps/captable/trpc/routers/document-router/procedures/create-document.ts index e3c906e96..0d8cac163 100644 --- a/src/trpc/routers/document-router/procedures/create-document.ts +++ b/apps/captable/trpc/routers/document-router/procedures/create-document.ts @@ -1,4 +1,4 @@ -import { generatePublicId } from "@/common/id"; +import { generatePublicId } from "@/lib/common/id"; import { Audit } from "@/server/audit"; import type { TPrismaOrTransaction } from "@/server/db"; import { diff --git a/src/trpc/routers/document-router/procedures/get-all-documents.ts b/apps/captable/trpc/routers/document-router/procedures/get-all-documents.ts similarity index 100% rename from src/trpc/routers/document-router/procedures/get-all-documents.ts rename to apps/captable/trpc/routers/document-router/procedures/get-all-documents.ts diff --git a/src/trpc/routers/document-router/procedures/get-document.ts b/apps/captable/trpc/routers/document-router/procedures/get-document.ts similarity index 100% rename from src/trpc/routers/document-router/procedures/get-document.ts rename to apps/captable/trpc/routers/document-router/procedures/get-document.ts diff --git a/src/trpc/routers/document-router/router.ts b/apps/captable/trpc/routers/document-router/router.ts similarity index 100% rename from src/trpc/routers/document-router/router.ts rename to apps/captable/trpc/routers/document-router/router.ts diff --git a/src/trpc/routers/document-router/schema.ts b/apps/captable/trpc/routers/document-router/schema.ts similarity index 100% rename from src/trpc/routers/document-router/schema.ts rename to apps/captable/trpc/routers/document-router/schema.ts diff --git a/src/trpc/routers/document-share-router/procedures/create-document-share.ts b/apps/captable/trpc/routers/document-share-router/procedures/create-document-share.ts similarity index 100% rename from src/trpc/routers/document-share-router/procedures/create-document-share.ts rename to apps/captable/trpc/routers/document-share-router/procedures/create-document-share.ts diff --git a/src/trpc/routers/document-share-router/router.ts b/apps/captable/trpc/routers/document-share-router/router.ts similarity index 100% rename from src/trpc/routers/document-share-router/router.ts rename to apps/captable/trpc/routers/document-share-router/router.ts diff --git a/src/trpc/routers/document-share-router/schema.ts b/apps/captable/trpc/routers/document-share-router/schema.ts similarity index 100% rename from src/trpc/routers/document-share-router/schema.ts rename to apps/captable/trpc/routers/document-share-router/schema.ts diff --git a/src/trpc/routers/equity-plan/router.ts b/apps/captable/trpc/routers/equity-plan/router.ts similarity index 100% rename from src/trpc/routers/equity-plan/router.ts rename to apps/captable/trpc/routers/equity-plan/router.ts diff --git a/src/trpc/routers/equity-plan/schema.ts b/apps/captable/trpc/routers/equity-plan/schema.ts similarity index 100% rename from src/trpc/routers/equity-plan/schema.ts rename to apps/captable/trpc/routers/equity-plan/schema.ts diff --git a/src/trpc/routers/member-router/procedures/accept-member.ts b/apps/captable/trpc/routers/member-router/procedures/accept-member.ts similarity index 100% rename from src/trpc/routers/member-router/procedures/accept-member.ts rename to apps/captable/trpc/routers/member-router/procedures/accept-member.ts diff --git a/src/trpc/routers/member-router/procedures/get-members.ts b/apps/captable/trpc/routers/member-router/procedures/get-members.ts similarity index 100% rename from src/trpc/routers/member-router/procedures/get-members.ts rename to apps/captable/trpc/routers/member-router/procedures/get-members.ts diff --git a/src/trpc/routers/member-router/procedures/get-profile.ts b/apps/captable/trpc/routers/member-router/procedures/get-profile.ts similarity index 100% rename from src/trpc/routers/member-router/procedures/get-profile.ts rename to apps/captable/trpc/routers/member-router/procedures/get-profile.ts diff --git a/src/trpc/routers/member-router/procedures/invite-member.ts b/apps/captable/trpc/routers/member-router/procedures/invite-member.ts similarity index 100% rename from src/trpc/routers/member-router/procedures/invite-member.ts rename to apps/captable/trpc/routers/member-router/procedures/invite-member.ts diff --git a/src/trpc/routers/member-router/procedures/re-invite.ts b/apps/captable/trpc/routers/member-router/procedures/re-invite.ts similarity index 100% rename from src/trpc/routers/member-router/procedures/re-invite.ts rename to apps/captable/trpc/routers/member-router/procedures/re-invite.ts diff --git a/src/trpc/routers/member-router/procedures/remove-member.ts b/apps/captable/trpc/routers/member-router/procedures/remove-member.ts similarity index 100% rename from src/trpc/routers/member-router/procedures/remove-member.ts rename to apps/captable/trpc/routers/member-router/procedures/remove-member.ts diff --git a/src/trpc/routers/member-router/procedures/revoke-invite.ts b/apps/captable/trpc/routers/member-router/procedures/revoke-invite.ts similarity index 100% rename from src/trpc/routers/member-router/procedures/revoke-invite.ts rename to apps/captable/trpc/routers/member-router/procedures/revoke-invite.ts diff --git a/src/trpc/routers/member-router/procedures/toggle-activation.ts b/apps/captable/trpc/routers/member-router/procedures/toggle-activation.ts similarity index 100% rename from src/trpc/routers/member-router/procedures/toggle-activation.ts rename to apps/captable/trpc/routers/member-router/procedures/toggle-activation.ts diff --git a/src/trpc/routers/member-router/procedures/update-member.ts b/apps/captable/trpc/routers/member-router/procedures/update-member.ts similarity index 100% rename from src/trpc/routers/member-router/procedures/update-member.ts rename to apps/captable/trpc/routers/member-router/procedures/update-member.ts diff --git a/src/trpc/routers/member-router/procedures/update-profile.ts b/apps/captable/trpc/routers/member-router/procedures/update-profile.ts similarity index 100% rename from src/trpc/routers/member-router/procedures/update-profile.ts rename to apps/captable/trpc/routers/member-router/procedures/update-profile.ts diff --git a/src/trpc/routers/member-router/router.ts b/apps/captable/trpc/routers/member-router/router.ts similarity index 100% rename from src/trpc/routers/member-router/router.ts rename to apps/captable/trpc/routers/member-router/router.ts diff --git a/src/trpc/routers/member-router/schema.ts b/apps/captable/trpc/routers/member-router/schema.ts similarity index 100% rename from src/trpc/routers/member-router/schema.ts rename to apps/captable/trpc/routers/member-router/schema.ts diff --git a/src/trpc/routers/onboarding-router/router.ts b/apps/captable/trpc/routers/onboarding-router/router.ts similarity index 98% rename from src/trpc/routers/onboarding-router/router.ts rename to apps/captable/trpc/routers/onboarding-router/router.ts index 240a065cb..13efd0e8c 100644 --- a/src/trpc/routers/onboarding-router/router.ts +++ b/apps/captable/trpc/routers/onboarding-router/router.ts @@ -1,4 +1,4 @@ -import { generatePublicId } from "@/common/id"; +import { generatePublicId } from "@/lib/common/id"; import { createTRPCRouter, withAuth } from "@/trpc/api/trpc"; import { ZodOnboardingMutationSchema } from "./schema"; diff --git a/src/trpc/routers/onboarding-router/schema.ts b/apps/captable/trpc/routers/onboarding-router/schema.ts similarity index 100% rename from src/trpc/routers/onboarding-router/schema.ts rename to apps/captable/trpc/routers/onboarding-router/schema.ts diff --git a/src/trpc/routers/passkey-router/router.ts b/apps/captable/trpc/routers/passkey-router/router.ts similarity index 100% rename from src/trpc/routers/passkey-router/router.ts rename to apps/captable/trpc/routers/passkey-router/router.ts diff --git a/src/trpc/routers/passkey-router/schema.ts b/apps/captable/trpc/routers/passkey-router/schema.ts similarity index 100% rename from src/trpc/routers/passkey-router/schema.ts rename to apps/captable/trpc/routers/passkey-router/schema.ts diff --git a/src/trpc/routers/rbac-router/procedures/create-role.ts b/apps/captable/trpc/routers/rbac-router/procedures/create-role.ts similarity index 100% rename from src/trpc/routers/rbac-router/procedures/create-role.ts rename to apps/captable/trpc/routers/rbac-router/procedures/create-role.ts diff --git a/src/trpc/routers/rbac-router/procedures/delete-role.ts b/apps/captable/trpc/routers/rbac-router/procedures/delete-role.ts similarity index 100% rename from src/trpc/routers/rbac-router/procedures/delete-role.ts rename to apps/captable/trpc/routers/rbac-router/procedures/delete-role.ts diff --git a/src/trpc/routers/rbac-router/procedures/get-permissions.ts b/apps/captable/trpc/routers/rbac-router/procedures/get-permissions.ts similarity index 100% rename from src/trpc/routers/rbac-router/procedures/get-permissions.ts rename to apps/captable/trpc/routers/rbac-router/procedures/get-permissions.ts diff --git a/src/trpc/routers/rbac-router/procedures/list-roles.ts b/apps/captable/trpc/routers/rbac-router/procedures/list-roles.ts similarity index 100% rename from src/trpc/routers/rbac-router/procedures/list-roles.ts rename to apps/captable/trpc/routers/rbac-router/procedures/list-roles.ts diff --git a/src/trpc/routers/rbac-router/procedures/update-roles.ts b/apps/captable/trpc/routers/rbac-router/procedures/update-roles.ts similarity index 100% rename from src/trpc/routers/rbac-router/procedures/update-roles.ts rename to apps/captable/trpc/routers/rbac-router/procedures/update-roles.ts diff --git a/src/trpc/routers/rbac-router/router.ts b/apps/captable/trpc/routers/rbac-router/router.ts similarity index 100% rename from src/trpc/routers/rbac-router/router.ts rename to apps/captable/trpc/routers/rbac-router/router.ts diff --git a/src/trpc/routers/rbac-router/schema.ts b/apps/captable/trpc/routers/rbac-router/schema.ts similarity index 100% rename from src/trpc/routers/rbac-router/schema.ts rename to apps/captable/trpc/routers/rbac-router/schema.ts diff --git a/src/trpc/routers/safe/procedures/add-existing-safe.ts b/apps/captable/trpc/routers/safe/procedures/add-existing-safe.ts similarity index 97% rename from src/trpc/routers/safe/procedures/add-existing-safe.ts rename to apps/captable/trpc/routers/safe/procedures/add-existing-safe.ts index 06b462091..3980acd55 100644 --- a/src/trpc/routers/safe/procedures/add-existing-safe.ts +++ b/apps/captable/trpc/routers/safe/procedures/add-existing-safe.ts @@ -1,4 +1,4 @@ -import { generatePublicId } from "@/common/id"; +import { generatePublicId } from "@/lib/common/id"; import { Audit } from "@/server/audit"; import { checkMembership } from "@/server/auth"; import { withAuth } from "@/trpc/api/trpc"; diff --git a/src/trpc/routers/safe/procedures/create-safe.ts b/apps/captable/trpc/routers/safe/procedures/create-safe.ts similarity index 97% rename from src/trpc/routers/safe/procedures/create-safe.ts rename to apps/captable/trpc/routers/safe/procedures/create-safe.ts index 35351181c..5682eedd7 100644 --- a/src/trpc/routers/safe/procedures/create-safe.ts +++ b/apps/captable/trpc/routers/safe/procedures/create-safe.ts @@ -1,7 +1,7 @@ import fs from "node:fs"; import path from "node:path"; -import { generatePublicId } from "@/common/id"; -import { uploadFile } from "@/common/uploads"; +import { generatePublicId } from "@/lib/common/id"; +import { uploadFile } from "@/lib/common/uploads"; import { invariant } from "@/lib/error"; import { TAG } from "@/lib/tags"; import { Audit } from "@/server/audit"; diff --git a/src/trpc/routers/safe/procedures/delete-safe.ts b/apps/captable/trpc/routers/safe/procedures/delete-safe.ts similarity index 100% rename from src/trpc/routers/safe/procedures/delete-safe.ts rename to apps/captable/trpc/routers/safe/procedures/delete-safe.ts diff --git a/src/trpc/routers/safe/procedures/get-safes.ts b/apps/captable/trpc/routers/safe/procedures/get-safes.ts similarity index 100% rename from src/trpc/routers/safe/procedures/get-safes.ts rename to apps/captable/trpc/routers/safe/procedures/get-safes.ts diff --git a/src/trpc/routers/safe/router.ts b/apps/captable/trpc/routers/safe/router.ts similarity index 100% rename from src/trpc/routers/safe/router.ts rename to apps/captable/trpc/routers/safe/router.ts diff --git a/src/trpc/routers/safe/schema.ts b/apps/captable/trpc/routers/safe/schema.ts similarity index 100% rename from src/trpc/routers/safe/schema.ts rename to apps/captable/trpc/routers/safe/schema.ts diff --git a/src/trpc/routers/securities-router/procedures/add-option.ts b/apps/captable/trpc/routers/securities-router/procedures/add-option.ts similarity index 97% rename from src/trpc/routers/securities-router/procedures/add-option.ts rename to apps/captable/trpc/routers/securities-router/procedures/add-option.ts index 584868a23..90c0b5e5b 100644 --- a/src/trpc/routers/securities-router/procedures/add-option.ts +++ b/apps/captable/trpc/routers/securities-router/procedures/add-option.ts @@ -1,4 +1,4 @@ -import { generatePublicId } from "@/common/id"; +import { generatePublicId } from "@/lib/common/id"; import { Audit } from "@/server/audit"; import { checkMembership } from "@/server/auth"; import { withAuth } from "@/trpc/api/trpc"; diff --git a/src/trpc/routers/securities-router/procedures/add-share.ts b/apps/captable/trpc/routers/securities-router/procedures/add-share.ts similarity index 98% rename from src/trpc/routers/securities-router/procedures/add-share.ts rename to apps/captable/trpc/routers/securities-router/procedures/add-share.ts index 694d0292f..12d2b1d06 100644 --- a/src/trpc/routers/securities-router/procedures/add-share.ts +++ b/apps/captable/trpc/routers/securities-router/procedures/add-share.ts @@ -1,4 +1,4 @@ -import { generatePublicId } from "@/common/id"; +import { generatePublicId } from "@/lib/common/id"; import { Audit } from "@/server/audit"; import { checkMembership } from "@/server/auth"; import { withAuth } from "@/trpc/api/trpc"; diff --git a/src/trpc/routers/securities-router/procedures/delete-option.ts b/apps/captable/trpc/routers/securities-router/procedures/delete-option.ts similarity index 100% rename from src/trpc/routers/securities-router/procedures/delete-option.ts rename to apps/captable/trpc/routers/securities-router/procedures/delete-option.ts diff --git a/src/trpc/routers/securities-router/procedures/delete-share.ts b/apps/captable/trpc/routers/securities-router/procedures/delete-share.ts similarity index 100% rename from src/trpc/routers/securities-router/procedures/delete-share.ts rename to apps/captable/trpc/routers/securities-router/procedures/delete-share.ts diff --git a/src/trpc/routers/securities-router/procedures/get-options.ts b/apps/captable/trpc/routers/securities-router/procedures/get-options.ts similarity index 100% rename from src/trpc/routers/securities-router/procedures/get-options.ts rename to apps/captable/trpc/routers/securities-router/procedures/get-options.ts diff --git a/src/trpc/routers/securities-router/procedures/get-shares.ts b/apps/captable/trpc/routers/securities-router/procedures/get-shares.ts similarity index 100% rename from src/trpc/routers/securities-router/procedures/get-shares.ts rename to apps/captable/trpc/routers/securities-router/procedures/get-shares.ts diff --git a/src/trpc/routers/securities-router/router.ts b/apps/captable/trpc/routers/securities-router/router.ts similarity index 100% rename from src/trpc/routers/securities-router/router.ts rename to apps/captable/trpc/routers/securities-router/router.ts diff --git a/src/trpc/routers/securities-router/schema.ts b/apps/captable/trpc/routers/securities-router/schema.ts similarity index 100% rename from src/trpc/routers/securities-router/schema.ts rename to apps/captable/trpc/routers/securities-router/schema.ts diff --git a/src/trpc/routers/security-router/procedures/update-password.tsx b/apps/captable/trpc/routers/security-router/procedures/update-password.tsx similarity index 100% rename from src/trpc/routers/security-router/procedures/update-password.tsx rename to apps/captable/trpc/routers/security-router/procedures/update-password.tsx diff --git a/src/trpc/routers/security-router/router.ts b/apps/captable/trpc/routers/security-router/router.ts similarity index 100% rename from src/trpc/routers/security-router/router.ts rename to apps/captable/trpc/routers/security-router/router.ts diff --git a/src/trpc/routers/security-router/schema.ts b/apps/captable/trpc/routers/security-router/schema.ts similarity index 100% rename from src/trpc/routers/security-router/schema.ts rename to apps/captable/trpc/routers/security-router/schema.ts diff --git a/src/trpc/routers/share-class/router.ts b/apps/captable/trpc/routers/share-class/router.ts similarity index 100% rename from src/trpc/routers/share-class/router.ts rename to apps/captable/trpc/routers/share-class/router.ts diff --git a/src/trpc/routers/share-class/schema.ts b/apps/captable/trpc/routers/share-class/schema.ts similarity index 100% rename from src/trpc/routers/share-class/schema.ts rename to apps/captable/trpc/routers/share-class/schema.ts diff --git a/src/trpc/routers/stakeholder-router/procedures/add-stakeholders.ts b/apps/captable/trpc/routers/stakeholder-router/procedures/add-stakeholders.ts similarity index 100% rename from src/trpc/routers/stakeholder-router/procedures/add-stakeholders.ts rename to apps/captable/trpc/routers/stakeholder-router/procedures/add-stakeholders.ts diff --git a/src/trpc/routers/stakeholder-router/procedures/get-stakeholders.ts b/apps/captable/trpc/routers/stakeholder-router/procedures/get-stakeholders.ts similarity index 100% rename from src/trpc/routers/stakeholder-router/procedures/get-stakeholders.ts rename to apps/captable/trpc/routers/stakeholder-router/procedures/get-stakeholders.ts diff --git a/src/trpc/routers/stakeholder-router/procedures/update-stakeholder.ts b/apps/captable/trpc/routers/stakeholder-router/procedures/update-stakeholder.ts similarity index 100% rename from src/trpc/routers/stakeholder-router/procedures/update-stakeholder.ts rename to apps/captable/trpc/routers/stakeholder-router/procedures/update-stakeholder.ts diff --git a/src/trpc/routers/stakeholder-router/router.ts b/apps/captable/trpc/routers/stakeholder-router/router.ts similarity index 100% rename from src/trpc/routers/stakeholder-router/router.ts rename to apps/captable/trpc/routers/stakeholder-router/router.ts diff --git a/src/trpc/routers/stakeholder-router/schema.ts b/apps/captable/trpc/routers/stakeholder-router/schema.ts similarity index 100% rename from src/trpc/routers/stakeholder-router/schema.ts rename to apps/captable/trpc/routers/stakeholder-router/schema.ts diff --git a/src/trpc/routers/template-field-router/procedures/add-fields.ts b/apps/captable/trpc/routers/template-field-router/procedures/add-fields.ts similarity index 100% rename from src/trpc/routers/template-field-router/procedures/add-fields.ts rename to apps/captable/trpc/routers/template-field-router/procedures/add-fields.ts diff --git a/src/trpc/routers/template-field-router/router.ts b/apps/captable/trpc/routers/template-field-router/router.ts similarity index 100% rename from src/trpc/routers/template-field-router/router.ts rename to apps/captable/trpc/routers/template-field-router/router.ts diff --git a/src/trpc/routers/template-field-router/schema.ts b/apps/captable/trpc/routers/template-field-router/schema.ts similarity index 100% rename from src/trpc/routers/template-field-router/schema.ts rename to apps/captable/trpc/routers/template-field-router/schema.ts diff --git a/src/trpc/routers/template-router/procedures/cancel-template.ts b/apps/captable/trpc/routers/template-router/procedures/cancel-template.ts similarity index 100% rename from src/trpc/routers/template-router/procedures/cancel-template.ts rename to apps/captable/trpc/routers/template-router/procedures/cancel-template.ts diff --git a/src/trpc/routers/template-router/procedures/create-template.ts b/apps/captable/trpc/routers/template-router/procedures/create-template.ts similarity index 97% rename from src/trpc/routers/template-router/procedures/create-template.ts rename to apps/captable/trpc/routers/template-router/procedures/create-template.ts index dcd02fcc3..d754de381 100644 --- a/src/trpc/routers/template-router/procedures/create-template.ts +++ b/apps/captable/trpc/routers/template-router/procedures/create-template.ts @@ -1,4 +1,4 @@ -import { generatePublicId } from "@/common/id"; +import { generatePublicId } from "@/lib/common/id"; import { Audit } from "@/server/audit"; import { checkMembership } from "@/server/auth"; import type { PrismaTransactionalClient } from "@/server/db"; diff --git a/src/trpc/routers/template-router/procedures/get-all-template.ts b/apps/captable/trpc/routers/template-router/procedures/get-all-template.ts similarity index 100% rename from src/trpc/routers/template-router/procedures/get-all-template.ts rename to apps/captable/trpc/routers/template-router/procedures/get-all-template.ts diff --git a/src/trpc/routers/template-router/procedures/get-signing-fields.tsx b/apps/captable/trpc/routers/template-router/procedures/get-signing-fields.tsx similarity index 100% rename from src/trpc/routers/template-router/procedures/get-signing-fields.tsx rename to apps/captable/trpc/routers/template-router/procedures/get-signing-fields.tsx diff --git a/src/trpc/routers/template-router/procedures/get-template.ts b/apps/captable/trpc/routers/template-router/procedures/get-template.ts similarity index 100% rename from src/trpc/routers/template-router/procedures/get-template.ts rename to apps/captable/trpc/routers/template-router/procedures/get-template.ts diff --git a/src/trpc/routers/template-router/procedures/sign-template.ts b/apps/captable/trpc/routers/template-router/procedures/sign-template.ts similarity index 99% rename from src/trpc/routers/template-router/procedures/sign-template.ts rename to apps/captable/trpc/routers/template-router/procedures/sign-template.ts index 2f966124c..fa64cc34b 100644 --- a/src/trpc/routers/template-router/procedures/sign-template.ts +++ b/apps/captable/trpc/routers/template-router/procedures/sign-template.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/prefer-for-of */ -import { dayjsExt } from "@/common/dayjs"; +import { dayjsExt } from "@/lib/common/dayjs"; import { EsignNotificationEmailJob } from "@/jobs/esign-email"; import { EsignPdfJob } from "@/jobs/esign-pdf"; import type { TemplateStatus } from "@/prisma/enums"; diff --git a/src/trpc/routers/template-router/router.ts b/apps/captable/trpc/routers/template-router/router.ts similarity index 100% rename from src/trpc/routers/template-router/router.ts rename to apps/captable/trpc/routers/template-router/router.ts diff --git a/src/trpc/routers/template-router/schema.ts b/apps/captable/trpc/routers/template-router/schema.ts similarity index 100% rename from src/trpc/routers/template-router/schema.ts rename to apps/captable/trpc/routers/template-router/schema.ts diff --git a/src/trpc/routers/update/procedures/clone-update.ts b/apps/captable/trpc/routers/update/procedures/clone-update.ts similarity index 97% rename from src/trpc/routers/update/procedures/clone-update.ts rename to apps/captable/trpc/routers/update/procedures/clone-update.ts index 0f0550477..154997a1a 100644 --- a/src/trpc/routers/update/procedures/clone-update.ts +++ b/apps/captable/trpc/routers/update/procedures/clone-update.ts @@ -1,4 +1,4 @@ -import { generatePublicId } from "@/common/id"; +import { generatePublicId } from "@/lib/common/id"; import { Audit } from "@/server/audit"; import { withAuth } from "@/trpc/api/trpc"; import { UpdateMutationSchema } from "../schema"; diff --git a/src/trpc/routers/update/procedures/get-updates.ts b/apps/captable/trpc/routers/update/procedures/get-updates.ts similarity index 100% rename from src/trpc/routers/update/procedures/get-updates.ts rename to apps/captable/trpc/routers/update/procedures/get-updates.ts diff --git a/src/trpc/routers/update/procedures/save-update.ts b/apps/captable/trpc/routers/update/procedures/save-update.ts similarity index 98% rename from src/trpc/routers/update/procedures/save-update.ts rename to apps/captable/trpc/routers/update/procedures/save-update.ts index a6cf36de4..a78619296 100644 --- a/src/trpc/routers/update/procedures/save-update.ts +++ b/apps/captable/trpc/routers/update/procedures/save-update.ts @@ -1,4 +1,4 @@ -import { generatePublicId } from "@/common/id"; +import { generatePublicId } from "@/lib/common/id"; import { Audit } from "@/server/audit"; import { withAuth } from "@/trpc/api/trpc"; import { UpdateMutationSchema } from "../schema"; diff --git a/src/trpc/routers/update/procedures/share-update.ts b/apps/captable/trpc/routers/update/procedures/share-update.ts similarity index 100% rename from src/trpc/routers/update/procedures/share-update.ts rename to apps/captable/trpc/routers/update/procedures/share-update.ts diff --git a/src/trpc/routers/update/procedures/toggle-update-visibility.ts b/apps/captable/trpc/routers/update/procedures/toggle-update-visibility.ts similarity index 100% rename from src/trpc/routers/update/procedures/toggle-update-visibility.ts rename to apps/captable/trpc/routers/update/procedures/toggle-update-visibility.ts diff --git a/src/trpc/routers/update/router.ts b/apps/captable/trpc/routers/update/router.ts similarity index 100% rename from src/trpc/routers/update/router.ts rename to apps/captable/trpc/routers/update/router.ts diff --git a/src/trpc/routers/update/schema.ts b/apps/captable/trpc/routers/update/schema.ts similarity index 100% rename from src/trpc/routers/update/schema.ts rename to apps/captable/trpc/routers/update/schema.ts diff --git a/src/trpc/server.ts b/apps/captable/trpc/server.ts similarity index 100% rename from src/trpc/server.ts rename to apps/captable/trpc/server.ts diff --git a/src/trpc/shared.ts b/apps/captable/trpc/shared.ts similarity index 100% rename from src/trpc/shared.ts rename to apps/captable/trpc/shared.ts diff --git a/apps/captable/tsconfig.json b/apps/captable/tsconfig.json new file mode 100644 index 000000000..1ec99644f --- /dev/null +++ b/apps/captable/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "@captable/config/nextjs.json", + "compilerOptions": { + "plugins": [ + { + "name": "next" + } + ], + "baseUrl": ".", + "paths": { + "@/*": ["*"] + } + }, + "include": [ + "**/*.ts", + "**/*.tsx", + "next-env.d.ts", + "next.config.js", + ".next/types/**/*.ts" + ], + "exclude": ["node_modules"] +} diff --git a/biome.json b/biome.json deleted file mode 100644 index d0f84dcc6..000000000 --- a/biome.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "$schema": "https://biomejs.dev/schemas/1.7.3/schema.json", - "organizeImports": { - "enabled": true, - "ignore": [ - "node_modules", - ".next", - "dist", - "public/pdf.worker.min.js", - "./prisma/enums.ts", - "./prisma/generated/*", - "./src/components/ui/simple-multi-select.tsx" - ] - }, - "linter": { - "enabled": true, - "rules": { - "recommended": true, - "suspicious": { - "useAwait": "error" - }, - "correctness": { "noUnusedVariables": "warn" }, - "style": { "useImportType": "error" } - }, - "ignore": [ - "node_modules", - ".next", - "dist", - "public/pdf.worker.min.js", - "./prisma/enums.ts", - "./prisma/generated/*", - "./src/components/ui/simple-multi-select.tsx" - ] - }, - "formatter": { - "enabled": true, - "formatWithErrors": false, - "indentStyle": "space", - "indentWidth": 2, - "lineEnding": "lf", - "lineWidth": 80, - "attributePosition": "auto", - "ignore": [ - "node_modules", - ".next", - "dist", - "public/pdf.worker.min.js", - "./prisma/enums.ts", - "./prisma/generated/*" - ] - } -} diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..fbc922f17bf9324b092f2eebc99d8e564e4f0c6e GIT binary patch literal 173896 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

Em<))*Q@qN&} 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 { - /** - * Critical: prevents " ⨯ ./node_modules/canvas/build/Release/canvas.node - * Module parse failed: Unexpected character '�' (1:0)" error - */ - config.resolve.alias.canvas = false; - - if (isServer) { - config.ignoreWarnings = [{ module: /opentelemetry/ }]; - } - - return config; - }, - experimental: { - instrumentationHook: true, - serverComponentsExternalPackages: [ - "pino", - "pino-pretty", - "pdf-lib", - "@aws-sdk/s3-request-presigner", - "@react-pdf/renderer", - ], - }, - eslint: { - ignoreDuringBuilds: true, - }, -}; - -const hasSentry = !!( - process.env.SENTRY_ORG && - process.env.SENTRY_PROJECT && - process.env.NEXT_PUBLIC_SENTRY_DSN -); - -export default hasSentry - ? withSentryConfig(bundleAnalyzer(nextConfig), { - org: process.env.SENTRY_ORG, - project: process.env.SENTRY_PROJECT, - silent: true, - widenClientFileUpload: true, - hideSourceMaps: true, - disableLogger: true, - }) - : bundleAnalyzer(nextConfig); diff --git a/package.json b/package.json index 10c74d3f6..f0beab0d2 100644 --- a/package.json +++ b/package.json @@ -1,159 +1,33 @@ { - "name": "captable", - "version": "0.1.0", - "private": true, - "type": "module", - "scripts": { - "dx": "docker compose up", - "dx:down": "docker compose down", - "dx:build": "docker compose up --build", - "dx:logs": "docker compose logs -f", - "dx:restart": "docker-compose restart", - "dx:migrate": "docker compose exec app pnpm db:migrate", - "dx:seed": "docker compose exec app pnpm db:seed", - "db:push": "prisma db push", - "db:studio": "prisma studio", - "db:migrate": "prisma migrate dev", - "db:generate": "prisma generate", - "db:seed": "NODE_ENV='test' tsx prisma/seeds/index.ts", - "dev": "next dev", - "build": "next build", - "start": "next start", - "postinstall": "prisma generate", - "prepare": "husky", - "lint": "biome check --apply ./src", - "email:dev": "mailpit", - "format": "biome format --write ./src && prisma format", - "email:preview": "email preview ./src/emails", - "copy:pdfjs": "node scripts/copy-pdfjs-worker.cjs", - "knip": "knip", - "test": "vitest" - }, - "dependencies": { - "@ark-ui/react": "^2.2.3", - "@aws-sdk/client-s3": "^3.577.0", - "@aws-sdk/s3-request-presigner": "^3.577.0", - "@blocknote/react": "^0.12.2", - "@hono/swagger-ui": "^0.4.0", - "@hono/zod-openapi": "^0.15.1", - "@hookform/resolvers": "^3.9.0", - "@next-auth/prisma-adapter": "^1.0.7", - "@prisma/client": "^5.13.0", - "@prisma/generator-helper": "^5.17.0", - "@radix-ui/react-accordion": "^1.2.0", - "@radix-ui/react-alert-dialog": "^1.0.5", - "@radix-ui/react-avatar": "^1.1.0", - "@radix-ui/react-checkbox": "^1.1.1", - "@radix-ui/react-dialog": "^1.0.5", - "@radix-ui/react-dropdown-menu": "^2.0.6", - "@radix-ui/react-label": "^2.0.2", - "@radix-ui/react-popover": "^1.1.1", - "@radix-ui/react-radio-group": "^1.2.0", - "@radix-ui/react-scroll-area": "^1.1.0", - "@radix-ui/react-select": "^2.0.0", - "@radix-ui/react-separator": "^1.0.3", - "@radix-ui/react-slot": "^1.0.2", - "@radix-ui/react-switch": "^1.0.3", - "@radix-ui/react-tabs": "^1.0.4", - "@radix-ui/react-toolbar": "^1.0.4", - "@radix-ui/react-tooltip": "^1.1.2", - "@react-email/components": "0.0.22", - "@react-pdf/renderer": "^3.4.4", - "@remixicon/react": "^4.0.1", - "@scalar/nextjs-api-reference": "^0.4.18", - "@sentry/nextjs": "^8.19.0", - "@simplewebauthn/browser": "^10.0.0", - "@simplewebauthn/server": "^10.0.0", - "@sindresorhus/slugify": "^2.2.1", - "@stripe/stripe-js": "^4.1.0", - "@t3-oss/env-nextjs": "^0.10.1", - "@tanstack/react-query": "^4.36.1", - "@tanstack/react-table": "^8.20.1", - "@tremor/react": "^3.17.4", - "@trpc/client": "^10.43.6", - "@trpc/next": "^10.45.2", - "@trpc/react-query": "^10.43.6", - "@trpc/server": "^10.43.6", - "@types/bcryptjs": "^2.4.6", - "@types/papaparse": "^5.3.14", - "@wojtekmaj/react-hooks": "^1.20.0", - "bcryptjs": "^2.4.3", - "class-variance-authority": "^0.7.0", - "clsx": "^2.1.1", - "cmdk": "^1.0.0", - "cookie": "^0.6.0", - "dayjs": "^1.11.11", - "hono": "^4.5.8", - "html-to-image": "^1.11.11", - "input-otp": "^1.1.0", - "jose": "^5.3.0", - "lodash-es": "^4.17.21", - "mime": "^4.0.3", - "nanoid": "^5.0.4", - "next": "^14.2.4", - "next-auth": "^4.24.7", - "next-nprogress-bar": "^2.3.13", - "nodemailer": "^6.9.14", - "papaparse": "^5.4.1", - "pdf-lib": "^1.17.1", - "pg-boss": "^9.0.3", - "pino": "^9.3.1", - "pino-pretty": "^11.2.2", - "prisma-extension-pagination": "^0.7.4", - "prisma-json-types-generator": "^3.0.4", - "pushmodal": "^1.0.4", - "react": "18.3.1", - "react-dom": "18.2.0", - "react-dropzone": "^14.2.3", - "react-email": "2.1.6", - "react-hook-form": "^7.52.1", - "react-number-format": "^5.3.4", - "react-pdf": "^8.0.2", - "sharp": "^0.33.3", - "sonner": "^1.5.0", - "stripe": "^15.8.0", - "superjson": "^2.2.1", - "tailwind-merge": "^2.4.0", - "tailwindcss-animate": "^1.0.7", - "ts-pattern": "^5.3.1", - "ua-parser-js": "^1.0.37", - "usehooks-ts": "^3.1.0", - "zod": "^3.23.8" - }, - "devDependencies": { - "@biomejs/biome": "1.7.3", - "@blocknote/core": "^0.13.2", - "@faker-js/faker": "^8.4.0", - "@flydotio/dockerfile": "^0.5.8", - "@next/bundle-analyzer": "^14.2.3", - "@simplewebauthn/types": "^10.0.0", - "@tailwindcss/typography": "^0.5.12", - "@types/cookie": "^0.6.0", - "@types/inquirer": "^9.0.7", - "@types/lodash-es": "^4.17.12", - "@types/node": "^20.12.12", - "@types/nodemailer": "^6.4.14", - "@types/react": "^18.3.3", - "@types/react-dom": "^18.2.23", - "@types/ua-parser-js": "^0.7.39", - "autoprefixer": "^10.4.19", - "colors": "^1.4.0", - "husky": "^9.1.3", - "inquirer": "^9.2.22", - "knip": "^5.17.2", - "lint-staged": "^15.2.2", - "postcss": "^8.4.40", - "prisma": "^5.13.0", - "tailwindcss": "^3.4.3", - "tsx": "^4.7.0", - "typescript": "^5.4.5", - "vitest": "^1.6.0" - }, - "ct3aMetadata": { - "initVersion": "7.25.1" - }, - "engines": { - "node": ">=20.11.0", - "pnpm": ">=9.1.2" - } + "name": "captable", + "private": true, + "scripts": { + "build": "dotenv -- turbo run build", + "dev": "dotenv -- turbo run dev", + "lint": "dotenv -- turbo run lint", + "format": "dotenv -- turbo run format", + "check-types": "dotenv -- turbo run check-types", + "db:seed": "dotenv -- turbo run db:seed", + "db:generate": "dotenv -- turbo run db:generate", + "db:migrate": "dotenv -- turbo run db:migrate", + "db:studio": "dotenv -- turbo run db:studio" + }, + "devDependencies": { + "dotenv": "^16.5.0", + "dotenv-cli": "^8.0.0", + "turbo": "^2.5.3", + "typescript": "5.8.2" + }, + "engines": { + "node": ">=18" + }, + "packageManager": "bun@1.1.21", + "workspaces": ["apps/*", "packages/*"], + "dependencies": { + "@auth/drizzle-adapter": "^1.9.1", + "@biomejs/biome": "^1.9.4", + "@tanstack/react-table": "^8.21.3", + "autoprefixer": "^10.4.21", + "lefthook": "^1.11.13" + } } diff --git a/packages/config/base.json b/packages/config/base.json new file mode 100644 index 000000000..0756a8cde --- /dev/null +++ b/packages/config/base.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "incremental": false, + "isolatedModules": true, + "lib": ["es2022", "DOM", "DOM.Iterable"], + "module": "NodeNext", + "moduleDetection": "force", + "moduleResolution": "NodeNext", + "noUncheckedIndexedAccess": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "ES2022" + } +} diff --git a/packages/config/biome.json b/packages/config/biome.json new file mode 100644 index 000000000..5c9b13ef5 --- /dev/null +++ b/packages/config/biome.json @@ -0,0 +1,52 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.7.3/schema.json", + "organizeImports": { + "enabled": true, + "ignore": [ + "node_modules", + ".next", + "dist", + "public/pdf.worker.min.js", + "./prisma/enums.ts", + "./prisma/generated/*", + "./src/components/ui/simple-multi-select.tsx" + ] + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "suspicious": { + "useAwait": "error" + }, + "correctness": { "noUnusedVariables": "warn" }, + "style": { "useImportType": "error" } + }, + "ignore": [ + "node_modules", + ".next", + "dist", + "public/pdf.worker.min.js", + "./prisma/enums.ts", + "./prisma/generated/*", + "./src/components/ui/simple-multi-select.tsx" + ] + }, + "formatter": { + "enabled": true, + "formatWithErrors": false, + "indentStyle": "space", + "indentWidth": 2, + "lineEnding": "lf", + "lineWidth": 80, + "attributePosition": "auto", + "ignore": [ + "node_modules", + ".next", + "dist", + "public/pdf.worker.min.js", + "./prisma/enums.ts", + "./prisma/generated/*" + ] + } +} diff --git a/packages/config/index.ts b/packages/config/index.ts new file mode 100644 index 000000000..7743532e2 --- /dev/null +++ b/packages/config/index.ts @@ -0,0 +1,10 @@ +import { customAlphabet } from "nanoid"; + +/** + * Generates a unique public ID for entities + * @returns A random ID string + */ +export function generatePublicId(): string { + const nanoid = customAlphabet("123456789abcdefghijklmnopqrstuvwxyz", 10); + return nanoid(); +} diff --git a/packages/config/nextjs.json b/packages/config/nextjs.json new file mode 100644 index 000000000..20317a2a8 --- /dev/null +++ b/packages/config/nextjs.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./base.json", + "compilerOptions": { + "plugins": [{ "name": "next" }], + "module": "ESNext", + "moduleResolution": "Bundler", + "allowJs": true, + "jsx": "preserve", + "noEmit": true + } +} diff --git a/packages/config/package.json b/packages/config/package.json new file mode 100644 index 000000000..3f61e2863 --- /dev/null +++ b/packages/config/package.json @@ -0,0 +1,9 @@ +{ + "name": "@captable/config", + "version": "0.0.0", + "private": true, + "license": "MIT", + "publishConfig": { + "access": "public" + } +} diff --git a/packages/config/react-library.json b/packages/config/react-library.json new file mode 100644 index 000000000..44957d69b --- /dev/null +++ b/packages/config/react-library.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./base.json", + "compilerOptions": { + "jsx": "react-jsx" + } +} diff --git a/packages/db/.gitignore b/packages/db/.gitignore new file mode 100644 index 000000000..9b1ee42e8 --- /dev/null +++ b/packages/db/.gitignore @@ -0,0 +1,175 @@ +# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore + +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Caches + +.cache + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/packages/db/README.md b/packages/db/README.md new file mode 100644 index 000000000..e4b1b39c0 --- /dev/null +++ b/packages/db/README.md @@ -0,0 +1,15 @@ +# @captable/db + +To install dependencies: + +```bash +bun install +``` + +To run: + +```bash +bun run index.ts +``` + +This project was created using `bun init` in bun v1.1.21. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime. diff --git a/packages/db/biome.json b/packages/db/biome.json new file mode 100644 index 000000000..86326ab92 --- /dev/null +++ b/packages/db/biome.json @@ -0,0 +1,3 @@ +{ + "extends": ["../config/biome.json"] +} diff --git a/packages/db/config.ts b/packages/db/config.ts new file mode 100644 index 000000000..460ac23f0 --- /dev/null +++ b/packages/db/config.ts @@ -0,0 +1,11 @@ +import type { Config } from "drizzle-kit"; + +export default { + schema: "./schema/index.ts", + dialect: "postgresql", + dbCredentials: { + url: process.env.DATABASE_URL as string, + }, + out: "./migrations", + tablesFilter: ["cap_*"], +} satisfies Config; diff --git a/packages/db/index.ts b/packages/db/index.ts new file mode 100644 index 000000000..df4d06cf0 --- /dev/null +++ b/packages/db/index.ts @@ -0,0 +1,13 @@ +import { drizzle } from "drizzle-orm/postgres-js"; +import type { PostgresJsDatabase } from "drizzle-orm/postgres-js"; +import * as schema from "./schema"; + +export const db = drizzle({ + connection: { + url: process.env.DATABASE_URL as string, + }, + schema, +}); + +export type DB = typeof db; +export type DBTransaction = PostgresJsDatabase; diff --git a/packages/db/migrations/0000_ambitious_ares.sql b/packages/db/migrations/0000_ambitious_ares.sql new file mode 100644 index 000000000..0740d7083 --- /dev/null +++ b/packages/db/migrations/0000_ambitious_ares.sql @@ -0,0 +1,544 @@ +CREATE TYPE "public"."AccessTokenType" AS ENUM('sig', 'doc', 'api', 'upd');--> statement-breakpoint +CREATE TYPE "public"."BankAccountTypeEnum" AS ENUM('CHECKING', 'SAVINGS');--> statement-breakpoint +CREATE TYPE "public"."CancellationBehaviorEnum" AS ENUM('RETIRE', 'RETURN_TO_POOL', 'HOLD_AS_CAPITAL_STOCK', 'DEFINED_PER_PLAN_SECURITY');--> statement-breakpoint +CREATE TYPE "public"."ConversionRightsEnum" AS ENUM('CONVERTS_TO_FUTURE_ROUND', 'CONVERTS_TO_SHARE_CLASS_ID');--> statement-breakpoint +CREATE TYPE "public"."ConvertibleInterestAccrualEnum" AS ENUM('DAILY', 'MONTHLY', 'SEMI_ANNUALLY', 'ANNUALLY', 'YEARLY', 'CONTINUOUSLY');--> statement-breakpoint +CREATE TYPE "public"."ConvertibleInterestMethodEnum" AS ENUM('SIMPLE', 'COMPOUND');--> statement-breakpoint +CREATE TYPE "public"."ConvertibleInterestPaymentScheduleEnum" AS ENUM('DEFERRED', 'PAY_AT_MATURITY');--> statement-breakpoint +CREATE TYPE "public"."ConvertibleStatusEnum" AS ENUM('DRAFT', 'ACTIVE', 'PENDING', 'EXPIRED', 'CANCELLED');--> statement-breakpoint +CREATE TYPE "public"."ConvertibleTypeEnum" AS ENUM('CCD', 'OCD', 'NOTE');--> statement-breakpoint +CREATE TYPE "public"."CredentialDeviceTypeEnum" AS ENUM('SINGLE_DEVICE', 'MULTI_DEVICE');--> statement-breakpoint +CREATE TYPE "public"."EsignRecipientStatus" AS ENUM('SENT', 'SIGNED', 'PENDING');--> statement-breakpoint +CREATE TYPE "public"."FieldTypes" AS ENUM('TEXT', 'RADIO', 'EMAIL', 'DATE', 'DATETIME', 'TEXTAREA', 'CHECKBOX', 'SIGNATURE', 'SELECT');--> statement-breakpoint +CREATE TYPE "public"."MemberStatusEnum" AS ENUM('ACTIVE', 'INACTIVE', 'PENDING');--> statement-breakpoint +CREATE TYPE "public"."OptionStatusEnum" AS ENUM('DRAFT', 'ACTIVE', 'EXERCISED', 'EXPIRED', 'CANCELLED');--> statement-breakpoint +CREATE TYPE "public"."OptionTypeEnum" AS ENUM('ISO', 'NSO', 'RSU');--> statement-breakpoint +CREATE TYPE "public"."PricingPlanInterval" AS ENUM('day', 'week', 'month', 'year');--> statement-breakpoint +CREATE TYPE "public"."PricingType" AS ENUM('one_time', 'recurring');--> statement-breakpoint +CREATE TYPE "public"."Roles" AS ENUM('ADMIN', 'CUSTOM');--> statement-breakpoint +CREATE TYPE "public"."SafeStatusEnum" AS ENUM('DRAFT', 'ACTIVE', 'PENDING', 'EXPIRED', 'CANCELLED');--> statement-breakpoint +CREATE TYPE "public"."SafeTemplateEnum" AS ENUM('POST_MONEY_CAP', 'POST_MONEY_DISCOUNT', 'POST_MONEY_MFN', 'POST_MONEY_CAP_WITH_PRO_RATA', 'POST_MONEY_DISCOUNT_WITH_PRO_RATA', 'POST_MONEY_MFN_WITH_PRO_RATA', 'CUSTOM');--> statement-breakpoint +CREATE TYPE "public"."SafeTypeEnum" AS ENUM('PRE_MONEY', 'POST_MONEY');--> statement-breakpoint +CREATE TYPE "public"."SecuritiesStatusEnum" AS ENUM('ACTIVE', 'DRAFT', 'SIGNED', 'PENDING');--> statement-breakpoint +CREATE TYPE "public"."ShareLegendsEnum" AS ENUM('US_SECURITIES_ACT', 'SALE_AND_ROFR', 'TRANSFER_RESTRICTIONS');--> statement-breakpoint +CREATE TYPE "public"."SharePrefixEnum" AS ENUM('CS', 'PS');--> statement-breakpoint +CREATE TYPE "public"."ShareTypeEnum" AS ENUM('COMMON', 'PREFERRED');--> statement-breakpoint +CREATE TYPE "public"."StakeholderRelationshipEnum" AS ENUM('ADVISOR', 'BOARD_MEMBER', 'CONSULTANT', 'EMPLOYEE', 'EX_ADVISOR', 'EX_CONSULTANT', 'EX_EMPLOYEE', 'EXECUTIVE', 'FOUNDER', 'INVESTOR', 'NON_US_EMPLOYEE', 'OFFICER', 'OTHER');--> statement-breakpoint +CREATE TYPE "public"."StakeholderTypeEnum" AS ENUM('INDIVIDUAL', 'INSTITUTION');--> statement-breakpoint +CREATE TYPE "public"."SubscriptionStatus" AS ENUM('trialing', 'active', 'canceled', 'incomplete', 'incomplete_expired', 'past_due', 'unpaid', 'paused');--> statement-breakpoint +CREATE TYPE "public"."TemplateStatus" AS ENUM('DRAFT', 'COMPLETE', 'SENT', 'WAITING', 'CANCELLED');--> statement-breakpoint +CREATE TYPE "public"."UpdateStatusEnum" AS ENUM('DRAFT', 'PUBLIC', 'PRIVATE');--> statement-breakpoint +CREATE TABLE "cap_accounts" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "user_id" varchar(191) NOT NULL, + "type" varchar(191) NOT NULL, + "provider" varchar(191) NOT NULL, + "provider_account_id" varchar(191) NOT NULL, + "refresh_token" varchar(191), + "access_token" varchar(191), + "expires_at" varchar(191), + "token_type" varchar(191), + "scope" varchar(191), + "id_token" varchar(191), + "session_state" varchar(191) +); +--> statement-breakpoint +CREATE TABLE "cap_sessions" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "session_token" varchar(191) NOT NULL, + "user_id" varchar(191) NOT NULL, + "expires" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_users" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "name" varchar(191), + "email" varchar(191), + "password" varchar(191), + "email_verified" timestamp with time zone, + "image" varchar(191), + "last_signed_in" timestamp with time zone NOT NULL, + "identity_provider" varchar(191) +); +--> statement-breakpoint +CREATE TABLE "cap_passkeys" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "name" varchar(191) NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone DEFAULT now() NOT NULL, + "last_used_at" timestamp with time zone, + "credential_id" varchar(191) NOT NULL, + "credential_public_key" varchar(191) NOT NULL, + "counter" bigint NOT NULL, + "credential_device_type" "CredentialDeviceTypeEnum" NOT NULL, + "credential_backed_up" boolean NOT NULL, + "transports" varchar(191)[] NOT NULL, + "user_id" varchar(191) NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_passkey_verification_tokens" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "token" varchar(191) NOT NULL, + "expires_at" timestamp with time zone NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + CONSTRAINT "cap_passkey_verification_tokens_token_unique" UNIQUE("token") +); +--> statement-breakpoint +CREATE TABLE "cap_password_reset_tokens" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "email" varchar(191) NOT NULL, + "token" varchar(191) NOT NULL, + "expires" timestamp with time zone NOT NULL, + CONSTRAINT "cap_password_reset_tokens_token_unique" UNIQUE("token") +); +--> statement-breakpoint +CREATE TABLE "cap_verification_tokens" ( + "id" integer PRIMARY KEY NOT NULL, + "secondary_id" varchar(191) NOT NULL, + "identifier" varchar(191) NOT NULL, + "token" varchar(191) NOT NULL, + "expires" timestamp with time zone NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "user_id" varchar(191), + CONSTRAINT "cap_verification_tokens_secondary_id_unique" UNIQUE("secondary_id"), + CONSTRAINT "cap_verification_tokens_token_unique" UNIQUE("token") +); +--> statement-breakpoint +CREATE TABLE "cap_companies" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "name" varchar(191) NOT NULL, + "logo" varchar(191), + "public_id" varchar(191) NOT NULL, + "website" varchar(191), + "incorporation_type" varchar(191) NOT NULL, + "incorporation_date" timestamp with time zone NOT NULL, + "incorporation_country" varchar(191) NOT NULL, + "incorporation_state" varchar(191) NOT NULL, + "street_address" varchar(191) NOT NULL, + "city" varchar(191) NOT NULL, + "state" varchar(191) NOT NULL, + "zipcode" varchar(191) NOT NULL, + "country" varchar(191) NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL, + CONSTRAINT "cap_companies_public_id_unique" UNIQUE("public_id") +); +--> statement-breakpoint +CREATE TABLE "cap_bank_accounts" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "beneficiary_name" varchar(191) NOT NULL, + "beneficiary_address" varchar(191) NOT NULL, + "bank_name" varchar(191) NOT NULL, + "bank_address" varchar(191) NOT NULL, + "account_number" varchar(191) NOT NULL, + "routing_number" varchar(191) NOT NULL, + "account_type" "BankAccountTypeEnum" DEFAULT 'CHECKING' NOT NULL, + "swift_code" varchar(191), + "primary" boolean DEFAULT false NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL, + "company_id" varchar(191) NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_custom_roles" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "name" varchar(191) NOT NULL, + "company_id" varchar(191) NOT NULL, + "permissions" varchar(191)[] +); +--> statement-breakpoint +CREATE TABLE "cap_members" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "title" varchar(191), + "status" "MemberStatusEnum" DEFAULT 'PENDING' NOT NULL, + "is_onboarded" boolean DEFAULT false NOT NULL, + "role" "Roles" DEFAULT 'ADMIN', + "work_email" varchar(191), + "last_accessed" timestamp with time zone DEFAULT now() NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL, + "user_id" varchar(191) NOT NULL, + "company_id" varchar(191) NOT NULL, + "custom_role_id" varchar(191) +); +--> statement-breakpoint +CREATE TABLE "cap_stakeholders" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "name" varchar(191) NOT NULL, + "email" varchar(191) NOT NULL, + "institution_name" varchar(191), + "stakeholder_type" "StakeholderTypeEnum" DEFAULT 'INDIVIDUAL' NOT NULL, + "current_relationship" "StakeholderRelationshipEnum" DEFAULT 'EMPLOYEE' NOT NULL, + "tax_id" varchar(191), + "street_address" varchar(191), + "city" varchar(191), + "state" varchar(191), + "zipcode" varchar(191), + "country" varchar(191) DEFAULT 'US' NOT NULL, + "company_id" varchar(191) NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL, + CONSTRAINT "cap_stakeholders_email_unique" UNIQUE("email") +); +--> statement-breakpoint +CREATE TABLE "cap_audits" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "company_id" varchar(191) NOT NULL, + "summary" varchar(191), + "action" varchar(191) NOT NULL, + "occurred_at" timestamp with time zone DEFAULT now() NOT NULL, + "actor" jsonb NOT NULL, + "target" jsonb[] NOT NULL, + "context" jsonb NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_share_classes" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "idx" integer NOT NULL, + "name" varchar(191) NOT NULL, + "class_type" "ShareTypeEnum" DEFAULT 'COMMON' NOT NULL, + "prefix" "SharePrefixEnum" DEFAULT 'CS' NOT NULL, + "initial_shares_authorized" bigint NOT NULL, + "board_approval_date" timestamp with time zone NOT NULL, + "stockholder_approval_date" timestamp with time zone NOT NULL, + "votes_per_share" integer NOT NULL, + "par_value" real NOT NULL, + "price_per_share" real NOT NULL, + "seniority" integer NOT NULL, + "conversion_rights" "ConversionRightsEnum" DEFAULT 'CONVERTS_TO_FUTURE_ROUND' NOT NULL, + "converts_to_share_class_id" varchar(191), + "liquidation_preference_multiple" real NOT NULL, + "participation_cap_multiple" real NOT NULL, + "company_id" varchar(191) NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_equity_plans" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "name" varchar(191) NOT NULL, + "board_approval_date" timestamp with time zone NOT NULL, + "plan_effective_date" timestamp with time zone, + "initial_shares_reserved" bigint NOT NULL, + "default_cancellaton_behavior" "CancellationBehaviorEnum" NOT NULL, + "comments" varchar(191), + "company_id" varchar(191) NOT NULL, + "share_class_id" varchar(191) NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_buckets" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "name" varchar(191) NOT NULL, + "key" varchar(191) NOT NULL, + "mime_type" varchar(191) NOT NULL, + "size" integer NOT NULL, + "tags" varchar(191)[] NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_document_shares" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "link" varchar(191) NOT NULL, + "public_id" varchar(191) NOT NULL, + "link_expires_at" timestamp with time zone NOT NULL, + "recipients" varchar(191)[] DEFAULT '{}' NOT NULL, + "email_protected" boolean DEFAULT false NOT NULL, + "document_id" varchar(191) NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_documents" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "public_id" varchar(191) NOT NULL, + "name" varchar(191) NOT NULL, + "bucket_id" varchar(191) NOT NULL, + "uploader_id" varchar(191), + "company_id" varchar(191) NOT NULL, + "share_id" varchar(191), + "option_id" varchar(191), + "safe_id" varchar(191), + "convertible_note_id" varchar(191), + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL, + CONSTRAINT "cap_documents_public_id_unique" UNIQUE("public_id") +); +--> statement-breakpoint +CREATE TABLE "cap_data_room_documents" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "data_room_id" varchar(191) NOT NULL, + "document_id" varchar(191) NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_data_room_recipients" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "name" varchar(191), + "email" varchar(191) NOT NULL, + "data_room_id" varchar(191) NOT NULL, + "member_id" varchar(191), + "stakeholder_id" varchar(191), + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_data_rooms" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "name" varchar(191) NOT NULL, + "public_id" varchar(191) NOT NULL, + "public" boolean DEFAULT false NOT NULL, + "company_id" varchar(191) NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL, + CONSTRAINT "cap_data_rooms_public_id_unique" UNIQUE("public_id") +); +--> statement-breakpoint +CREATE TABLE "cap_update_recipients" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "name" varchar(191), + "email" varchar(191) NOT NULL, + "update_id" varchar(191) NOT NULL, + "member_id" varchar(191), + "stakeholder_id" varchar(191), + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_esign_recipients" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "email" varchar(191) NOT NULL, + "name" varchar(191), + "template_id" varchar(191) NOT NULL, + "status" "EsignRecipientStatus" DEFAULT 'PENDING' NOT NULL, + "member_id" varchar(191), + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_template_fields" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "name" varchar(191) NOT NULL, + "type" "FieldTypes" DEFAULT 'TEXT' NOT NULL, + "default_value" varchar(191) DEFAULT '' NOT NULL, + "read_only" boolean DEFAULT false NOT NULL, + "required" boolean DEFAULT false NOT NULL, + "prefilled_value" varchar(191), + "top" integer NOT NULL, + "left" integer NOT NULL, + "width" integer NOT NULL, + "height" integer NOT NULL, + "recipient_id" varchar(191) NOT NULL, + "template_id" varchar(191) NOT NULL, + "viewport_height" integer NOT NULL, + "viewport_width" integer NOT NULL, + "page" integer NOT NULL, + "meta" jsonb DEFAULT '{}' NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_templates" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "public_id" varchar(191) NOT NULL, + "name" varchar(191) NOT NULL, + "status" "TemplateStatus" DEFAULT 'DRAFT' NOT NULL, + "ordered_delivery" boolean DEFAULT false NOT NULL, + "message" varchar(191), + "bucket_id" varchar(191) NOT NULL, + "uploader_id" varchar(191) NOT NULL, + "company_id" varchar(191) NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL, + "completed_on" timestamp with time zone +); +--> statement-breakpoint +CREATE TABLE "cap_shares" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "status" "SecuritiesStatusEnum" DEFAULT 'DRAFT' NOT NULL, + "certificate_id" varchar(191) NOT NULL, + "quantity" integer NOT NULL, + "price_per_share" real, + "capital_contribution" real, + "ip_contribution" real, + "debt_cancelled" real, + "other_contributions" real, + "cliff_years" integer DEFAULT 0 NOT NULL, + "vesting_years" integer DEFAULT 0 NOT NULL, + "company_legends" "ShareLegendsEnum"[] DEFAULT '{}' NOT NULL, + "issue_date" timestamp with time zone NOT NULL, + "rule_144_date" timestamp with time zone, + "vesting_start_date" timestamp with time zone, + "board_approval_date" timestamp with time zone NOT NULL, + "stakeholder_id" varchar(191) NOT NULL, + "company_id" varchar(191) NOT NULL, + "share_class_id" varchar(191) NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_options" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "grant_id" varchar(191) NOT NULL, + "quantity" integer NOT NULL, + "exercise_price" real NOT NULL, + "type" "OptionTypeEnum" NOT NULL, + "status" "OptionStatusEnum" DEFAULT 'DRAFT' NOT NULL, + "cliff_years" integer DEFAULT 0 NOT NULL, + "vesting_years" integer DEFAULT 0 NOT NULL, + "issue_date" timestamp with time zone NOT NULL, + "expiration_date" timestamp with time zone NOT NULL, + "vesting_start_date" timestamp with time zone NOT NULL, + "board_approval_date" timestamp with time zone NOT NULL, + "rule_144_date" timestamp with time zone NOT NULL, + "stakeholder_id" varchar(191) NOT NULL, + "company_id" varchar(191) NOT NULL, + "equity_plan_id" varchar(191) NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_investments" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "amount" real NOT NULL, + "shares" bigint NOT NULL, + "date" timestamp with time zone NOT NULL, + "comments" varchar(191), + "share_class_id" varchar(191) NOT NULL, + "company_id" varchar(191) NOT NULL, + "stakeholder_id" varchar(191) NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_safes" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "public_id" varchar(191) NOT NULL, + "type" "SafeTypeEnum" DEFAULT 'POST_MONEY' NOT NULL, + "status" "SafeStatusEnum" DEFAULT 'DRAFT' NOT NULL, + "capital" real NOT NULL, + "safe_template" "SafeTemplateEnum", + "safe_id" varchar(191), + "valuation_cap" real, + "discount_rate" real, + "mfn" boolean DEFAULT false NOT NULL, + "pro_rata" boolean DEFAULT false NOT NULL, + "additional_terms" varchar(191), + "stakeholder_id" varchar(191) NOT NULL, + "company_id" varchar(191) NOT NULL, + "issue_date" timestamp with time zone NOT NULL, + "board_approval_date" timestamp with time zone NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_convertible_notes" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "public_id" varchar(191) NOT NULL, + "status" "ConvertibleStatusEnum" DEFAULT 'DRAFT' NOT NULL, + "type" "ConvertibleTypeEnum" DEFAULT 'NOTE' NOT NULL, + "capital" real NOT NULL, + "conversion_cap" real, + "discount_rate" real, + "mfn" boolean, + "additional_terms" varchar(191), + "interest_rate" real, + "interest_method" "ConvertibleInterestMethodEnum", + "interest_accrual" "ConvertibleInterestAccrualEnum", + "interest_payment_schedule" "ConvertibleInterestPaymentScheduleEnum", + "stakeholder_id" varchar(191) NOT NULL, + "company_id" varchar(191) NOT NULL, + "issue_date" timestamp with time zone NOT NULL, + "board_approval_date" timestamp with time zone NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_esign_audits" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "company_id" varchar(191) NOT NULL, + "template_id" varchar(191) NOT NULL, + "recipient_id" varchar(191), + "action" varchar(191) NOT NULL, + "ip" varchar(191) NOT NULL, + "user_agent" varchar(191) NOT NULL, + "location" varchar(191) NOT NULL, + "summary" varchar(191) NOT NULL, + "occurred_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_updates" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "public_id" varchar(191) NOT NULL, + "title" varchar(191) NOT NULL, + "content" jsonb NOT NULL, + "html" varchar(191) NOT NULL, + "public" boolean DEFAULT false NOT NULL, + "status" "UpdateStatusEnum" DEFAULT 'DRAFT' NOT NULL, + "author_id" varchar(191) NOT NULL, + "company_id" varchar(191) NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL, + CONSTRAINT "cap_updates_public_id_unique" UNIQUE("public_id") +); +--> statement-breakpoint +CREATE TABLE "cap_billing_customers" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "company_id" varchar(191) +); +--> statement-breakpoint +CREATE TABLE "cap_billing_prices" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "product_id" varchar(191) NOT NULL, + "active" boolean NOT NULL, + "description" varchar(191), + "unit_amount" bigint, + "currency" varchar(3) NOT NULL, + "type" "PricingType" NOT NULL, + "interval" "PricingPlanInterval", + "interval_count" integer, + "trial_period_days" integer, + "metadata" jsonb +); +--> statement-breakpoint +CREATE TABLE "cap_billing_products" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "active" boolean NOT NULL, + "name" varchar(191) NOT NULL, + "description" varchar(191), + "metadata" jsonb +); +--> statement-breakpoint +CREATE TABLE "cap_billing_subscriptions" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "price_id" varchar(191) NOT NULL, + "quantity" integer NOT NULL, + "status" "SubscriptionStatus" NOT NULL, + "cancel_at_period_end" boolean NOT NULL, + "created" timestamp with time zone DEFAULT now() NOT NULL, + "current_period_start" timestamp with time zone DEFAULT now() NOT NULL, + "current_period_end" timestamp with time zone DEFAULT now() NOT NULL, + "ended_at" timestamp with time zone, + "cancel_at" timestamp with time zone, + "canceled_at" timestamp with time zone, + "trial_start" timestamp with time zone, + "trial_end" timestamp with time zone, + "metadata" jsonb, + "customer_id" varchar(191) NOT NULL +); +--> statement-breakpoint +CREATE TABLE "cap_access_tokens" ( + "id" varchar(191) PRIMARY KEY NOT NULL, + "active" boolean DEFAULT true NOT NULL, + "client_id" varchar(191) NOT NULL, + "client_secret" varchar(191) NOT NULL, + "type_enum" "AccessTokenType" DEFAULT 'api' NOT NULL, + "user_id" varchar(191) NOT NULL, + "expires_at" timestamp with time zone, + "last_used" timestamp with time zone, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone NOT NULL +); diff --git a/packages/db/migrations/0001_woozy_blizzard.sql b/packages/db/migrations/0001_woozy_blizzard.sql new file mode 100644 index 000000000..48fff682a --- /dev/null +++ b/packages/db/migrations/0001_woozy_blizzard.sql @@ -0,0 +1,80 @@ +CREATE TYPE "public"."AuditAction" AS ENUM('CREATE', 'UPDATE', 'DELETE');--> statement-breakpoint +CREATE INDEX "accounts_user_id_idx" ON "cap_accounts" USING btree ("user_id");--> statement-breakpoint +CREATE UNIQUE INDEX "accounts_provider_provider_account_id_idx" ON "cap_accounts" USING btree ("provider","provider_account_id");--> statement-breakpoint +CREATE UNIQUE INDEX "sessions_session_token_idx" ON "cap_sessions" USING btree ("session_token");--> statement-breakpoint +CREATE INDEX "sessions_user_id_idx" ON "cap_sessions" USING btree ("user_id");--> statement-breakpoint +CREATE UNIQUE INDEX "users_email_idx" ON "cap_users" USING btree ("email");--> statement-breakpoint +CREATE INDEX "passkeys_user_id_idx" ON "cap_passkeys" USING btree ("user_id");--> statement-breakpoint +CREATE UNIQUE INDEX "password_reset_tokens_email_token_idx" ON "cap_password_reset_tokens" USING btree ("email","token");--> statement-breakpoint +CREATE UNIQUE INDEX "verification_tokens_identifier_token_idx" ON "cap_verification_tokens" USING btree ("identifier","token");--> statement-breakpoint +CREATE INDEX "verification_tokens_user_id_idx" ON "cap_verification_tokens" USING btree ("user_id");--> statement-breakpoint +CREATE UNIQUE INDEX "companies_public_id_unique" ON "cap_companies" USING btree ("public_id");--> statement-breakpoint +CREATE INDEX "bank_accounts_company_id_idx" ON "cap_bank_accounts" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "custom_roles_company_id_idx" ON "cap_custom_roles" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "members_company_id_idx" ON "cap_members" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "members_status_idx" ON "cap_members" USING btree ("status");--> statement-breakpoint +CREATE INDEX "members_user_id_idx" ON "cap_members" USING btree ("user_id");--> statement-breakpoint +CREATE INDEX "members_custom_role_id_idx" ON "cap_members" USING btree ("custom_role_id");--> statement-breakpoint +CREATE UNIQUE INDEX "members_company_id_user_id_unique" ON "cap_members" USING btree ("company_id","user_id");--> statement-breakpoint +CREATE INDEX "stakeholders_company_id_idx" ON "cap_stakeholders" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "audits_company_id_idx" ON "cap_audits" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "share_classes_company_id_idx" ON "cap_share_classes" USING btree ("company_id");--> statement-breakpoint +CREATE UNIQUE INDEX "share_classes_company_id_idx_unique" ON "cap_share_classes" USING btree ("company_id","idx");--> statement-breakpoint +CREATE INDEX "equity_plans_share_class_id_idx" ON "cap_equity_plans" USING btree ("share_class_id");--> statement-breakpoint +CREATE INDEX "equity_plans_company_id_idx" ON "cap_equity_plans" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "document_shares_document_id_idx" ON "cap_document_shares" USING btree ("document_id");--> statement-breakpoint +CREATE INDEX "documents_bucket_id_idx" ON "cap_documents" USING btree ("bucket_id");--> statement-breakpoint +CREATE INDEX "documents_uploader_id_idx" ON "cap_documents" USING btree ("uploader_id");--> statement-breakpoint +CREATE INDEX "documents_company_id_idx" ON "cap_documents" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "documents_share_id_idx" ON "cap_documents" USING btree ("share_id");--> statement-breakpoint +CREATE INDEX "documents_option_id_idx" ON "cap_documents" USING btree ("option_id");--> statement-breakpoint +CREATE INDEX "documents_safe_id_idx" ON "cap_documents" USING btree ("safe_id");--> statement-breakpoint +CREATE INDEX "documents_convertible_note_id_idx" ON "cap_documents" USING btree ("convertible_note_id");--> statement-breakpoint +CREATE INDEX "data_room_documents_data_room_id_idx" ON "cap_data_room_documents" USING btree ("data_room_id");--> statement-breakpoint +CREATE INDEX "data_room_documents_document_id_idx" ON "cap_data_room_documents" USING btree ("document_id");--> statement-breakpoint +CREATE UNIQUE INDEX "data_room_documents_data_room_id_document_id_unique" ON "cap_data_room_documents" USING btree ("data_room_id","document_id");--> statement-breakpoint +CREATE INDEX "data_room_recipients_id_data_room_id_idx" ON "cap_data_room_recipients" USING btree ("id","data_room_id");--> statement-breakpoint +CREATE INDEX "data_room_recipients_member_id_idx" ON "cap_data_room_recipients" USING btree ("member_id");--> statement-breakpoint +CREATE INDEX "data_room_recipients_data_room_id_idx" ON "cap_data_room_recipients" USING btree ("data_room_id");--> statement-breakpoint +CREATE INDEX "data_room_recipients_stakeholder_id_idx" ON "cap_data_room_recipients" USING btree ("stakeholder_id");--> statement-breakpoint +CREATE UNIQUE INDEX "data_room_recipients_data_room_id_email_unique" ON "cap_data_room_recipients" USING btree ("data_room_id","email");--> statement-breakpoint +CREATE INDEX "data_rooms_public_id_idx" ON "cap_data_rooms" USING btree ("public_id");--> statement-breakpoint +CREATE INDEX "data_rooms_company_id_idx" ON "cap_data_rooms" USING btree ("company_id");--> statement-breakpoint +CREATE UNIQUE INDEX "data_rooms_company_id_name_unique" ON "cap_data_rooms" USING btree ("company_id","name");--> statement-breakpoint +CREATE INDEX "update_recipients_id_update_id_idx" ON "cap_update_recipients" USING btree ("id","update_id");--> statement-breakpoint +CREATE INDEX "update_recipients_member_id_idx" ON "cap_update_recipients" USING btree ("member_id");--> statement-breakpoint +CREATE INDEX "update_recipients_update_id_idx" ON "cap_update_recipients" USING btree ("update_id");--> statement-breakpoint +CREATE INDEX "update_recipients_stakeholder_id_idx" ON "cap_update_recipients" USING btree ("stakeholder_id");--> statement-breakpoint +CREATE UNIQUE INDEX "update_recipients_update_id_email_unique" ON "cap_update_recipients" USING btree ("update_id","email");--> statement-breakpoint +CREATE INDEX "esign_recipients_member_id_idx" ON "cap_esign_recipients" USING btree ("member_id");--> statement-breakpoint +CREATE INDEX "esign_recipients_template_id_idx" ON "cap_esign_recipients" USING btree ("template_id");--> statement-breakpoint +CREATE INDEX "template_fields_template_id_idx" ON "cap_template_fields" USING btree ("template_id");--> statement-breakpoint +CREATE INDEX "template_fields_recipient_id_idx" ON "cap_template_fields" USING btree ("recipient_id");--> statement-breakpoint +CREATE INDEX "templates_bucket_id_idx" ON "cap_templates" USING btree ("bucket_id");--> statement-breakpoint +CREATE INDEX "templates_uploader_id_idx" ON "cap_templates" USING btree ("uploader_id");--> statement-breakpoint +CREATE INDEX "templates_company_id_idx" ON "cap_templates" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "shares_company_id_idx" ON "cap_shares" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "shares_stakeholder_id_idx" ON "cap_shares" USING btree ("stakeholder_id");--> statement-breakpoint +CREATE INDEX "shares_share_class_id_idx" ON "cap_shares" USING btree ("share_class_id");--> statement-breakpoint +CREATE INDEX "options_company_id_idx" ON "cap_options" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "options_equity_plan_id_idx" ON "cap_options" USING btree ("equity_plan_id");--> statement-breakpoint +CREATE INDEX "options_stakeholder_id_idx" ON "cap_options" USING btree ("stakeholder_id");--> statement-breakpoint +CREATE INDEX "investments_company_id_idx" ON "cap_investments" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "investments_share_class_id_idx" ON "cap_investments" USING btree ("share_class_id");--> statement-breakpoint +CREATE INDEX "investments_stakeholder_id_idx" ON "cap_investments" USING btree ("stakeholder_id");--> statement-breakpoint +CREATE INDEX "safes_company_id_idx" ON "cap_safes" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "safes_stakeholder_id_idx" ON "cap_safes" USING btree ("stakeholder_id");--> statement-breakpoint +CREATE INDEX "convertible_notes_company_id_idx" ON "cap_convertible_notes" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "convertible_notes_stakeholder_id_idx" ON "cap_convertible_notes" USING btree ("stakeholder_id");--> statement-breakpoint +CREATE INDEX "esign_audits_company_id_idx" ON "cap_esign_audits" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "esign_audits_template_id_idx" ON "cap_esign_audits" USING btree ("template_id");--> statement-breakpoint +CREATE INDEX "esign_audits_recipient_id_idx" ON "cap_esign_audits" USING btree ("recipient_id");--> statement-breakpoint +CREATE INDEX "updates_public_id_idx" ON "cap_updates" USING btree ("public_id");--> statement-breakpoint +CREATE INDEX "updates_author_id_idx" ON "cap_updates" USING btree ("author_id");--> statement-breakpoint +CREATE INDEX "updates_company_id_idx" ON "cap_updates" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "billing_customers_company_id_idx" ON "cap_billing_customers" USING btree ("company_id");--> statement-breakpoint +CREATE INDEX "billing_prices_product_id_idx" ON "cap_billing_prices" USING btree ("product_id");--> statement-breakpoint +CREATE INDEX "billing_subscriptions_price_id_idx" ON "cap_billing_subscriptions" USING btree ("price_id");--> statement-breakpoint +CREATE INDEX "billing_subscriptions_customer_id_idx" ON "cap_billing_subscriptions" USING btree ("customer_id");--> statement-breakpoint +CREATE INDEX "access_tokens_user_id_idx" ON "cap_access_tokens" USING btree ("user_id");--> statement-breakpoint +CREATE INDEX "access_tokens_type_enum_client_id_idx" ON "cap_access_tokens" USING btree ("type_enum","client_id"); \ No newline at end of file diff --git a/packages/db/migrations/meta/0000_snapshot.json b/packages/db/migrations/meta/0000_snapshot.json new file mode 100644 index 000000000..feaf1f518 --- /dev/null +++ b/packages/db/migrations/meta/0000_snapshot.json @@ -0,0 +1,3229 @@ +{ + "id": "c31778e5-7dca-4d58-a5f7-2554a4dc0fd9", + "prevId": "00000000-0000-0000-0000-000000000000", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.cap_accounts": { + "name": "cap_accounts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "refresh_token": { + "name": "refresh_token", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "access_token": { + "name": "access_token", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "token_type": { + "name": "token_type", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "scope": { + "name": "scope", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "id_token": { + "name": "id_token", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "session_state": { + "name": "session_state", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_sessions": { + "name": "cap_sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "session_token": { + "name": "session_token", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "expires": { + "name": "expires", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_users": { + "name": "cap_users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "password": { + "name": "password", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "email_verified": { + "name": "email_verified", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "image": { + "name": "image", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "last_signed_in": { + "name": "last_signed_in", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "identity_provider": { + "name": "identity_provider", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_passkeys": { + "name": "cap_passkeys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "credential_id": { + "name": "credential_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "credential_public_key": { + "name": "credential_public_key", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "counter": { + "name": "counter", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "credential_device_type": { + "name": "credential_device_type", + "type": "CredentialDeviceTypeEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "credential_backed_up": { + "name": "credential_backed_up", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "transports": { + "name": "transports", + "type": "varchar(191)[]", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_passkey_verification_tokens": { + "name": "cap_passkey_verification_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "token": { + "name": "token", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_passkey_verification_tokens_token_unique": { + "name": "cap_passkey_verification_tokens_token_unique", + "nullsNotDistinct": false, + "columns": ["token"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_password_reset_tokens": { + "name": "cap_password_reset_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "email": { + "name": "email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "expires": { + "name": "expires", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_password_reset_tokens_token_unique": { + "name": "cap_password_reset_tokens_token_unique", + "nullsNotDistinct": false, + "columns": ["token"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_verification_tokens": { + "name": "cap_verification_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true + }, + "secondary_id": { + "name": "secondary_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "identifier": { + "name": "identifier", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "expires": { + "name": "expires", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "user_id": { + "name": "user_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_verification_tokens_secondary_id_unique": { + "name": "cap_verification_tokens_secondary_id_unique", + "nullsNotDistinct": false, + "columns": ["secondary_id"] + }, + "cap_verification_tokens_token_unique": { + "name": "cap_verification_tokens_token_unique", + "nullsNotDistinct": false, + "columns": ["token"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_companies": { + "name": "cap_companies", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "logo": { + "name": "logo", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "website": { + "name": "website", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "incorporation_type": { + "name": "incorporation_type", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "incorporation_date": { + "name": "incorporation_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "incorporation_country": { + "name": "incorporation_country", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "incorporation_state": { + "name": "incorporation_state", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "street_address": { + "name": "street_address", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "city": { + "name": "city", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "state": { + "name": "state", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "zipcode": { + "name": "zipcode", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "country": { + "name": "country", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_companies_public_id_unique": { + "name": "cap_companies_public_id_unique", + "nullsNotDistinct": false, + "columns": ["public_id"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_bank_accounts": { + "name": "cap_bank_accounts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "beneficiary_name": { + "name": "beneficiary_name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "beneficiary_address": { + "name": "beneficiary_address", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "bank_name": { + "name": "bank_name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "bank_address": { + "name": "bank_address", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "account_number": { + "name": "account_number", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "routing_number": { + "name": "routing_number", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "account_type": { + "name": "account_type", + "type": "BankAccountTypeEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'CHECKING'" + }, + "swift_code": { + "name": "swift_code", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "primary": { + "name": "primary", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_custom_roles": { + "name": "cap_custom_roles", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "permissions": { + "name": "permissions", + "type": "varchar(191)[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_members": { + "name": "cap_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "MemberStatusEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'PENDING'" + }, + "is_onboarded": { + "name": "is_onboarded", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "role": { + "name": "role", + "type": "Roles", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'ADMIN'" + }, + "work_email": { + "name": "work_email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "last_accessed": { + "name": "last_accessed", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "custom_role_id": { + "name": "custom_role_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_stakeholders": { + "name": "cap_stakeholders", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "email": { + "name": "email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "institution_name": { + "name": "institution_name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "stakeholder_type": { + "name": "stakeholder_type", + "type": "StakeholderTypeEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'INDIVIDUAL'" + }, + "current_relationship": { + "name": "current_relationship", + "type": "StakeholderRelationshipEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'EMPLOYEE'" + }, + "tax_id": { + "name": "tax_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "street_address": { + "name": "street_address", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "city": { + "name": "city", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "state": { + "name": "state", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "zipcode": { + "name": "zipcode", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "country": { + "name": "country", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true, + "default": "'US'" + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_stakeholders_email_unique": { + "name": "cap_stakeholders_email_unique", + "nullsNotDistinct": false, + "columns": ["email"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_audits": { + "name": "cap_audits", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "summary": { + "name": "summary", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "action": { + "name": "action", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "occurred_at": { + "name": "occurred_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "actor": { + "name": "actor", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "target": { + "name": "target", + "type": "jsonb[]", + "primaryKey": false, + "notNull": true + }, + "context": { + "name": "context", + "type": "jsonb", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_share_classes": { + "name": "cap_share_classes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "idx": { + "name": "idx", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "class_type": { + "name": "class_type", + "type": "ShareTypeEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'COMMON'" + }, + "prefix": { + "name": "prefix", + "type": "SharePrefixEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'CS'" + }, + "initial_shares_authorized": { + "name": "initial_shares_authorized", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "board_approval_date": { + "name": "board_approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "stockholder_approval_date": { + "name": "stockholder_approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "votes_per_share": { + "name": "votes_per_share", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "par_value": { + "name": "par_value", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "price_per_share": { + "name": "price_per_share", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "seniority": { + "name": "seniority", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "conversion_rights": { + "name": "conversion_rights", + "type": "ConversionRightsEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'CONVERTS_TO_FUTURE_ROUND'" + }, + "converts_to_share_class_id": { + "name": "converts_to_share_class_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "liquidation_preference_multiple": { + "name": "liquidation_preference_multiple", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "participation_cap_multiple": { + "name": "participation_cap_multiple", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_equity_plans": { + "name": "cap_equity_plans", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "board_approval_date": { + "name": "board_approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "plan_effective_date": { + "name": "plan_effective_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "initial_shares_reserved": { + "name": "initial_shares_reserved", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "default_cancellaton_behavior": { + "name": "default_cancellaton_behavior", + "type": "CancellationBehaviorEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "comments": { + "name": "comments", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "share_class_id": { + "name": "share_class_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_buckets": { + "name": "cap_buckets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "mime_type": { + "name": "mime_type", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "size": { + "name": "size", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "tags": { + "name": "tags", + "type": "varchar(191)[]", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_document_shares": { + "name": "cap_document_shares", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "link": { + "name": "link", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "link_expires_at": { + "name": "link_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "recipients": { + "name": "recipients", + "type": "varchar(191)[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'" + }, + "email_protected": { + "name": "email_protected", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "document_id": { + "name": "document_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_documents": { + "name": "cap_documents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "bucket_id": { + "name": "bucket_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "uploader_id": { + "name": "uploader_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "share_id": { + "name": "share_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "option_id": { + "name": "option_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "safe_id": { + "name": "safe_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "convertible_note_id": { + "name": "convertible_note_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_documents_public_id_unique": { + "name": "cap_documents_public_id_unique", + "nullsNotDistinct": false, + "columns": ["public_id"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_data_room_documents": { + "name": "cap_data_room_documents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "data_room_id": { + "name": "data_room_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "document_id": { + "name": "document_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_data_room_recipients": { + "name": "cap_data_room_recipients", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "data_room_id": { + "name": "data_room_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "member_id": { + "name": "member_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "stakeholder_id": { + "name": "stakeholder_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_data_rooms": { + "name": "cap_data_rooms", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "public": { + "name": "public", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_data_rooms_public_id_unique": { + "name": "cap_data_rooms_public_id_unique", + "nullsNotDistinct": false, + "columns": ["public_id"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_update_recipients": { + "name": "cap_update_recipients", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "update_id": { + "name": "update_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "member_id": { + "name": "member_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "stakeholder_id": { + "name": "stakeholder_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_esign_recipients": { + "name": "cap_esign_recipients", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "email": { + "name": "email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "template_id": { + "name": "template_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "EsignRecipientStatus", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'PENDING'" + }, + "member_id": { + "name": "member_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_template_fields": { + "name": "cap_template_fields", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "FieldTypes", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'TEXT'" + }, + "default_value": { + "name": "default_value", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "read_only": { + "name": "read_only", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "required": { + "name": "required", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "prefilled_value": { + "name": "prefilled_value", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "top": { + "name": "top", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "left": { + "name": "left", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "height": { + "name": "height", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "recipient_id": { + "name": "recipient_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "template_id": { + "name": "template_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "viewport_height": { + "name": "viewport_height", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "viewport_width": { + "name": "viewport_width", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "page": { + "name": "page", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "meta": { + "name": "meta", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_templates": { + "name": "cap_templates", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "TemplateStatus", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "ordered_delivery": { + "name": "ordered_delivery", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "message": { + "name": "message", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "bucket_id": { + "name": "bucket_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "uploader_id": { + "name": "uploader_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "completed_on": { + "name": "completed_on", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_shares": { + "name": "cap_shares", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "status": { + "name": "status", + "type": "SecuritiesStatusEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "certificate_id": { + "name": "certificate_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "price_per_share": { + "name": "price_per_share", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "capital_contribution": { + "name": "capital_contribution", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "ip_contribution": { + "name": "ip_contribution", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "debt_cancelled": { + "name": "debt_cancelled", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "other_contributions": { + "name": "other_contributions", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "cliff_years": { + "name": "cliff_years", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "vesting_years": { + "name": "vesting_years", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "company_legends": { + "name": "company_legends", + "type": "ShareLegendsEnum[]", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'{}'" + }, + "issue_date": { + "name": "issue_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "rule_144_date": { + "name": "rule_144_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "vesting_start_date": { + "name": "vesting_start_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "board_approval_date": { + "name": "board_approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "stakeholder_id": { + "name": "stakeholder_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "share_class_id": { + "name": "share_class_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_options": { + "name": "cap_options", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "grant_id": { + "name": "grant_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "exercise_price": { + "name": "exercise_price", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "OptionTypeEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "OptionStatusEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "cliff_years": { + "name": "cliff_years", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "vesting_years": { + "name": "vesting_years", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "issue_date": { + "name": "issue_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "expiration_date": { + "name": "expiration_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "vesting_start_date": { + "name": "vesting_start_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "board_approval_date": { + "name": "board_approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "rule_144_date": { + "name": "rule_144_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "stakeholder_id": { + "name": "stakeholder_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "equity_plan_id": { + "name": "equity_plan_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_investments": { + "name": "cap_investments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "amount": { + "name": "amount", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "shares": { + "name": "shares", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "date": { + "name": "date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "comments": { + "name": "comments", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "share_class_id": { + "name": "share_class_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "stakeholder_id": { + "name": "stakeholder_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_safes": { + "name": "cap_safes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "SafeTypeEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'POST_MONEY'" + }, + "status": { + "name": "status", + "type": "SafeStatusEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "capital": { + "name": "capital", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "safe_template": { + "name": "safe_template", + "type": "SafeTemplateEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "safe_id": { + "name": "safe_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "valuation_cap": { + "name": "valuation_cap", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "discount_rate": { + "name": "discount_rate", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "mfn": { + "name": "mfn", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "pro_rata": { + "name": "pro_rata", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "additional_terms": { + "name": "additional_terms", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "stakeholder_id": { + "name": "stakeholder_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "issue_date": { + "name": "issue_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "board_approval_date": { + "name": "board_approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_convertible_notes": { + "name": "cap_convertible_notes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "ConvertibleStatusEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "type": { + "name": "type", + "type": "ConvertibleTypeEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'NOTE'" + }, + "capital": { + "name": "capital", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "conversion_cap": { + "name": "conversion_cap", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "discount_rate": { + "name": "discount_rate", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "mfn": { + "name": "mfn", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "additional_terms": { + "name": "additional_terms", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "interest_rate": { + "name": "interest_rate", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "interest_method": { + "name": "interest_method", + "type": "ConvertibleInterestMethodEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "interest_accrual": { + "name": "interest_accrual", + "type": "ConvertibleInterestAccrualEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "interest_payment_schedule": { + "name": "interest_payment_schedule", + "type": "ConvertibleInterestPaymentScheduleEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "stakeholder_id": { + "name": "stakeholder_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "issue_date": { + "name": "issue_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "board_approval_date": { + "name": "board_approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_esign_audits": { + "name": "cap_esign_audits", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "template_id": { + "name": "template_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "recipient_id": { + "name": "recipient_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "action": { + "name": "action", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "ip": { + "name": "ip", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "user_agent": { + "name": "user_agent", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "location": { + "name": "location", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "summary": { + "name": "summary", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "occurred_at": { + "name": "occurred_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_updates": { + "name": "cap_updates", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "html": { + "name": "html", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "public": { + "name": "public", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "status": { + "name": "status", + "type": "UpdateStatusEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "author_id": { + "name": "author_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_updates_public_id_unique": { + "name": "cap_updates_public_id_unique", + "nullsNotDistinct": false, + "columns": ["public_id"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_billing_customers": { + "name": "cap_billing_customers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_billing_prices": { + "name": "cap_billing_prices", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "product_id": { + "name": "product_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "unit_amount": { + "name": "unit_amount", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "PricingType", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "interval": { + "name": "interval", + "type": "PricingPlanInterval", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "interval_count": { + "name": "interval_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "trial_period_days": { + "name": "trial_period_days", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_billing_products": { + "name": "cap_billing_products", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_billing_subscriptions": { + "name": "cap_billing_subscriptions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "price_id": { + "name": "price_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "SubscriptionStatus", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "cancel_at_period_end": { + "name": "cancel_at_period_end", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "created": { + "name": "created", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "current_period_start": { + "name": "current_period_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "current_period_end": { + "name": "current_period_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "ended_at": { + "name": "ended_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "cancel_at": { + "name": "cancel_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "canceled_at": { + "name": "canceled_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_start": { + "name": "trial_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_end": { + "name": "trial_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "customer_id": { + "name": "customer_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_access_tokens": { + "name": "cap_access_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "client_id": { + "name": "client_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "client_secret": { + "name": "client_secret", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "type_enum": { + "name": "type_enum", + "type": "AccessTokenType", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'api'" + }, + "user_id": { + "name": "user_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "last_used": { + "name": "last_used", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": { + "public.AccessTokenType": { + "name": "AccessTokenType", + "schema": "public", + "values": ["sig", "doc", "api", "upd"] + }, + "public.BankAccountTypeEnum": { + "name": "BankAccountTypeEnum", + "schema": "public", + "values": ["CHECKING", "SAVINGS"] + }, + "public.CancellationBehaviorEnum": { + "name": "CancellationBehaviorEnum", + "schema": "public", + "values": [ + "RETIRE", + "RETURN_TO_POOL", + "HOLD_AS_CAPITAL_STOCK", + "DEFINED_PER_PLAN_SECURITY" + ] + }, + "public.ConversionRightsEnum": { + "name": "ConversionRightsEnum", + "schema": "public", + "values": ["CONVERTS_TO_FUTURE_ROUND", "CONVERTS_TO_SHARE_CLASS_ID"] + }, + "public.ConvertibleInterestAccrualEnum": { + "name": "ConvertibleInterestAccrualEnum", + "schema": "public", + "values": [ + "DAILY", + "MONTHLY", + "SEMI_ANNUALLY", + "ANNUALLY", + "YEARLY", + "CONTINUOUSLY" + ] + }, + "public.ConvertibleInterestMethodEnum": { + "name": "ConvertibleInterestMethodEnum", + "schema": "public", + "values": ["SIMPLE", "COMPOUND"] + }, + "public.ConvertibleInterestPaymentScheduleEnum": { + "name": "ConvertibleInterestPaymentScheduleEnum", + "schema": "public", + "values": ["DEFERRED", "PAY_AT_MATURITY"] + }, + "public.ConvertibleStatusEnum": { + "name": "ConvertibleStatusEnum", + "schema": "public", + "values": ["DRAFT", "ACTIVE", "PENDING", "EXPIRED", "CANCELLED"] + }, + "public.ConvertibleTypeEnum": { + "name": "ConvertibleTypeEnum", + "schema": "public", + "values": ["CCD", "OCD", "NOTE"] + }, + "public.CredentialDeviceTypeEnum": { + "name": "CredentialDeviceTypeEnum", + "schema": "public", + "values": ["SINGLE_DEVICE", "MULTI_DEVICE"] + }, + "public.EsignRecipientStatus": { + "name": "EsignRecipientStatus", + "schema": "public", + "values": ["SENT", "SIGNED", "PENDING"] + }, + "public.FieldTypes": { + "name": "FieldTypes", + "schema": "public", + "values": [ + "TEXT", + "RADIO", + "EMAIL", + "DATE", + "DATETIME", + "TEXTAREA", + "CHECKBOX", + "SIGNATURE", + "SELECT" + ] + }, + "public.MemberStatusEnum": { + "name": "MemberStatusEnum", + "schema": "public", + "values": ["ACTIVE", "INACTIVE", "PENDING"] + }, + "public.OptionStatusEnum": { + "name": "OptionStatusEnum", + "schema": "public", + "values": ["DRAFT", "ACTIVE", "EXERCISED", "EXPIRED", "CANCELLED"] + }, + "public.OptionTypeEnum": { + "name": "OptionTypeEnum", + "schema": "public", + "values": ["ISO", "NSO", "RSU"] + }, + "public.PricingPlanInterval": { + "name": "PricingPlanInterval", + "schema": "public", + "values": ["day", "week", "month", "year"] + }, + "public.PricingType": { + "name": "PricingType", + "schema": "public", + "values": ["one_time", "recurring"] + }, + "public.Roles": { + "name": "Roles", + "schema": "public", + "values": ["ADMIN", "CUSTOM"] + }, + "public.SafeStatusEnum": { + "name": "SafeStatusEnum", + "schema": "public", + "values": ["DRAFT", "ACTIVE", "PENDING", "EXPIRED", "CANCELLED"] + }, + "public.SafeTemplateEnum": { + "name": "SafeTemplateEnum", + "schema": "public", + "values": [ + "POST_MONEY_CAP", + "POST_MONEY_DISCOUNT", + "POST_MONEY_MFN", + "POST_MONEY_CAP_WITH_PRO_RATA", + "POST_MONEY_DISCOUNT_WITH_PRO_RATA", + "POST_MONEY_MFN_WITH_PRO_RATA", + "CUSTOM" + ] + }, + "public.SafeTypeEnum": { + "name": "SafeTypeEnum", + "schema": "public", + "values": ["PRE_MONEY", "POST_MONEY"] + }, + "public.SecuritiesStatusEnum": { + "name": "SecuritiesStatusEnum", + "schema": "public", + "values": ["ACTIVE", "DRAFT", "SIGNED", "PENDING"] + }, + "public.ShareLegendsEnum": { + "name": "ShareLegendsEnum", + "schema": "public", + "values": ["US_SECURITIES_ACT", "SALE_AND_ROFR", "TRANSFER_RESTRICTIONS"] + }, + "public.SharePrefixEnum": { + "name": "SharePrefixEnum", + "schema": "public", + "values": ["CS", "PS"] + }, + "public.ShareTypeEnum": { + "name": "ShareTypeEnum", + "schema": "public", + "values": ["COMMON", "PREFERRED"] + }, + "public.StakeholderRelationshipEnum": { + "name": "StakeholderRelationshipEnum", + "schema": "public", + "values": [ + "ADVISOR", + "BOARD_MEMBER", + "CONSULTANT", + "EMPLOYEE", + "EX_ADVISOR", + "EX_CONSULTANT", + "EX_EMPLOYEE", + "EXECUTIVE", + "FOUNDER", + "INVESTOR", + "NON_US_EMPLOYEE", + "OFFICER", + "OTHER" + ] + }, + "public.StakeholderTypeEnum": { + "name": "StakeholderTypeEnum", + "schema": "public", + "values": ["INDIVIDUAL", "INSTITUTION"] + }, + "public.SubscriptionStatus": { + "name": "SubscriptionStatus", + "schema": "public", + "values": [ + "trialing", + "active", + "canceled", + "incomplete", + "incomplete_expired", + "past_due", + "unpaid", + "paused" + ] + }, + "public.TemplateStatus": { + "name": "TemplateStatus", + "schema": "public", + "values": ["DRAFT", "COMPLETE", "SENT", "WAITING", "CANCELLED"] + }, + "public.UpdateStatusEnum": { + "name": "UpdateStatusEnum", + "schema": "public", + "values": ["DRAFT", "PUBLIC", "PRIVATE"] + } + }, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} diff --git a/packages/db/migrations/meta/0001_snapshot.json b/packages/db/migrations/meta/0001_snapshot.json new file mode 100644 index 000000000..3c89cbd5d --- /dev/null +++ b/packages/db/migrations/meta/0001_snapshot.json @@ -0,0 +1,4525 @@ +{ + "id": "11b2d281-7093-4223-8ac8-83bdfaa81e18", + "prevId": "c31778e5-7dca-4d58-a5f7-2554a4dc0fd9", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.cap_accounts": { + "name": "cap_accounts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "provider": { + "name": "provider", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "refresh_token": { + "name": "refresh_token", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "access_token": { + "name": "access_token", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "token_type": { + "name": "token_type", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "scope": { + "name": "scope", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "id_token": { + "name": "id_token", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "session_state": { + "name": "session_state", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "accounts_user_id_idx": { + "name": "accounts_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "accounts_provider_provider_account_id_idx": { + "name": "accounts_provider_provider_account_id_idx", + "columns": [ + { + "expression": "provider", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "provider_account_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_sessions": { + "name": "cap_sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "session_token": { + "name": "session_token", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "expires": { + "name": "expires", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "sessions_session_token_idx": { + "name": "sessions_session_token_idx", + "columns": [ + { + "expression": "session_token", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sessions_user_id_idx": { + "name": "sessions_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_users": { + "name": "cap_users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "password": { + "name": "password", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "email_verified": { + "name": "email_verified", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "image": { + "name": "image", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "last_signed_in": { + "name": "last_signed_in", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "identity_provider": { + "name": "identity_provider", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "users_email_idx": { + "name": "users_email_idx", + "columns": [ + { + "expression": "email", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_passkeys": { + "name": "cap_passkeys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "credential_id": { + "name": "credential_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "credential_public_key": { + "name": "credential_public_key", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "counter": { + "name": "counter", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "credential_device_type": { + "name": "credential_device_type", + "type": "CredentialDeviceTypeEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "credential_backed_up": { + "name": "credential_backed_up", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "transports": { + "name": "transports", + "type": "varchar(191)[]", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "passkeys_user_id_idx": { + "name": "passkeys_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_passkey_verification_tokens": { + "name": "cap_passkey_verification_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "token": { + "name": "token", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_passkey_verification_tokens_token_unique": { + "name": "cap_passkey_verification_tokens_token_unique", + "nullsNotDistinct": false, + "columns": ["token"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_password_reset_tokens": { + "name": "cap_password_reset_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "email": { + "name": "email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "expires": { + "name": "expires", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "password_reset_tokens_email_token_idx": { + "name": "password_reset_tokens_email_token_idx", + "columns": [ + { + "expression": "email", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "token", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_password_reset_tokens_token_unique": { + "name": "cap_password_reset_tokens_token_unique", + "nullsNotDistinct": false, + "columns": ["token"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_verification_tokens": { + "name": "cap_verification_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true + }, + "secondary_id": { + "name": "secondary_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "identifier": { + "name": "identifier", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "expires": { + "name": "expires", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "user_id": { + "name": "user_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "verification_tokens_identifier_token_idx": { + "name": "verification_tokens_identifier_token_idx", + "columns": [ + { + "expression": "identifier", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "token", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "verification_tokens_user_id_idx": { + "name": "verification_tokens_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_verification_tokens_secondary_id_unique": { + "name": "cap_verification_tokens_secondary_id_unique", + "nullsNotDistinct": false, + "columns": ["secondary_id"] + }, + "cap_verification_tokens_token_unique": { + "name": "cap_verification_tokens_token_unique", + "nullsNotDistinct": false, + "columns": ["token"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_companies": { + "name": "cap_companies", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "logo": { + "name": "logo", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "website": { + "name": "website", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "incorporation_type": { + "name": "incorporation_type", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "incorporation_date": { + "name": "incorporation_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "incorporation_country": { + "name": "incorporation_country", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "incorporation_state": { + "name": "incorporation_state", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "street_address": { + "name": "street_address", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "city": { + "name": "city", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "state": { + "name": "state", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "zipcode": { + "name": "zipcode", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "country": { + "name": "country", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "companies_public_id_unique": { + "name": "companies_public_id_unique", + "columns": [ + { + "expression": "public_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_companies_public_id_unique": { + "name": "cap_companies_public_id_unique", + "nullsNotDistinct": false, + "columns": ["public_id"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_bank_accounts": { + "name": "cap_bank_accounts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "beneficiary_name": { + "name": "beneficiary_name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "beneficiary_address": { + "name": "beneficiary_address", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "bank_name": { + "name": "bank_name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "bank_address": { + "name": "bank_address", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "account_number": { + "name": "account_number", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "routing_number": { + "name": "routing_number", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "account_type": { + "name": "account_type", + "type": "BankAccountTypeEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'CHECKING'" + }, + "swift_code": { + "name": "swift_code", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "primary": { + "name": "primary", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "bank_accounts_company_id_idx": { + "name": "bank_accounts_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_custom_roles": { + "name": "cap_custom_roles", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "permissions": { + "name": "permissions", + "type": "varchar(191)[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "custom_roles_company_id_idx": { + "name": "custom_roles_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_members": { + "name": "cap_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "MemberStatusEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'PENDING'" + }, + "is_onboarded": { + "name": "is_onboarded", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "role": { + "name": "role", + "type": "Roles", + "typeSchema": "public", + "primaryKey": false, + "notNull": false, + "default": "'ADMIN'" + }, + "work_email": { + "name": "work_email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "last_accessed": { + "name": "last_accessed", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "custom_role_id": { + "name": "custom_role_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "members_company_id_idx": { + "name": "members_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "members_status_idx": { + "name": "members_status_idx", + "columns": [ + { + "expression": "status", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "members_user_id_idx": { + "name": "members_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "members_custom_role_id_idx": { + "name": "members_custom_role_id_idx", + "columns": [ + { + "expression": "custom_role_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "members_company_id_user_id_unique": { + "name": "members_company_id_user_id_unique", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_stakeholders": { + "name": "cap_stakeholders", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "email": { + "name": "email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "institution_name": { + "name": "institution_name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "stakeholder_type": { + "name": "stakeholder_type", + "type": "StakeholderTypeEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'INDIVIDUAL'" + }, + "current_relationship": { + "name": "current_relationship", + "type": "StakeholderRelationshipEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'EMPLOYEE'" + }, + "tax_id": { + "name": "tax_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "street_address": { + "name": "street_address", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "city": { + "name": "city", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "state": { + "name": "state", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "zipcode": { + "name": "zipcode", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "country": { + "name": "country", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true, + "default": "'US'" + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "stakeholders_company_id_idx": { + "name": "stakeholders_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_stakeholders_email_unique": { + "name": "cap_stakeholders_email_unique", + "nullsNotDistinct": false, + "columns": ["email"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_audits": { + "name": "cap_audits", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "summary": { + "name": "summary", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "action": { + "name": "action", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "occurred_at": { + "name": "occurred_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "actor": { + "name": "actor", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "target": { + "name": "target", + "type": "jsonb[]", + "primaryKey": false, + "notNull": true + }, + "context": { + "name": "context", + "type": "jsonb", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "audits_company_id_idx": { + "name": "audits_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_share_classes": { + "name": "cap_share_classes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "idx": { + "name": "idx", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "class_type": { + "name": "class_type", + "type": "ShareTypeEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'COMMON'" + }, + "prefix": { + "name": "prefix", + "type": "SharePrefixEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'CS'" + }, + "initial_shares_authorized": { + "name": "initial_shares_authorized", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "board_approval_date": { + "name": "board_approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "stockholder_approval_date": { + "name": "stockholder_approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "votes_per_share": { + "name": "votes_per_share", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "par_value": { + "name": "par_value", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "price_per_share": { + "name": "price_per_share", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "seniority": { + "name": "seniority", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "conversion_rights": { + "name": "conversion_rights", + "type": "ConversionRightsEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'CONVERTS_TO_FUTURE_ROUND'" + }, + "converts_to_share_class_id": { + "name": "converts_to_share_class_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "liquidation_preference_multiple": { + "name": "liquidation_preference_multiple", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "participation_cap_multiple": { + "name": "participation_cap_multiple", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "share_classes_company_id_idx": { + "name": "share_classes_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "share_classes_company_id_idx_unique": { + "name": "share_classes_company_id_idx_unique", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "idx", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_equity_plans": { + "name": "cap_equity_plans", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "board_approval_date": { + "name": "board_approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "plan_effective_date": { + "name": "plan_effective_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "initial_shares_reserved": { + "name": "initial_shares_reserved", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "default_cancellaton_behavior": { + "name": "default_cancellaton_behavior", + "type": "CancellationBehaviorEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "comments": { + "name": "comments", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "share_class_id": { + "name": "share_class_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "equity_plans_share_class_id_idx": { + "name": "equity_plans_share_class_id_idx", + "columns": [ + { + "expression": "share_class_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "equity_plans_company_id_idx": { + "name": "equity_plans_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_buckets": { + "name": "cap_buckets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "mime_type": { + "name": "mime_type", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "size": { + "name": "size", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "tags": { + "name": "tags", + "type": "varchar(191)[]", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_document_shares": { + "name": "cap_document_shares", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "link": { + "name": "link", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "link_expires_at": { + "name": "link_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "recipients": { + "name": "recipients", + "type": "varchar(191)[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'" + }, + "email_protected": { + "name": "email_protected", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "document_id": { + "name": "document_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "document_shares_document_id_idx": { + "name": "document_shares_document_id_idx", + "columns": [ + { + "expression": "document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_documents": { + "name": "cap_documents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "bucket_id": { + "name": "bucket_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "uploader_id": { + "name": "uploader_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "share_id": { + "name": "share_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "option_id": { + "name": "option_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "safe_id": { + "name": "safe_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "convertible_note_id": { + "name": "convertible_note_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "documents_bucket_id_idx": { + "name": "documents_bucket_id_idx", + "columns": [ + { + "expression": "bucket_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "documents_uploader_id_idx": { + "name": "documents_uploader_id_idx", + "columns": [ + { + "expression": "uploader_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "documents_company_id_idx": { + "name": "documents_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "documents_share_id_idx": { + "name": "documents_share_id_idx", + "columns": [ + { + "expression": "share_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "documents_option_id_idx": { + "name": "documents_option_id_idx", + "columns": [ + { + "expression": "option_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "documents_safe_id_idx": { + "name": "documents_safe_id_idx", + "columns": [ + { + "expression": "safe_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "documents_convertible_note_id_idx": { + "name": "documents_convertible_note_id_idx", + "columns": [ + { + "expression": "convertible_note_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_documents_public_id_unique": { + "name": "cap_documents_public_id_unique", + "nullsNotDistinct": false, + "columns": ["public_id"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_data_room_documents": { + "name": "cap_data_room_documents", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "data_room_id": { + "name": "data_room_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "document_id": { + "name": "document_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "data_room_documents_data_room_id_idx": { + "name": "data_room_documents_data_room_id_idx", + "columns": [ + { + "expression": "data_room_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "data_room_documents_document_id_idx": { + "name": "data_room_documents_document_id_idx", + "columns": [ + { + "expression": "document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "data_room_documents_data_room_id_document_id_unique": { + "name": "data_room_documents_data_room_id_document_id_unique", + "columns": [ + { + "expression": "data_room_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "document_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_data_room_recipients": { + "name": "cap_data_room_recipients", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "data_room_id": { + "name": "data_room_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "member_id": { + "name": "member_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "stakeholder_id": { + "name": "stakeholder_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "data_room_recipients_id_data_room_id_idx": { + "name": "data_room_recipients_id_data_room_id_idx", + "columns": [ + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "data_room_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "data_room_recipients_member_id_idx": { + "name": "data_room_recipients_member_id_idx", + "columns": [ + { + "expression": "member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "data_room_recipients_data_room_id_idx": { + "name": "data_room_recipients_data_room_id_idx", + "columns": [ + { + "expression": "data_room_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "data_room_recipients_stakeholder_id_idx": { + "name": "data_room_recipients_stakeholder_id_idx", + "columns": [ + { + "expression": "stakeholder_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "data_room_recipients_data_room_id_email_unique": { + "name": "data_room_recipients_data_room_id_email_unique", + "columns": [ + { + "expression": "data_room_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "email", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_data_rooms": { + "name": "cap_data_rooms", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "public": { + "name": "public", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "data_rooms_public_id_idx": { + "name": "data_rooms_public_id_idx", + "columns": [ + { + "expression": "public_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "data_rooms_company_id_idx": { + "name": "data_rooms_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "data_rooms_company_id_name_unique": { + "name": "data_rooms_company_id_name_unique", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_data_rooms_public_id_unique": { + "name": "cap_data_rooms_public_id_unique", + "nullsNotDistinct": false, + "columns": ["public_id"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_update_recipients": { + "name": "cap_update_recipients", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "email": { + "name": "email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "update_id": { + "name": "update_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "member_id": { + "name": "member_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "stakeholder_id": { + "name": "stakeholder_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "update_recipients_id_update_id_idx": { + "name": "update_recipients_id_update_id_idx", + "columns": [ + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "update_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "update_recipients_member_id_idx": { + "name": "update_recipients_member_id_idx", + "columns": [ + { + "expression": "member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "update_recipients_update_id_idx": { + "name": "update_recipients_update_id_idx", + "columns": [ + { + "expression": "update_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "update_recipients_stakeholder_id_idx": { + "name": "update_recipients_stakeholder_id_idx", + "columns": [ + { + "expression": "stakeholder_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "update_recipients_update_id_email_unique": { + "name": "update_recipients_update_id_email_unique", + "columns": [ + { + "expression": "update_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "email", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_esign_recipients": { + "name": "cap_esign_recipients", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "email": { + "name": "email", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "template_id": { + "name": "template_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "EsignRecipientStatus", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'PENDING'" + }, + "member_id": { + "name": "member_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "esign_recipients_member_id_idx": { + "name": "esign_recipients_member_id_idx", + "columns": [ + { + "expression": "member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "esign_recipients_template_id_idx": { + "name": "esign_recipients_template_id_idx", + "columns": [ + { + "expression": "template_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_template_fields": { + "name": "cap_template_fields", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "FieldTypes", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'TEXT'" + }, + "default_value": { + "name": "default_value", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "read_only": { + "name": "read_only", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "required": { + "name": "required", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "prefilled_value": { + "name": "prefilled_value", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "top": { + "name": "top", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "left": { + "name": "left", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "width": { + "name": "width", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "height": { + "name": "height", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "recipient_id": { + "name": "recipient_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "template_id": { + "name": "template_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "viewport_height": { + "name": "viewport_height", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "viewport_width": { + "name": "viewport_width", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "page": { + "name": "page", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "meta": { + "name": "meta", + "type": "jsonb", + "primaryKey": false, + "notNull": true, + "default": "'{}'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "template_fields_template_id_idx": { + "name": "template_fields_template_id_idx", + "columns": [ + { + "expression": "template_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "template_fields_recipient_id_idx": { + "name": "template_fields_recipient_id_idx", + "columns": [ + { + "expression": "recipient_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_templates": { + "name": "cap_templates", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "TemplateStatus", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "ordered_delivery": { + "name": "ordered_delivery", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "message": { + "name": "message", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "bucket_id": { + "name": "bucket_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "uploader_id": { + "name": "uploader_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "completed_on": { + "name": "completed_on", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "templates_bucket_id_idx": { + "name": "templates_bucket_id_idx", + "columns": [ + { + "expression": "bucket_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "templates_uploader_id_idx": { + "name": "templates_uploader_id_idx", + "columns": [ + { + "expression": "uploader_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "templates_company_id_idx": { + "name": "templates_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_shares": { + "name": "cap_shares", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "status": { + "name": "status", + "type": "SecuritiesStatusEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "certificate_id": { + "name": "certificate_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "price_per_share": { + "name": "price_per_share", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "capital_contribution": { + "name": "capital_contribution", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "ip_contribution": { + "name": "ip_contribution", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "debt_cancelled": { + "name": "debt_cancelled", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "other_contributions": { + "name": "other_contributions", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "cliff_years": { + "name": "cliff_years", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "vesting_years": { + "name": "vesting_years", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "company_legends": { + "name": "company_legends", + "type": "ShareLegendsEnum[]", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'{}'" + }, + "issue_date": { + "name": "issue_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "rule_144_date": { + "name": "rule_144_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "vesting_start_date": { + "name": "vesting_start_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "board_approval_date": { + "name": "board_approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "stakeholder_id": { + "name": "stakeholder_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "share_class_id": { + "name": "share_class_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "shares_company_id_idx": { + "name": "shares_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "shares_stakeholder_id_idx": { + "name": "shares_stakeholder_id_idx", + "columns": [ + { + "expression": "stakeholder_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "shares_share_class_id_idx": { + "name": "shares_share_class_id_idx", + "columns": [ + { + "expression": "share_class_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_options": { + "name": "cap_options", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "grant_id": { + "name": "grant_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "exercise_price": { + "name": "exercise_price", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "OptionTypeEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "OptionStatusEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "cliff_years": { + "name": "cliff_years", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "vesting_years": { + "name": "vesting_years", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "issue_date": { + "name": "issue_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "expiration_date": { + "name": "expiration_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "vesting_start_date": { + "name": "vesting_start_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "board_approval_date": { + "name": "board_approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "rule_144_date": { + "name": "rule_144_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "stakeholder_id": { + "name": "stakeholder_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "equity_plan_id": { + "name": "equity_plan_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "options_company_id_idx": { + "name": "options_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "options_equity_plan_id_idx": { + "name": "options_equity_plan_id_idx", + "columns": [ + { + "expression": "equity_plan_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "options_stakeholder_id_idx": { + "name": "options_stakeholder_id_idx", + "columns": [ + { + "expression": "stakeholder_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_investments": { + "name": "cap_investments", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "amount": { + "name": "amount", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "shares": { + "name": "shares", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "date": { + "name": "date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "comments": { + "name": "comments", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "share_class_id": { + "name": "share_class_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "stakeholder_id": { + "name": "stakeholder_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "investments_company_id_idx": { + "name": "investments_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "investments_share_class_id_idx": { + "name": "investments_share_class_id_idx", + "columns": [ + { + "expression": "share_class_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "investments_stakeholder_id_idx": { + "name": "investments_stakeholder_id_idx", + "columns": [ + { + "expression": "stakeholder_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_safes": { + "name": "cap_safes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "SafeTypeEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'POST_MONEY'" + }, + "status": { + "name": "status", + "type": "SafeStatusEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "capital": { + "name": "capital", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "safe_template": { + "name": "safe_template", + "type": "SafeTemplateEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "safe_id": { + "name": "safe_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "valuation_cap": { + "name": "valuation_cap", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "discount_rate": { + "name": "discount_rate", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "mfn": { + "name": "mfn", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "pro_rata": { + "name": "pro_rata", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "additional_terms": { + "name": "additional_terms", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "stakeholder_id": { + "name": "stakeholder_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "issue_date": { + "name": "issue_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "board_approval_date": { + "name": "board_approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "safes_company_id_idx": { + "name": "safes_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "safes_stakeholder_id_idx": { + "name": "safes_stakeholder_id_idx", + "columns": [ + { + "expression": "stakeholder_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_convertible_notes": { + "name": "cap_convertible_notes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "ConvertibleStatusEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "type": { + "name": "type", + "type": "ConvertibleTypeEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'NOTE'" + }, + "capital": { + "name": "capital", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "conversion_cap": { + "name": "conversion_cap", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "discount_rate": { + "name": "discount_rate", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "mfn": { + "name": "mfn", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "additional_terms": { + "name": "additional_terms", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "interest_rate": { + "name": "interest_rate", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "interest_method": { + "name": "interest_method", + "type": "ConvertibleInterestMethodEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "interest_accrual": { + "name": "interest_accrual", + "type": "ConvertibleInterestAccrualEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "interest_payment_schedule": { + "name": "interest_payment_schedule", + "type": "ConvertibleInterestPaymentScheduleEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "stakeholder_id": { + "name": "stakeholder_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "issue_date": { + "name": "issue_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "board_approval_date": { + "name": "board_approval_date", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "convertible_notes_company_id_idx": { + "name": "convertible_notes_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "convertible_notes_stakeholder_id_idx": { + "name": "convertible_notes_stakeholder_id_idx", + "columns": [ + { + "expression": "stakeholder_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_esign_audits": { + "name": "cap_esign_audits", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "template_id": { + "name": "template_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "recipient_id": { + "name": "recipient_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "action": { + "name": "action", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "ip": { + "name": "ip", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "user_agent": { + "name": "user_agent", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "location": { + "name": "location", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "summary": { + "name": "summary", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "occurred_at": { + "name": "occurred_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "esign_audits_company_id_idx": { + "name": "esign_audits_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "esign_audits_template_id_idx": { + "name": "esign_audits_template_id_idx", + "columns": [ + { + "expression": "template_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "esign_audits_recipient_id_idx": { + "name": "esign_audits_recipient_id_idx", + "columns": [ + { + "expression": "recipient_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_updates": { + "name": "cap_updates", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "public_id": { + "name": "public_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "title": { + "name": "title", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "html": { + "name": "html", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "public": { + "name": "public", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "status": { + "name": "status", + "type": "UpdateStatusEnum", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'DRAFT'" + }, + "author_id": { + "name": "author_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "updates_public_id_idx": { + "name": "updates_public_id_idx", + "columns": [ + { + "expression": "public_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "updates_author_id_idx": { + "name": "updates_author_id_idx", + "columns": [ + { + "expression": "author_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "updates_company_id_idx": { + "name": "updates_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "cap_updates_public_id_unique": { + "name": "cap_updates_public_id_unique", + "nullsNotDistinct": false, + "columns": ["public_id"] + } + }, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_billing_customers": { + "name": "cap_billing_customers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "company_id": { + "name": "company_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "billing_customers_company_id_idx": { + "name": "billing_customers_company_id_idx", + "columns": [ + { + "expression": "company_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_billing_prices": { + "name": "cap_billing_prices", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "product_id": { + "name": "product_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "unit_amount": { + "name": "unit_amount", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "currency": { + "name": "currency", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "PricingType", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "interval": { + "name": "interval", + "type": "PricingPlanInterval", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "interval_count": { + "name": "interval_count", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "trial_period_days": { + "name": "trial_period_days", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "billing_prices_product_id_idx": { + "name": "billing_prices_product_id_idx", + "columns": [ + { + "expression": "product_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_billing_products": { + "name": "cap_billing_products", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "varchar(191)", + "primaryKey": false, + "notNull": false + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_billing_subscriptions": { + "name": "cap_billing_subscriptions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "price_id": { + "name": "price_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "SubscriptionStatus", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "cancel_at_period_end": { + "name": "cancel_at_period_end", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "created": { + "name": "created", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "current_period_start": { + "name": "current_period_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "current_period_end": { + "name": "current_period_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "ended_at": { + "name": "ended_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "cancel_at": { + "name": "cancel_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "canceled_at": { + "name": "canceled_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_start": { + "name": "trial_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_end": { + "name": "trial_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "metadata": { + "name": "metadata", + "type": "jsonb", + "primaryKey": false, + "notNull": false + }, + "customer_id": { + "name": "customer_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "billing_subscriptions_price_id_idx": { + "name": "billing_subscriptions_price_id_idx", + "columns": [ + { + "expression": "price_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "billing_subscriptions_customer_id_idx": { + "name": "billing_subscriptions_customer_id_idx", + "columns": [ + { + "expression": "customer_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.cap_access_tokens": { + "name": "cap_access_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "varchar(191)", + "primaryKey": true, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "client_id": { + "name": "client_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "client_secret": { + "name": "client_secret", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "type_enum": { + "name": "type_enum", + "type": "AccessTokenType", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'api'" + }, + "user_id": { + "name": "user_id", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "last_used": { + "name": "last_used", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "access_tokens_user_id_idx": { + "name": "access_tokens_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "access_tokens_type_enum_client_id_idx": { + "name": "access_tokens_type_enum_client_id_idx", + "columns": [ + { + "expression": "type_enum", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "client_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": { + "public.AccessTokenType": { + "name": "AccessTokenType", + "schema": "public", + "values": ["sig", "doc", "api", "upd"] + }, + "public.AuditAction": { + "name": "AuditAction", + "schema": "public", + "values": ["CREATE", "UPDATE", "DELETE"] + }, + "public.BankAccountTypeEnum": { + "name": "BankAccountTypeEnum", + "schema": "public", + "values": ["CHECKING", "SAVINGS"] + }, + "public.CancellationBehaviorEnum": { + "name": "CancellationBehaviorEnum", + "schema": "public", + "values": [ + "RETIRE", + "RETURN_TO_POOL", + "HOLD_AS_CAPITAL_STOCK", + "DEFINED_PER_PLAN_SECURITY" + ] + }, + "public.ConversionRightsEnum": { + "name": "ConversionRightsEnum", + "schema": "public", + "values": ["CONVERTS_TO_FUTURE_ROUND", "CONVERTS_TO_SHARE_CLASS_ID"] + }, + "public.ConvertibleInterestAccrualEnum": { + "name": "ConvertibleInterestAccrualEnum", + "schema": "public", + "values": [ + "DAILY", + "MONTHLY", + "SEMI_ANNUALLY", + "ANNUALLY", + "YEARLY", + "CONTINUOUSLY" + ] + }, + "public.ConvertibleInterestMethodEnum": { + "name": "ConvertibleInterestMethodEnum", + "schema": "public", + "values": ["SIMPLE", "COMPOUND"] + }, + "public.ConvertibleInterestPaymentScheduleEnum": { + "name": "ConvertibleInterestPaymentScheduleEnum", + "schema": "public", + "values": ["DEFERRED", "PAY_AT_MATURITY"] + }, + "public.ConvertibleStatusEnum": { + "name": "ConvertibleStatusEnum", + "schema": "public", + "values": ["DRAFT", "ACTIVE", "PENDING", "EXPIRED", "CANCELLED"] + }, + "public.ConvertibleTypeEnum": { + "name": "ConvertibleTypeEnum", + "schema": "public", + "values": ["CCD", "OCD", "NOTE"] + }, + "public.CredentialDeviceTypeEnum": { + "name": "CredentialDeviceTypeEnum", + "schema": "public", + "values": ["SINGLE_DEVICE", "MULTI_DEVICE"] + }, + "public.EsignRecipientStatus": { + "name": "EsignRecipientStatus", + "schema": "public", + "values": ["SENT", "SIGNED", "PENDING"] + }, + "public.FieldTypes": { + "name": "FieldTypes", + "schema": "public", + "values": [ + "TEXT", + "RADIO", + "EMAIL", + "DATE", + "DATETIME", + "TEXTAREA", + "CHECKBOX", + "SIGNATURE", + "SELECT" + ] + }, + "public.MemberStatusEnum": { + "name": "MemberStatusEnum", + "schema": "public", + "values": ["ACTIVE", "INACTIVE", "PENDING"] + }, + "public.OptionStatusEnum": { + "name": "OptionStatusEnum", + "schema": "public", + "values": ["DRAFT", "ACTIVE", "EXERCISED", "EXPIRED", "CANCELLED"] + }, + "public.OptionTypeEnum": { + "name": "OptionTypeEnum", + "schema": "public", + "values": ["ISO", "NSO", "RSU"] + }, + "public.PricingPlanInterval": { + "name": "PricingPlanInterval", + "schema": "public", + "values": ["day", "week", "month", "year"] + }, + "public.PricingType": { + "name": "PricingType", + "schema": "public", + "values": ["one_time", "recurring"] + }, + "public.Roles": { + "name": "Roles", + "schema": "public", + "values": ["ADMIN", "CUSTOM"] + }, + "public.SafeStatusEnum": { + "name": "SafeStatusEnum", + "schema": "public", + "values": ["DRAFT", "ACTIVE", "PENDING", "EXPIRED", "CANCELLED"] + }, + "public.SafeTemplateEnum": { + "name": "SafeTemplateEnum", + "schema": "public", + "values": [ + "POST_MONEY_CAP", + "POST_MONEY_DISCOUNT", + "POST_MONEY_MFN", + "POST_MONEY_CAP_WITH_PRO_RATA", + "POST_MONEY_DISCOUNT_WITH_PRO_RATA", + "POST_MONEY_MFN_WITH_PRO_RATA", + "CUSTOM" + ] + }, + "public.SafeTypeEnum": { + "name": "SafeTypeEnum", + "schema": "public", + "values": ["PRE_MONEY", "POST_MONEY"] + }, + "public.SecuritiesStatusEnum": { + "name": "SecuritiesStatusEnum", + "schema": "public", + "values": ["ACTIVE", "DRAFT", "SIGNED", "PENDING"] + }, + "public.ShareLegendsEnum": { + "name": "ShareLegendsEnum", + "schema": "public", + "values": ["US_SECURITIES_ACT", "SALE_AND_ROFR", "TRANSFER_RESTRICTIONS"] + }, + "public.SharePrefixEnum": { + "name": "SharePrefixEnum", + "schema": "public", + "values": ["CS", "PS"] + }, + "public.ShareTypeEnum": { + "name": "ShareTypeEnum", + "schema": "public", + "values": ["COMMON", "PREFERRED"] + }, + "public.StakeholderRelationshipEnum": { + "name": "StakeholderRelationshipEnum", + "schema": "public", + "values": [ + "ADVISOR", + "BOARD_MEMBER", + "CONSULTANT", + "EMPLOYEE", + "EX_ADVISOR", + "EX_CONSULTANT", + "EX_EMPLOYEE", + "EXECUTIVE", + "FOUNDER", + "INVESTOR", + "NON_US_EMPLOYEE", + "OFFICER", + "OTHER" + ] + }, + "public.StakeholderTypeEnum": { + "name": "StakeholderTypeEnum", + "schema": "public", + "values": ["INDIVIDUAL", "INSTITUTION"] + }, + "public.SubscriptionStatus": { + "name": "SubscriptionStatus", + "schema": "public", + "values": [ + "trialing", + "active", + "canceled", + "incomplete", + "incomplete_expired", + "past_due", + "unpaid", + "paused" + ] + }, + "public.TemplateStatus": { + "name": "TemplateStatus", + "schema": "public", + "values": ["DRAFT", "COMPLETE", "SENT", "WAITING", "CANCELLED"] + }, + "public.UpdateStatusEnum": { + "name": "UpdateStatusEnum", + "schema": "public", + "values": ["DRAFT", "PUBLIC", "PRIVATE"] + } + }, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} diff --git a/packages/db/migrations/meta/_journal.json b/packages/db/migrations/meta/_journal.json new file mode 100644 index 000000000..8fc6fdeae --- /dev/null +++ b/packages/db/migrations/meta/_journal.json @@ -0,0 +1,20 @@ +{ + "version": "7", + "dialect": "postgresql", + "entries": [ + { + "idx": 0, + "version": "7", + "when": 1747634700394, + "tag": "0000_ambitious_ares", + "breakpoints": true + }, + { + "idx": 1, + "version": "7", + "when": 1747708100248, + "tag": "0001_woozy_blizzard", + "breakpoints": true + } + ] +} diff --git a/packages/db/package.json b/packages/db/package.json new file mode 100644 index 000000000..efca335ec --- /dev/null +++ b/packages/db/package.json @@ -0,0 +1,40 @@ +{ + "name": "@captable/db", + "module": "index.ts", + "type": "module", + "scripts": { + "lint": "biome check", + "format": "biome format --write", + "generate": "drizzle-kit generate --config config.ts", + "migrate": "drizzle-kit migrate --config config.ts", + "db:migrate": "bun run generate && bun run migrate", + "db:studio": "drizzle-kit studio --config config.ts", + "db:seed": "bun run seeds/index.ts" + }, + "devDependencies": { + "@biomejs/biome": "1.9.4", + "@types/bcryptjs": "^2.4.6", + "@types/bun": "latest", + "@types/inquirer": "^9.0.7", + "@types/lodash-es": "^4.17.12", + "@types/uuid": "^9.0.8", + "dotenv": "^16.5.0", + "drizzle-kit": "^0.31.1" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "dependencies": { + "@captable/config": "workspace:*", + "@captable/logger": "workspace:*", + "@faker-js/faker": "^8.4.1", + "bcryptjs": "^2.4.3", + "drizzle-orm": "^0.43.1", + "drizzle-zod": "^0.7.1", + "inquirer": "^9.2.15", + "lodash-es": "^4.17.21", + "nanoid": "^5.0.6", + "postgres": "^3.4.5", + "uuid": "^9.0.1" + } +} diff --git a/packages/db/schema/access-tokens.ts b/packages/db/schema/access-tokens.ts new file mode 100644 index 000000000..123b5ba50 --- /dev/null +++ b/packages/db/schema/access-tokens.ts @@ -0,0 +1,38 @@ +import { boolean, index, timestamp, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { AccessTokenTypeEnum } from "./enums"; +import { createTable } from "./index"; + +export const accessTokens = createTable( + "access_tokens", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + active: boolean("active").notNull().default(true), + clientId: varchar("client_id", { length: 191 }).notNull(), + clientSecret: varchar("client_secret", { length: 191 }).notNull(), + typeEnum: AccessTokenTypeEnum("type_enum").notNull().default("api"), + + // Foreign key reference + userId: varchar("user_id", { length: 191 }).notNull(), + + // Timestamps + expiresAt: timestamp("expires_at", { withTimezone: true }), + lastUsed: timestamp("last_used", { withTimezone: true }), + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring indexes from Prisma schema + index("access_tokens_user_id_idx").on(table.userId), + index("access_tokens_type_enum_client_id_idx").on( + table.typeEnum, + table.clientId, + ), + ]; + }, +); + +export const accessTokenSelectSchema = createSelectSchema(accessTokens); diff --git a/packages/db/schema/accounts.ts b/packages/db/schema/accounts.ts new file mode 100644 index 000000000..0eb5fec59 --- /dev/null +++ b/packages/db/schema/accounts.ts @@ -0,0 +1,35 @@ +import { index, uniqueIndex, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { createTable } from "./index"; + +export const accounts = createTable( + "accounts", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + userId: varchar("user_id", { length: 191 }).notNull(), + type: varchar("type", { length: 191 }).notNull(), + provider: varchar("provider", { length: 191 }).notNull(), + providerAccountId: varchar("provider_account_id", { + length: 191, + }).notNull(), + refreshToken: varchar("refresh_token", { length: 191 }), + accessToken: varchar("access_token", { length: 191 }), + expiresAt: varchar("expires_at", { length: 191 }), + tokenType: varchar("token_type", { length: 191 }), + scope: varchar("scope", { length: 191 }), + idToken: varchar("id_token", { length: 191 }), + sessionState: varchar("session_state", { length: 191 }), + }, + (table) => { + return [ + // Mirroring the indexes from Prisma schema + index("accounts_user_id_idx").on(table.userId), + uniqueIndex("accounts_provider_provider_account_id_idx").on( + table.provider, + table.providerAccountId, + ), + ]; + }, +); + +export const accountSelectSchema = createSelectSchema(accounts); diff --git a/packages/db/schema/audits.ts b/packages/db/schema/audits.ts new file mode 100644 index 000000000..c19435c56 --- /dev/null +++ b/packages/db/schema/audits.ts @@ -0,0 +1,29 @@ +import { index, jsonb, timestamp, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { createTable } from "./index"; + +export const audits = createTable( + "audits", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + companyId: varchar("company_id", { length: 191 }).notNull(), + summary: varchar("summary", { length: 191 }), + action: varchar("action", { length: 191 }).notNull(), + occurredAt: timestamp("occurred_at", { withTimezone: true }) + .notNull() + .defaultNow(), + + // JSON fields + actor: jsonb("actor").notNull(), + target: jsonb("target").array().notNull(), + context: jsonb("context").notNull(), + }, + (table) => { + return [ + // Mirroring index from Prisma schema + index("audits_company_id_idx").on(table.companyId), + ]; + }, +); + +export const auditSelectSchema = createSelectSchema(audits); diff --git a/packages/db/schema/bank-accounts.ts b/packages/db/schema/bank-accounts.ts new file mode 100644 index 000000000..6090af44b --- /dev/null +++ b/packages/db/schema/bank-accounts.ts @@ -0,0 +1,44 @@ +import { boolean, index, timestamp, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { BankAccountTypeEnum } from "./enums"; +import { createTable } from "./index"; + +export const bankAccounts = createTable( + "bank_accounts", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + beneficiaryName: varchar("beneficiary_name", { length: 191 }).notNull(), + beneficiaryAddress: varchar("beneficiary_address", { + length: 191, + }).notNull(), + bankName: varchar("bank_name", { length: 191 }).notNull(), + bankAddress: varchar("bank_address", { length: 191 }).notNull(), + accountNumber: varchar("account_number", { length: 191 }).notNull(), + routingNumber: varchar("routing_number", { length: 191 }).notNull(), + accountType: BankAccountTypeEnum("account_type") + .notNull() + .default("CHECKING"), + + // International bank information + swiftCode: varchar("swift_code", { length: 191 }), + + primary: boolean("primary").notNull().default(false), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + + // Foreign key reference + companyId: varchar("company_id", { length: 191 }).notNull(), + }, + (table) => { + return [ + // Mirroring index from Prisma schema + index("bank_accounts_company_id_idx").on(table.companyId), + ]; + }, +); + +export const bankAccountSelectSchema = createSelectSchema(bankAccounts); diff --git a/packages/db/schema/billing.ts b/packages/db/schema/billing.ts new file mode 100644 index 000000000..7b5125728 --- /dev/null +++ b/packages/db/schema/billing.ts @@ -0,0 +1,111 @@ +import { + bigint, + boolean, + index, + integer, + jsonb, + timestamp, + varchar, +} from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { + PricingPlanIntervalEnum, + PricingTypeEnum, + SubscriptionStatusEnum, +} from "./enums"; +import { createTable } from "./index"; + +export const billingProducts = createTable("billing_products", { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + active: boolean("active").notNull(), + name: varchar("name", { length: 191 }).notNull(), + description: varchar("description", { length: 191 }), + metadata: jsonb("metadata"), +}); + +export const billingProductSelectSchema = createSelectSchema(billingProducts); + +export const billingPrices = createTable( + "billing_prices", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + productId: varchar("product_id", { length: 191 }).notNull(), + active: boolean("active").notNull(), + description: varchar("description", { length: 191 }), + unitAmount: bigint("unit_amount", { mode: "number" }), + currency: varchar("currency", { length: 3 }).notNull(), + type: PricingTypeEnum("type").notNull(), + interval: PricingPlanIntervalEnum("interval"), + intervalCount: integer("interval_count"), + trialPeriodDays: integer("trial_period_days"), + metadata: jsonb("metadata"), + }, + (table) => { + return [ + // Mirroring index from Prisma schema + index("billing_prices_product_id_idx").on(table.productId), + ]; + }, +); + +export const billingPriceSelectSchema = createSelectSchema(billingPrices); + +export const billingSubscriptions = createTable( + "billing_subscriptions", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + priceId: varchar("price_id", { length: 191 }).notNull(), + quantity: integer("quantity").notNull(), + status: SubscriptionStatusEnum("status").notNull(), + cancelAtPeriodEnd: boolean("cancel_at_period_end").notNull(), + + // Dates + created: timestamp("created", { withTimezone: true }) + .notNull() + .defaultNow(), + currentPeriodStart: timestamp("current_period_start", { + withTimezone: true, + }) + .notNull() + .defaultNow(), + currentPeriodEnd: timestamp("current_period_end", { withTimezone: true }) + .notNull() + .defaultNow(), + endedAt: timestamp("ended_at", { withTimezone: true }), + cancelAt: timestamp("cancel_at", { withTimezone: true }), + canceledAt: timestamp("canceled_at", { withTimezone: true }), + trialStart: timestamp("trial_start", { withTimezone: true }), + trialEnd: timestamp("trial_end", { withTimezone: true }), + + metadata: jsonb("metadata"), + + // Foreign key reference + customerId: varchar("customer_id", { length: 191 }).notNull(), + }, + (table) => { + return [ + // Mirroring indexes from Prisma schema + index("billing_subscriptions_price_id_idx").on(table.priceId), + index("billing_subscriptions_customer_id_idx").on(table.customerId), + ]; + }, +); + +export const billingSubscriptionSelectSchema = + createSelectSchema(billingSubscriptions); + +export const billingCustomers = createTable( + "billing_customers", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + companyId: varchar("company_id", { length: 191 }), + }, + (table) => { + return [ + // Mirroring index from Prisma schema + index("billing_customers_company_id_idx").on(table.companyId), + ]; + }, +); + +export const billingCustomerSelectSchema = createSelectSchema(billingCustomers); diff --git a/packages/db/schema/buckets.ts b/packages/db/schema/buckets.ts new file mode 100644 index 000000000..a01798a8f --- /dev/null +++ b/packages/db/schema/buckets.ts @@ -0,0 +1,20 @@ +import { integer, timestamp, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { createTable } from "./index"; + +export const buckets = createTable("buckets", { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + name: varchar("name", { length: 191 }).notNull(), + key: varchar("key", { length: 191 }).notNull(), + mimeType: varchar("mime_type", { length: 191 }).notNull(), + size: integer("size").notNull(), + tags: varchar("tags", { length: 191 }).array().notNull(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), +}); + +export const bucketSelectSchema = createSelectSchema(buckets); diff --git a/packages/db/schema/companies.ts b/packages/db/schema/companies.ts new file mode 100644 index 000000000..9695b7d6c --- /dev/null +++ b/packages/db/schema/companies.ts @@ -0,0 +1,42 @@ +import { timestamp, uniqueIndex, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { createTable } from "./index"; + +export const companies = createTable( + "companies", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + name: varchar("name", { length: 191 }).notNull(), + logo: varchar("logo", { length: 191 }), + publicId: varchar("public_id", { length: 191 }).notNull().unique(), + website: varchar("website", { length: 191 }), + incorporationType: varchar("incorporation_type", { length: 191 }).notNull(), + incorporationDate: timestamp("incorporation_date", { + withTimezone: true, + }).notNull(), + incorporationCountry: varchar("incorporation_country", { + length: 191, + }).notNull(), + incorporationState: varchar("incorporation_state", { + length: 191, + }).notNull(), + + // Address fields + streetAddress: varchar("street_address", { length: 191 }).notNull(), + city: varchar("city", { length: 191 }).notNull(), + state: varchar("state", { length: 191 }).notNull(), + zipcode: varchar("zipcode", { length: 191 }).notNull(), + country: varchar("country", { length: 191 }).notNull(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [uniqueIndex("companies_public_id_unique").on(table.publicId)]; + }, +); + +export const companySelectSchema = createSelectSchema(companies); diff --git a/packages/db/schema/convertible-notes.ts b/packages/db/schema/convertible-notes.ts new file mode 100644 index 000000000..87456e2ba --- /dev/null +++ b/packages/db/schema/convertible-notes.ts @@ -0,0 +1,59 @@ +import { boolean, index, real, timestamp, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { + ConvertibleInterestAccrualEnum, + ConvertibleInterestMethodEnum, + ConvertibleInterestPaymentScheduleEnum, + ConvertibleStatusEnum, + ConvertibleTypeEnum, +} from "./enums"; +import { createTable } from "./index"; + +export const convertibleNotes = createTable( + "convertible_notes", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + publicId: varchar("public_id", { length: 191 }).notNull(), + status: ConvertibleStatusEnum("status").notNull().default("DRAFT"), + type: ConvertibleTypeEnum("type").notNull().default("NOTE"), + capital: real("capital").notNull(), + + conversionCap: real("conversion_cap"), + discountRate: real("discount_rate"), + mfn: boolean("mfn"), + additionalTerms: varchar("additional_terms", { length: 191 }), + + // Interest details + interestRate: real("interest_rate"), + interestMethod: ConvertibleInterestMethodEnum("interest_method"), + interestAccrual: ConvertibleInterestAccrualEnum("interest_accrual"), + interestPaymentSchedule: ConvertibleInterestPaymentScheduleEnum( + "interest_payment_schedule", + ), + + // Foreign key references + stakeholderId: varchar("stakeholder_id", { length: 191 }).notNull(), + companyId: varchar("company_id", { length: 191 }).notNull(), + + // Dates + issueDate: timestamp("issue_date", { withTimezone: true }).notNull(), + boardApprovalDate: timestamp("board_approval_date", { + withTimezone: true, + }).notNull(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring indexes from Prisma schema + index("convertible_notes_company_id_idx").on(table.companyId), + index("convertible_notes_stakeholder_id_idx").on(table.stakeholderId), + ]; + }, +); + +export const convertibleNoteSelectSchema = createSelectSchema(convertibleNotes); diff --git a/packages/db/schema/data-rooms.ts b/packages/db/schema/data-rooms.ts new file mode 100644 index 000000000..b98df1ef3 --- /dev/null +++ b/packages/db/schema/data-rooms.ts @@ -0,0 +1,145 @@ +import { + boolean, + index, + timestamp, + uniqueIndex, + varchar, +} from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { createTable } from "./index"; + +export const dataRooms = createTable( + "data_rooms", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + name: varchar("name", { length: 191 }).notNull(), + publicId: varchar("public_id", { length: 191 }).notNull().unique(), + public: boolean("public").notNull().default(false), + + // Foreign key reference + companyId: varchar("company_id", { length: 191 }).notNull(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring the indexes from Prisma schema + index("data_rooms_public_id_idx").on(table.publicId), + index("data_rooms_company_id_idx").on(table.companyId), + uniqueIndex("data_rooms_company_id_name_unique").on( + table.companyId, + table.name, + ), + ]; + }, +); + +export const dataRoomSelectSchema = createSelectSchema(dataRooms); + +export const dataRoomDocuments = createTable( + "data_room_documents", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + + // Foreign key references + dataRoomId: varchar("data_room_id", { length: 191 }).notNull(), + documentId: varchar("document_id", { length: 191 }).notNull(), + + // Timestamp + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + }, + (table) => { + return [ + // Mirroring the indexes from Prisma schema + index("data_room_documents_data_room_id_idx").on(table.dataRoomId), + index("data_room_documents_document_id_idx").on(table.documentId), + uniqueIndex("data_room_documents_data_room_id_document_id_unique").on( + table.dataRoomId, + table.documentId, + ), + ]; + }, +); + +export const dataRoomDocumentSelectSchema = + createSelectSchema(dataRoomDocuments); + +export const dataRoomRecipients = createTable( + "data_room_recipients", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + name: varchar("name", { length: 191 }), + email: varchar("email", { length: 191 }).notNull(), + + // Foreign key references + dataRoomId: varchar("data_room_id", { length: 191 }).notNull(), + memberId: varchar("member_id", { length: 191 }), + stakeholderId: varchar("stakeholder_id", { length: 191 }), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring the indexes from Prisma schema + index("data_room_recipients_id_data_room_id_idx").on( + table.id, + table.dataRoomId, + ), + index("data_room_recipients_member_id_idx").on(table.memberId), + index("data_room_recipients_data_room_id_idx").on(table.dataRoomId), + index("data_room_recipients_stakeholder_id_idx").on(table.stakeholderId), + uniqueIndex("data_room_recipients_data_room_id_email_unique").on( + table.dataRoomId, + table.email, + ), + ]; + }, +); + +export const dataRoomRecipientSelectSchema = + createSelectSchema(dataRoomRecipients); + +export const updateRecipients = createTable( + "update_recipients", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + name: varchar("name", { length: 191 }), + email: varchar("email", { length: 191 }).notNull(), + + // Foreign key references + updateId: varchar("update_id", { length: 191 }).notNull(), + memberId: varchar("member_id", { length: 191 }), + stakeholderId: varchar("stakeholder_id", { length: 191 }), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring the indexes from Prisma schema + index("update_recipients_id_update_id_idx").on(table.id, table.updateId), + index("update_recipients_member_id_idx").on(table.memberId), + index("update_recipients_update_id_idx").on(table.updateId), + index("update_recipients_stakeholder_id_idx").on(table.stakeholderId), + uniqueIndex("update_recipients_update_id_email_unique").on( + table.updateId, + table.email, + ), + ]; + }, +); + +export const updateRecipientSelectSchema = createSelectSchema(updateRecipients); diff --git a/packages/db/schema/documents.ts b/packages/db/schema/documents.ts new file mode 100644 index 000000000..9675635fa --- /dev/null +++ b/packages/db/schema/documents.ts @@ -0,0 +1,77 @@ +import { boolean, index, timestamp, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { createTable } from "./index"; + +export const documents = createTable( + "documents", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + publicId: varchar("public_id", { length: 191 }).notNull().unique(), + name: varchar("name", { length: 191 }).notNull(), + + // Foreign key references + bucketId: varchar("bucket_id", { length: 191 }).notNull(), + uploaderId: varchar("uploader_id", { length: 191 }), + companyId: varchar("company_id", { length: 191 }).notNull(), + + // Optional references + shareId: varchar("share_id", { length: 191 }), + optionId: varchar("option_id", { length: 191 }), + safeId: varchar("safe_id", { length: 191 }), + convertibleNoteId: varchar("convertible_note_id", { length: 191 }), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring the indexes from Prisma schema + index("documents_bucket_id_idx").on(table.bucketId), + index("documents_uploader_id_idx").on(table.uploaderId), + index("documents_company_id_idx").on(table.companyId), + index("documents_share_id_idx").on(table.shareId), + index("documents_option_id_idx").on(table.optionId), + index("documents_safe_id_idx").on(table.safeId), + index("documents_convertible_note_id_idx").on(table.convertibleNoteId), + ]; + }, +); + +export const documentSelectSchema = createSelectSchema(documents); + +export const documentShares = createTable( + "document_shares", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + link: varchar("link", { length: 191 }).notNull(), + publicId: varchar("public_id", { length: 191 }).notNull(), + linkExpiresAt: timestamp("link_expires_at", { + withTimezone: true, + }).notNull(), + recipients: varchar("recipients", { length: 191 }) + .array() + .notNull() + .default([]), + emailProtected: boolean("email_protected").notNull().default(false), + + // Foreign key reference + documentId: varchar("document_id", { length: 191 }).notNull(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring the index from Prisma schema + index("document_shares_document_id_idx").on(table.documentId), + ]; + }, +); + +export const documentShareSelectSchema = createSelectSchema(documentShares); diff --git a/packages/db/schema/enums.ts b/packages/db/schema/enums.ts new file mode 100644 index 000000000..7ac8e213d --- /dev/null +++ b/packages/db/schema/enums.ts @@ -0,0 +1,243 @@ +import { pgEnum } from "drizzle-orm/pg-core"; + +export const CredentialDeviceTypeEnum = pgEnum("CredentialDeviceTypeEnum", [ + "SINGLE_DEVICE", + "MULTI_DEVICE", +]); +export type CredentialDeviceTypeEnum = + (typeof CredentialDeviceTypeEnum.enumValues)[number]; + +export const BankAccountTypeEnum = pgEnum("BankAccountTypeEnum", [ + "CHECKING", + "SAVINGS", +]); +export type BankAccountTypeEnum = + (typeof BankAccountTypeEnum.enumValues)[number]; + +export const MemberStatusEnum = pgEnum("MemberStatusEnum", [ + "ACTIVE", + "INACTIVE", + "PENDING", +]); +export type MemberStatusEnum = (typeof MemberStatusEnum.enumValues)[number]; + +export const RolesEnum = pgEnum("Roles", ["ADMIN", "CUSTOM"]); +export type RoleEnum = (typeof RolesEnum.enumValues)[number]; + +export const StakeholderTypeEnum = pgEnum("StakeholderTypeEnum", [ + "INDIVIDUAL", + "INSTITUTION", +]); +export type StakeholderTypeEnum = + (typeof StakeholderTypeEnum.enumValues)[number]; + +export const StakeholderRelationshipEnum = pgEnum( + "StakeholderRelationshipEnum", + [ + "ADVISOR", + "BOARD_MEMBER", + "CONSULTANT", + "EMPLOYEE", + "EX_ADVISOR", + "EX_CONSULTANT", + "EX_EMPLOYEE", + "EXECUTIVE", + "FOUNDER", + "INVESTOR", + "NON_US_EMPLOYEE", + "OFFICER", + "OTHER", + ], +); +export type StakeholderRelationshipEnum = + (typeof StakeholderRelationshipEnum.enumValues)[number]; + +export const ShareTypeEnum = pgEnum("ShareTypeEnum", ["COMMON", "PREFERRED"]); +export type ShareTypeEnum = (typeof ShareTypeEnum.enumValues)[number]; + +export const SharePrefixEnum = pgEnum("SharePrefixEnum", ["CS", "PS"]); +export type SharePrefixEnum = (typeof SharePrefixEnum.enumValues)[number]; + +export const ConversionRightsEnum = pgEnum("ConversionRightsEnum", [ + "CONVERTS_TO_FUTURE_ROUND", + "CONVERTS_TO_SHARE_CLASS_ID", +]); +export type ConversionRightsEnum = + (typeof ConversionRightsEnum.enumValues)[number]; + +export const CancellationBehaviorEnum = pgEnum("CancellationBehaviorEnum", [ + "RETIRE", + "RETURN_TO_POOL", + "HOLD_AS_CAPITAL_STOCK", + "DEFINED_PER_PLAN_SECURITY", +]); +export type CancellationBehaviorEnum = + (typeof CancellationBehaviorEnum.enumValues)[number]; + +export const FieldTypesEnum = pgEnum("FieldTypes", [ + "TEXT", + "RADIO", + "EMAIL", + "DATE", + "DATETIME", + "TEXTAREA", + "CHECKBOX", + "SIGNATURE", + "SELECT", +]); +export type FieldTypesEnum = (typeof FieldTypesEnum.enumValues)[number]; + +export const TemplateStatusEnum = pgEnum("TemplateStatus", [ + "DRAFT", + "COMPLETE", + "SENT", + "WAITING", + "CANCELLED", +]); +export type TemplateStatusEnum = (typeof TemplateStatusEnum.enumValues)[number]; + +export const EsignRecipientStatusEnum = pgEnum("EsignRecipientStatus", [ + "SENT", + "SIGNED", + "PENDING", +]); +export type EsignRecipientStatusEnum = + (typeof EsignRecipientStatusEnum.enumValues)[number]; + +export const SecuritiesStatusEnum = pgEnum("SecuritiesStatusEnum", [ + "ACTIVE", + "DRAFT", + "SIGNED", + "PENDING", +]); +export type SecuritiesStatusEnum = + (typeof SecuritiesStatusEnum.enumValues)[number]; + +export const ShareLegendsEnum = pgEnum("ShareLegendsEnum", [ + "US_SECURITIES_ACT", + "SALE_AND_ROFR", + "TRANSFER_RESTRICTIONS", +]); +export type ShareLegendsEnum = (typeof ShareLegendsEnum.enumValues)[number]; + +export const OptionTypeEnum = pgEnum("OptionTypeEnum", ["ISO", "NSO", "RSU"]); +export type OptionTypeEnum = (typeof OptionTypeEnum.enumValues)[number]; + +export const OptionStatusEnum = pgEnum("OptionStatusEnum", [ + "DRAFT", + "ACTIVE", + "EXERCISED", + "EXPIRED", + "CANCELLED", +]); +export type OptionStatusEnum = (typeof OptionStatusEnum.enumValues)[number]; + +export const SafeTypeEnum = pgEnum("SafeTypeEnum", ["PRE_MONEY", "POST_MONEY"]); +export type SafeTypeEnum = (typeof SafeTypeEnum.enumValues)[number]; + +export const SafeStatusEnum = pgEnum("SafeStatusEnum", [ + "DRAFT", + "ACTIVE", + "PENDING", + "EXPIRED", + "CANCELLED", +]); +export type SafeStatusEnum = (typeof SafeStatusEnum.enumValues)[number]; + +export const SafeTemplateEnum = pgEnum("SafeTemplateEnum", [ + "POST_MONEY_CAP", + "POST_MONEY_DISCOUNT", + "POST_MONEY_MFN", + "POST_MONEY_CAP_WITH_PRO_RATA", + "POST_MONEY_DISCOUNT_WITH_PRO_RATA", + "POST_MONEY_MFN_WITH_PRO_RATA", + "CUSTOM", +]); +export type SafeTemplateEnum = (typeof SafeTemplateEnum.enumValues)[number]; + +export const ConvertibleStatusEnum = pgEnum("ConvertibleStatusEnum", [ + "DRAFT", + "ACTIVE", + "PENDING", + "EXPIRED", + "CANCELLED", +]); +export type ConvertibleStatusEnum = + (typeof ConvertibleStatusEnum.enumValues)[number]; + +export const ConvertibleTypeEnum = pgEnum("ConvertibleTypeEnum", [ + "CCD", + "OCD", + "NOTE", +]); +export type ConvertibleTypeEnum = + (typeof ConvertibleTypeEnum.enumValues)[number]; + +export const ConvertibleInterestAccrualEnum = pgEnum( + "ConvertibleInterestAccrualEnum", + ["DAILY", "MONTHLY", "SEMI_ANNUALLY", "ANNUALLY", "YEARLY", "CONTINUOUSLY"], +); +export type ConvertibleInterestAccrualEnum = + (typeof ConvertibleInterestAccrualEnum.enumValues)[number]; + +export const ConvertibleInterestMethodEnum = pgEnum( + "ConvertibleInterestMethodEnum", + ["SIMPLE", "COMPOUND"], +); +export type ConvertibleInterestMethodEnum = + (typeof ConvertibleInterestMethodEnum.enumValues)[number]; + +export const ConvertibleInterestPaymentScheduleEnum = pgEnum( + "ConvertibleInterestPaymentScheduleEnum", + ["DEFERRED", "PAY_AT_MATURITY"], +); +export type ConvertibleInterestPaymentScheduleEnum = + (typeof ConvertibleInterestPaymentScheduleEnum.enumValues)[number]; + +export const UpdateStatusEnum = pgEnum("UpdateStatusEnum", [ + "DRAFT", + "PUBLIC", + "PRIVATE", +]); +export type UpdateStatusEnum = (typeof UpdateStatusEnum.enumValues)[number]; + +export const PricingTypeEnum = pgEnum("PricingType", ["one_time", "recurring"]); +export type PricingTypeEnum = (typeof PricingTypeEnum.enumValues)[number]; + +export const PricingPlanIntervalEnum = pgEnum("PricingPlanInterval", [ + "day", + "week", + "month", + "year", +]); +export type PricingPlanIntervalEnum = + (typeof PricingPlanIntervalEnum.enumValues)[number]; + +export const SubscriptionStatusEnum = pgEnum("SubscriptionStatus", [ + "trialing", + "active", + "canceled", + "incomplete", + "incomplete_expired", + "past_due", + "unpaid", + "paused", +]); +export type SubscriptionStatusEnum = + (typeof SubscriptionStatusEnum.enumValues)[number]; + +export const AccessTokenTypeEnum = pgEnum("AccessTokenType", [ + "sig", + "doc", + "api", + "upd", +]); +export type AccessTokenTypeEnum = + (typeof AccessTokenTypeEnum.enumValues)[number]; + +export const AuditActionEnum = pgEnum("AuditAction", [ + "CREATE", + "UPDATE", + "DELETE", +]); +export type AuditActionEnum = (typeof AuditActionEnum.enumValues)[number]; diff --git a/packages/db/schema/equity-plans.ts b/packages/db/schema/equity-plans.ts new file mode 100644 index 000000000..6c4ca09e2 --- /dev/null +++ b/packages/db/schema/equity-plans.ts @@ -0,0 +1,42 @@ +import { bigint, index, timestamp, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { CancellationBehaviorEnum } from "./enums"; +import { createTable } from "./index"; + +export const equityPlans = createTable( + "equity_plans", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + name: varchar("name", { length: 191 }).notNull(), + boardApprovalDate: timestamp("board_approval_date", { + withTimezone: true, + }).notNull(), + planEffectiveDate: timestamp("plan_effective_date", { withTimezone: true }), + initialSharesReserved: bigint("initial_shares_reserved", { + mode: "number", + }).notNull(), + defaultCancellatonBehavior: CancellationBehaviorEnum( + "default_cancellaton_behavior", + ).notNull(), + comments: varchar("comments", { length: 191 }), + + // Foreign key references + companyId: varchar("company_id", { length: 191 }).notNull(), + shareClassId: varchar("share_class_id", { length: 191 }).notNull(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring indexes from Prisma schema + index("equity_plans_share_class_id_idx").on(table.shareClassId), + index("equity_plans_company_id_idx").on(table.companyId), + ]; + }, +); + +export const equityPlanSelectSchema = createSelectSchema(equityPlans); diff --git a/packages/db/schema/index.ts b/packages/db/schema/index.ts new file mode 100644 index 000000000..d889cb054 --- /dev/null +++ b/packages/db/schema/index.ts @@ -0,0 +1,28 @@ +export { createTable } from "./table"; + +export * from "./enums"; +export * from "./accounts"; +export * from "./sessions"; +export * from "./users"; +export * from "./passkeys"; +export * from "./verification-tokens"; +export * from "./companies"; +export * from "./bank-accounts"; +export * from "./members"; +export * from "./stakeholders"; +export * from "./audits"; +export * from "./share-classes"; +export * from "./equity-plans"; +export * from "./buckets"; +export * from "./documents"; +export * from "./data-rooms"; +export * from "./templates"; +export * from "./shares"; +export * from "./options"; +export * from "./investments"; +export * from "./safes"; +export * from "./convertible-notes"; +export * from "./updates"; +export * from "./billing"; +export * from "./access-tokens"; +export * from "./relations"; diff --git a/packages/db/schema/investments.ts b/packages/db/schema/investments.ts new file mode 100644 index 000000000..148d5ffc0 --- /dev/null +++ b/packages/db/schema/investments.ts @@ -0,0 +1,35 @@ +import { bigint, index, real, timestamp, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { createTable } from "./index"; + +export const investments = createTable( + "investments", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + amount: real("amount").notNull(), + shares: bigint("shares", { mode: "number" }).notNull(), + date: timestamp("date", { withTimezone: true }).notNull(), + comments: varchar("comments", { length: 191 }), + + // Foreign key references + shareClassId: varchar("share_class_id", { length: 191 }).notNull(), + companyId: varchar("company_id", { length: 191 }).notNull(), + stakeholderId: varchar("stakeholder_id", { length: 191 }).notNull(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring indexes from Prisma schema + index("investments_company_id_idx").on(table.companyId), + index("investments_share_class_id_idx").on(table.shareClassId), + index("investments_stakeholder_id_idx").on(table.stakeholderId), + ]; + }, +); + +export const investmentSelectSchema = createSelectSchema(investments); diff --git a/packages/db/schema/members.ts b/packages/db/schema/members.ts new file mode 100644 index 000000000..fe9095561 --- /dev/null +++ b/packages/db/schema/members.ts @@ -0,0 +1,73 @@ +import { + boolean, + index, + timestamp, + uniqueIndex, + varchar, +} from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { MemberStatusEnum, RolesEnum } from "./enums"; +import { createTable } from "./index"; + +export const members = createTable( + "members", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + title: varchar("title", { length: 191 }), + status: MemberStatusEnum("status").notNull().default("PENDING"), + isOnboarded: boolean("is_onboarded").notNull().default(false), + role: RolesEnum("role").default("ADMIN"), + workEmail: varchar("work_email", { length: 191 }), + lastAccessed: timestamp("last_accessed", { withTimezone: true }) + .notNull() + .defaultNow(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + + // Foreign key references + userId: varchar("user_id", { length: 191 }).notNull(), + companyId: varchar("company_id", { length: 191 }).notNull(), + customRoleId: varchar("custom_role_id", { length: 191 }), + }, + (table) => { + return [ + // Mirroring the indexes from Prisma schema + index("members_company_id_idx").on(table.companyId), + index("members_status_idx").on(table.status), + index("members_user_id_idx").on(table.userId), + index("members_custom_role_id_idx").on(table.customRoleId), + uniqueIndex("members_company_id_user_id_unique").on( + table.companyId, + table.userId, + ), + ]; + }, +); + +export const memberSelectSchema = createSelectSchema(members); + +export const customRoles = createTable( + "custom_roles", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + name: varchar("name", { length: 191 }).notNull(), + + // Foreign key reference + companyId: varchar("company_id", { length: 191 }).notNull(), + + // JSON array field + permissions: varchar("permissions", { length: 191 }).array(), + }, + (table) => { + return [ + // Mirroring the index from Prisma schema + index("custom_roles_company_id_idx").on(table.companyId), + ]; + }, +); + +export const customRoleSelectSchema = createSelectSchema(customRoles); diff --git a/packages/db/schema/options.ts b/packages/db/schema/options.ts new file mode 100644 index 000000000..9451a0777 --- /dev/null +++ b/packages/db/schema/options.ts @@ -0,0 +1,53 @@ +import { index, integer, real, timestamp, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { OptionStatusEnum, OptionTypeEnum } from "./enums"; +import { createTable } from "./index"; + +export const options = createTable( + "options", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + grantId: varchar("grant_id", { length: 191 }).notNull(), + quantity: integer("quantity").notNull(), + exercisePrice: real("exercise_price").notNull(), + + type: OptionTypeEnum("type").notNull(), + status: OptionStatusEnum("status").notNull().default("DRAFT"), + cliffYears: integer("cliff_years").notNull().default(0), + vestingYears: integer("vesting_years").notNull().default(0), + + // Dates + issueDate: timestamp("issue_date", { withTimezone: true }).notNull(), + expirationDate: timestamp("expiration_date", { + withTimezone: true, + }).notNull(), + vestingStartDate: timestamp("vesting_start_date", { + withTimezone: true, + }).notNull(), + boardApprovalDate: timestamp("board_approval_date", { + withTimezone: true, + }).notNull(), + rule144Date: timestamp("rule_144_date", { withTimezone: true }).notNull(), + + // Foreign key references + stakeholderId: varchar("stakeholder_id", { length: 191 }).notNull(), + companyId: varchar("company_id", { length: 191 }).notNull(), + equityPlanId: varchar("equity_plan_id", { length: 191 }).notNull(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring indexes from Prisma schema + index("options_company_id_idx").on(table.companyId), + index("options_equity_plan_id_idx").on(table.equityPlanId), + index("options_stakeholder_id_idx").on(table.stakeholderId), + ]; + }, +); + +export const optionSelectSchema = createSelectSchema(options); diff --git a/packages/db/schema/passkeys.ts b/packages/db/schema/passkeys.ts new file mode 100644 index 000000000..50b04b0d4 --- /dev/null +++ b/packages/db/schema/passkeys.ts @@ -0,0 +1,47 @@ +import { + bigint, + boolean, + index, + timestamp, + varchar, +} from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { CredentialDeviceTypeEnum } from "./enums"; +import { createTable } from "./index"; + +export const passkeys = createTable( + "passkeys", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + name: varchar("name", { length: 191 }).notNull(), + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }) + .notNull() + .defaultNow(), + lastUsedAt: timestamp("last_used_at", { withTimezone: true }), + credentialId: varchar("credential_id", { length: 191 }).notNull(), // Using varchar instead of Bytes + credentialPublicKey: varchar("credential_public_key", { + length: 191, + }).notNull(), // Using varchar instead of Bytes + counter: bigint("counter", { mode: "number" }).notNull(), + credentialDeviceType: CredentialDeviceTypeEnum( + "credential_device_type", + ).notNull(), + credentialBackedUp: boolean("credential_backed_up").notNull(), + // String[] is represented as an array of varchar + transports: varchar("transports", { length: 191 }).array().notNull(), + + // Foreign key reference + userId: varchar("user_id", { length: 191 }).notNull(), + }, + (table) => { + return [ + // Mirroring index from Prisma schema + index("passkeys_user_id_idx").on(table.userId), + ]; + }, +); + +export const passkeySelectSchema = createSelectSchema(passkeys); diff --git a/packages/db/schema/relations.ts b/packages/db/schema/relations.ts new file mode 100644 index 000000000..1b779e530 --- /dev/null +++ b/packages/db/schema/relations.ts @@ -0,0 +1,535 @@ +import { relations } from "drizzle-orm"; +import { accounts } from "./accounts"; +import { sessions } from "./sessions"; +import { users } from "./users"; +import { + verificationTokens, + passkeyVerificationTokens, + passwordResetTokens, +} from "./verification-tokens"; +import { passkeys } from "./passkeys"; +import { members } from "./members"; +import { accessTokens } from "./access-tokens"; +import { companies } from "./companies"; +import { bankAccounts } from "./bank-accounts"; +import { stakeholders } from "./stakeholders"; +import { audits } from "./audits"; +import { shareClasses } from "./share-classes"; +import { equityPlans } from "./equity-plans"; +import { documents } from "./documents"; +import { templates, templateFields, esignRecipients } from "./templates"; +import { shares } from "./shares"; +import { options } from "./options"; +import { investments } from "./investments"; +import { safes } from "./safes"; +import { convertibleNotes } from "./convertible-notes"; +import { + dataRooms, + dataRoomDocuments, + dataRoomRecipients, + updateRecipients, +} from "./data-rooms"; +import { + billingCustomers, + billingSubscriptions, + billingPrices, + billingProducts, +} from "./billing"; +import { customRoles } from "./members"; +import { updates } from "./updates"; +import { esignAudits } from "./updates"; +import { buckets } from "./buckets"; +import { documentShares } from "./documents"; + +// User relations +export const usersRelations = relations(users, ({ many }) => ({ + accounts: many(accounts), + sessions: many(sessions), + memberships: many(members), + passkeys: many(passkeys), + verificationTokens: many(verificationTokens), + accessTokens: many(accessTokens), +})); + +// Account relations +export const accountsRelations = relations(accounts, ({ one }) => ({ + user: one(users, { + fields: [accounts.userId], + references: [users.id], + }), +})); + +// Session relations +export const sessionsRelations = relations(sessions, ({ one }) => ({ + user: one(users, { + fields: [sessions.userId], + references: [users.id], + }), +})); + +// Verification token relations +export const verificationTokensRelations = relations( + verificationTokens, + ({ one }) => ({ + user: one(users, { + fields: [verificationTokens.userId], + references: [users.id], + }), + }), +); + +// Passkey relations +export const passkeysRelations = relations(passkeys, ({ one }) => ({ + user: one(users, { + fields: [passkeys.userId], + references: [users.id], + }), +})); + +// Access token relations +export const accessTokensRelations = relations(accessTokens, ({ one }) => ({ + user: one(users, { + fields: [accessTokens.userId], + references: [users.id], + }), +})); + +// Company relations +export const companiesRelations = relations(companies, ({ many }) => ({ + bankAccounts: many(bankAccounts), + users: many(members), + audits: many(audits), + shareClasses: many(shareClasses), + equityPlans: many(equityPlans), + documents: many(documents), + templates: many(templates), + stakeholders: many(stakeholders), + investments: many(investments), + shares: many(shares), + options: many(options), + safes: many(safes), + convertibleNotes: many(convertibleNotes), + dataRooms: many(dataRooms), + eSignAudits: many(esignAudits), + billingCustomers: many(billingCustomers), + customRoles: many(customRoles), + updates: many(updates), +})); + +// Bank Account relations +export const bankAccountsRelations = relations(bankAccounts, ({ one }) => ({ + company: one(companies, { + fields: [bankAccounts.companyId], + references: [companies.id], + }), +})); + +// Member relations +export const membersRelations = relations(members, ({ one, many }) => ({ + user: one(users, { + fields: [members.userId], + references: [users.id], + }), + company: one(companies, { + fields: [members.companyId], + references: [companies.id], + }), + customRole: one(customRoles, { + fields: [members.customRoleId], + references: [customRoles.id], + }), + documentReceived: many(esignRecipients), + documents: many(documents), + templates: many(templates), + updates: many(updates), + dataRooms: many(dataRoomRecipients), + updateRecipients: many(updateRecipients), +})); + +// Custom Role relations +export const customRolesRelations = relations(customRoles, ({ one, many }) => ({ + company: one(companies, { + fields: [customRoles.companyId], + references: [companies.id], + }), + members: many(members), +})); + +// Stakeholder relations +export const stakeholdersRelations = relations( + stakeholders, + ({ one, many }) => ({ + company: one(companies, { + fields: [stakeholders.companyId], + references: [companies.id], + }), + investments: many(investments), + shares: many(shares), + options: many(options), + safes: many(safes), + convertibleNotes: many(convertibleNotes), + updates: many(updateRecipients), + dataRooms: many(dataRoomRecipients), + }), +); + +// Audit relations +export const auditsRelations = relations(audits, ({ one }) => ({ + company: one(companies, { + fields: [audits.companyId], + references: [companies.id], + }), +})); + +// Share Class relations +export const shareClassesRelations = relations( + shareClasses, + ({ one, many }) => ({ + company: one(companies, { + fields: [shareClasses.companyId], + references: [companies.id], + }), + equityPlans: many(equityPlans), + investments: many(investments), + shares: many(shares), + }), +); + +// Equity Plan relations +export const equityPlansRelations = relations(equityPlans, ({ one, many }) => ({ + company: one(companies, { + fields: [equityPlans.companyId], + references: [companies.id], + }), + shareClass: one(shareClasses, { + fields: [equityPlans.shareClassId], + references: [shareClasses.id], + }), + options: many(options), +})); + +// Bucket relations +export const bucketsRelations = relations(buckets, ({ many }) => ({ + documents: many(documents), + templates: many(templates), +})); + +// Document relations +export const documentsRelations = relations(documents, ({ one, many }) => ({ + bucket: one(buckets, { + fields: [documents.bucketId], + references: [buckets.id], + }), + uploader: one(members, { + fields: [documents.uploaderId], + references: [members.id], + }), + company: one(companies, { + fields: [documents.companyId], + references: [companies.id], + }), + share: one(shares, { + fields: [documents.shareId], + references: [shares.id], + }), + option: one(options, { + fields: [documents.optionId], + references: [options.id], + }), + safe: one(safes, { + fields: [documents.safeId], + references: [safes.id], + }), + convertibleNote: one(convertibleNotes, { + fields: [documents.convertibleNoteId], + references: [convertibleNotes.id], + }), + dataRooms: many(dataRoomDocuments), + documentShares: many(documentShares), +})); + +// Document Share relations +export const documentSharesRelations = relations(documentShares, ({ one }) => ({ + document: one(documents, { + fields: [documentShares.documentId], + references: [documents.id], + }), +})); + +// Data Room relations +export const dataRoomsRelations = relations(dataRooms, ({ one, many }) => ({ + company: one(companies, { + fields: [dataRooms.companyId], + references: [companies.id], + }), + documents: many(dataRoomDocuments), + recipients: many(dataRoomRecipients), +})); + +// Data Room Document relations +export const dataRoomDocumentsRelations = relations( + dataRoomDocuments, + ({ one }) => ({ + dataRoom: one(dataRooms, { + fields: [dataRoomDocuments.dataRoomId], + references: [dataRooms.id], + }), + document: one(documents, { + fields: [dataRoomDocuments.documentId], + references: [documents.id], + }), + }), +); + +// Data Room Recipient relations +export const dataRoomRecipientsRelations = relations( + dataRoomRecipients, + ({ one }) => ({ + dataRoom: one(dataRooms, { + fields: [dataRoomRecipients.dataRoomId], + references: [dataRooms.id], + }), + member: one(members, { + fields: [dataRoomRecipients.memberId], + references: [members.id], + }), + stakeholder: one(stakeholders, { + fields: [dataRoomRecipients.stakeholderId], + references: [stakeholders.id], + }), + }), +); + +// Update relations +export const updatesRelations = relations(updates, ({ one, many }) => ({ + author: one(members, { + fields: [updates.authorId], + references: [members.id], + }), + company: one(companies, { + fields: [updates.companyId], + references: [companies.id], + }), + recipients: many(updateRecipients), +})); + +// Update Recipient relations +export const updateRecipientsRelations = relations( + updateRecipients, + ({ one }) => ({ + update: one(updates, { + fields: [updateRecipients.updateId], + references: [updates.id], + }), + member: one(members, { + fields: [updateRecipients.memberId], + references: [members.id], + }), + stakeholder: one(stakeholders, { + fields: [updateRecipients.stakeholderId], + references: [stakeholders.id], + }), + }), +); + +// Share relations +export const sharesRelations = relations(shares, ({ one, many }) => ({ + stakeholder: one(stakeholders, { + fields: [shares.stakeholderId], + references: [stakeholders.id], + }), + company: one(companies, { + fields: [shares.companyId], + references: [companies.id], + }), + shareClass: one(shareClasses, { + fields: [shares.shareClassId], + references: [shareClasses.id], + }), + documents: many(documents), +})); + +// Option relations +export const optionsRelations = relations(options, ({ one, many }) => ({ + stakeholder: one(stakeholders, { + fields: [options.stakeholderId], + references: [stakeholders.id], + }), + company: one(companies, { + fields: [options.companyId], + references: [companies.id], + }), + equityPlan: one(equityPlans, { + fields: [options.equityPlanId], + references: [equityPlans.id], + }), + documents: many(documents), +})); + +// Investment relations +export const investmentsRelations = relations(investments, ({ one }) => ({ + shareClass: one(shareClasses, { + fields: [investments.shareClassId], + references: [shareClasses.id], + }), + company: one(companies, { + fields: [investments.companyId], + references: [companies.id], + }), + stakeholder: one(stakeholders, { + fields: [investments.stakeholderId], + references: [stakeholders.id], + }), +})); + +// Safe relations +export const safesRelations = relations(safes, ({ one, many }) => ({ + stakeholder: one(stakeholders, { + fields: [safes.stakeholderId], + references: [stakeholders.id], + }), + company: one(companies, { + fields: [safes.companyId], + references: [companies.id], + }), + documents: many(documents), +})); + +// Convertible Note relations +export const convertibleNotesRelations = relations( + convertibleNotes, + ({ one, many }) => ({ + stakeholder: one(stakeholders, { + fields: [convertibleNotes.stakeholderId], + references: [stakeholders.id], + }), + company: one(companies, { + fields: [convertibleNotes.companyId], + references: [companies.id], + }), + documents: many(documents), + }), +); + +// Template relations +export const templatesRelations = relations(templates, ({ one, many }) => ({ + bucket: one(buckets, { + fields: [templates.bucketId], + references: [buckets.id], + }), + uploader: one(members, { + fields: [templates.uploaderId], + references: [members.id], + }), + company: one(companies, { + fields: [templates.companyId], + references: [companies.id], + }), + fields: many(templateFields), + eSignRecipient: many(esignRecipients), + eSignAudits: many(esignAudits), +})); + +// ESign Recipient relations +export const esignRecipientsRelations = relations( + esignRecipients, + ({ one, many }) => ({ + template: one(templates, { + fields: [esignRecipients.templateId], + references: [templates.id], + }), + member: one(members, { + fields: [esignRecipients.memberId], + references: [members.id], + }), + templateFields: many(templateFields), + eSignAudits: many(esignAudits), + }), +); + +// Template Field relations +export const templateFieldsRelations = relations(templateFields, ({ one }) => ({ + recipient: one(esignRecipients, { + fields: [templateFields.recipientId], + references: [esignRecipients.id], + }), + template: one(templates, { + fields: [templateFields.templateId], + references: [templates.id], + }), +})); + +// ESign Audit relations +export const esignAuditsRelations = relations(esignAudits, ({ one }) => ({ + company: one(companies, { + fields: [esignAudits.companyId], + references: [companies.id], + }), + template: one(templates, { + fields: [esignAudits.templateId], + references: [templates.id], + }), + recipient: one(esignRecipients, { + fields: [esignAudits.recipientId], + references: [esignRecipients.id], + }), +})); + +// Billing Customer relations +export const billingCustomersRelations = relations( + billingCustomers, + ({ one, many }) => ({ + company: one(companies, { + fields: [billingCustomers.companyId], + references: [companies.id], + }), + subscriptions: many(billingSubscriptions), + }), +); + +// Billing Product relations +export const billingProductsRelations = relations( + billingProducts, + ({ many }) => ({ + prices: many(billingPrices), + }), +); + +// Billing Price relations +export const billingPricesRelations = relations( + billingPrices, + ({ one, many }) => ({ + product: one(billingProducts, { + fields: [billingPrices.productId], + references: [billingProducts.id], + }), + subscriptions: many(billingSubscriptions), + }), +); + +// Billing Subscription relations +export const billingSubscriptionsRelations = relations( + billingSubscriptions, + ({ one }) => ({ + price: one(billingPrices, { + fields: [billingSubscriptions.priceId], + references: [billingPrices.id], + }), + customer: one(billingCustomers, { + fields: [billingSubscriptions.customerId], + references: [billingCustomers.id], + }), + }), +); + +// Password Reset Token relations +export const passwordResetTokensRelations = relations( + passwordResetTokens, + () => ({}), +); + +// Passkey Verification Token relations +export const passkeyVerificationTokensRelations = relations( + passkeyVerificationTokens, + () => ({}), +); diff --git a/packages/db/schema/safes.ts b/packages/db/schema/safes.ts new file mode 100644 index 000000000..1cb777e16 --- /dev/null +++ b/packages/db/schema/safes.ts @@ -0,0 +1,48 @@ +import { boolean, index, real, timestamp, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { SafeStatusEnum, SafeTemplateEnum, SafeTypeEnum } from "./enums"; +import { createTable } from "./index"; + +export const safes = createTable( + "safes", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + publicId: varchar("public_id", { length: 191 }).notNull(), + type: SafeTypeEnum("type").notNull().default("POST_MONEY"), + status: SafeStatusEnum("status").notNull().default("DRAFT"), + capital: real("capital").notNull(), + safeTemplate: SafeTemplateEnum("safe_template"), + safeId: varchar("safe_id", { length: 191 }), + + valuationCap: real("valuation_cap"), + discountRate: real("discount_rate"), + mfn: boolean("mfn").notNull().default(false), + proRata: boolean("pro_rata").notNull().default(false), + additionalTerms: varchar("additional_terms", { length: 191 }), + + // Foreign key references + stakeholderId: varchar("stakeholder_id", { length: 191 }).notNull(), + companyId: varchar("company_id", { length: 191 }).notNull(), + + // Dates + issueDate: timestamp("issue_date", { withTimezone: true }).notNull(), + boardApprovalDate: timestamp("board_approval_date", { + withTimezone: true, + }).notNull(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring indexes from Prisma schema + index("safes_company_id_idx").on(table.companyId), + index("safes_stakeholder_id_idx").on(table.stakeholderId), + ]; + }, +); + +export const safeSelectSchema = createSelectSchema(safes); diff --git a/packages/db/schema/sessions.ts b/packages/db/schema/sessions.ts new file mode 100644 index 000000000..7e559099b --- /dev/null +++ b/packages/db/schema/sessions.ts @@ -0,0 +1,21 @@ +import { index, timestamp, uniqueIndex, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { createTable } from "./index"; + +export const sessions = createTable( + "sessions", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + sessionToken: varchar("session_token", { length: 191 }).notNull(), + userId: varchar("user_id", { length: 191 }).notNull(), + expires: timestamp("expires", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + uniqueIndex("sessions_session_token_idx").on(table.sessionToken), + index("sessions_user_id_idx").on(table.userId), + ]; + }, +); + +export const sessionSelectSchema = createSelectSchema(sessions); diff --git a/packages/db/schema/share-classes.ts b/packages/db/schema/share-classes.ts new file mode 100644 index 000000000..e9e6df543 --- /dev/null +++ b/packages/db/schema/share-classes.ts @@ -0,0 +1,71 @@ +import { + bigint, + index, + integer, + real, + timestamp, + uniqueIndex, + varchar, +} from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { ConversionRightsEnum, SharePrefixEnum, ShareTypeEnum } from "./enums"; +import { createTable } from "./index"; + +export const shareClasses = createTable( + "share_classes", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + idx: integer("idx").notNull(), + name: varchar("name", { length: 191 }).notNull(), + classType: ShareTypeEnum("class_type").notNull().default("COMMON"), + prefix: SharePrefixEnum("prefix").notNull().default("CS"), + initialSharesAuthorized: bigint("initial_shares_authorized", { + mode: "number", + }).notNull(), + boardApprovalDate: timestamp("board_approval_date", { + withTimezone: true, + }).notNull(), + stockholderApprovalDate: timestamp("stockholder_approval_date", { + withTimezone: true, + }).notNull(), + votesPerShare: integer("votes_per_share").notNull(), + parValue: real("par_value").notNull(), + pricePerShare: real("price_per_share").notNull(), + seniority: integer("seniority").notNull(), + + // Conversion Rights + conversionRights: ConversionRightsEnum("conversion_rights") + .notNull() + .default("CONVERTS_TO_FUTURE_ROUND"), + convertsToShareClassId: varchar("converts_to_share_class_id", { + length: 191, + }), + + // Liquidation and participation + liquidationPreferenceMultiple: real( + "liquidation_preference_multiple", + ).notNull(), + participationCapMultiple: real("participation_cap_multiple").notNull(), + + // Foreign key reference + companyId: varchar("company_id", { length: 191 }).notNull(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring the indexes from Prisma schema + index("share_classes_company_id_idx").on(table.companyId), + uniqueIndex("share_classes_company_id_idx_unique").on( + table.companyId, + table.idx, + ), + ]; + }, +); + +export const shareClassSelectSchema = createSelectSchema(shareClasses); diff --git a/packages/db/schema/shares.ts b/packages/db/schema/shares.ts new file mode 100644 index 000000000..88921d0d4 --- /dev/null +++ b/packages/db/schema/shares.ts @@ -0,0 +1,57 @@ +import { index, integer, real, timestamp, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { SecuritiesStatusEnum, ShareLegendsEnum } from "./enums"; +import { createTable } from "./index"; + +export const shares = createTable( + "shares", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + status: SecuritiesStatusEnum("status").notNull().default("DRAFT"), + + certificateId: varchar("certificate_id", { length: 191 }).notNull(), + quantity: integer("quantity").notNull(), + pricePerShare: real("price_per_share"), + capitalContribution: real("capital_contribution"), + ipContribution: real("ip_contribution"), + debtCancelled: real("debt_cancelled"), + otherContributions: real("other_contributions"), + + cliffYears: integer("cliff_years").notNull().default(0), + vestingYears: integer("vesting_years").notNull().default(0), + + companyLegends: ShareLegendsEnum("company_legends") + .array() + .notNull() + .default([]), + + // Dates + issueDate: timestamp("issue_date", { withTimezone: true }).notNull(), + rule144Date: timestamp("rule_144_date", { withTimezone: true }), + vestingStartDate: timestamp("vesting_start_date", { withTimezone: true }), + boardApprovalDate: timestamp("board_approval_date", { + withTimezone: true, + }).notNull(), + + // Foreign key references + stakeholderId: varchar("stakeholder_id", { length: 191 }).notNull(), + companyId: varchar("company_id", { length: 191 }).notNull(), + shareClassId: varchar("share_class_id", { length: 191 }).notNull(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring the indexes from Prisma schema + index("shares_company_id_idx").on(table.companyId), + index("shares_stakeholder_id_idx").on(table.stakeholderId), + index("shares_share_class_id_idx").on(table.shareClassId), + ]; + }, +); + +export const shareSelectSchema = createSelectSchema(shares); diff --git a/packages/db/schema/stakeholders.ts b/packages/db/schema/stakeholders.ts new file mode 100644 index 000000000..ebed7e79d --- /dev/null +++ b/packages/db/schema/stakeholders.ts @@ -0,0 +1,45 @@ +import { index, timestamp, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { StakeholderRelationshipEnum, StakeholderTypeEnum } from "./enums"; +import { createTable } from "./index"; + +export const stakeholders = createTable( + "stakeholders", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + name: varchar("name", { length: 191 }).notNull(), + email: varchar("email", { length: 191 }).notNull().unique(), + institutionName: varchar("institution_name", { length: 191 }), + stakeholderType: StakeholderTypeEnum("stakeholder_type") + .notNull() + .default("INDIVIDUAL"), + currentRelationship: StakeholderRelationshipEnum("current_relationship") + .notNull() + .default("EMPLOYEE"), + taxId: varchar("tax_id", { length: 191 }), + + // Address fields + streetAddress: varchar("street_address", { length: 191 }), + city: varchar("city", { length: 191 }), + state: varchar("state", { length: 191 }), + zipcode: varchar("zipcode", { length: 191 }), + country: varchar("country", { length: 191 }).notNull().default("US"), + + // Foreign key reference + companyId: varchar("company_id", { length: 191 }).notNull(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring the index from Prisma schema + index("stakeholders_company_id_idx").on(table.companyId), + ]; + }, +); + +export const stakeholderSelectSchema = createSelectSchema(stakeholders); diff --git a/packages/db/schema/table.ts b/packages/db/schema/table.ts new file mode 100644 index 000000000..2c3fd82b0 --- /dev/null +++ b/packages/db/schema/table.ts @@ -0,0 +1,2 @@ +import { pgTableCreator } from "drizzle-orm/pg-core"; +export const createTable = pgTableCreator((name) => `cap_${name}`); diff --git a/packages/db/schema/templates.ts b/packages/db/schema/templates.ts new file mode 100644 index 000000000..7d63f90d1 --- /dev/null +++ b/packages/db/schema/templates.ts @@ -0,0 +1,123 @@ +import { + boolean, + index, + integer, + jsonb, + timestamp, + varchar, +} from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { + EsignRecipientStatusEnum, + FieldTypesEnum, + TemplateStatusEnum, +} from "./enums"; +import { createTable } from "./index"; + +export const templates = createTable( + "templates", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + publicId: varchar("public_id", { length: 191 }).notNull(), + name: varchar("name", { length: 191 }).notNull(), + status: TemplateStatusEnum("status").notNull().default("DRAFT"), + orderedDelivery: boolean("ordered_delivery").notNull().default(false), + message: varchar("message", { length: 191 }), + + // Foreign key references + bucketId: varchar("bucket_id", { length: 191 }).notNull(), + uploaderId: varchar("uploader_id", { length: 191 }).notNull(), + companyId: varchar("company_id", { length: 191 }).notNull(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + completedOn: timestamp("completed_on", { withTimezone: true }), + }, + (table) => { + return [ + // Mirroring the indexes from Prisma schema + index("templates_bucket_id_idx").on(table.bucketId), + index("templates_uploader_id_idx").on(table.uploaderId), + index("templates_company_id_idx").on(table.companyId), + ]; + }, +); + +export const templateSelectSchema = createSelectSchema(templates); + +export const templateFields = createTable( + "template_fields", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + name: varchar("name", { length: 191 }).notNull(), + type: FieldTypesEnum("type").notNull().default("TEXT"), + defaultValue: varchar("default_value", { length: 191 }) + .notNull() + .default(""), + readOnly: boolean("read_only").notNull().default(false), + required: boolean("required").notNull().default(false), + prefilledValue: varchar("prefilled_value", { length: 191 }), + top: integer("top").notNull(), + left: integer("left").notNull(), + width: integer("width").notNull(), + height: integer("height").notNull(), + + // Foreign key references + recipientId: varchar("recipient_id", { length: 191 }).notNull(), + templateId: varchar("template_id", { length: 191 }).notNull(), + + viewportHeight: integer("viewport_height").notNull(), + viewportWidth: integer("viewport_width").notNull(), + page: integer("page").notNull(), + + // JSON field + meta: jsonb("meta").notNull().default("{}"), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring the indexes from Prisma schema + index("template_fields_template_id_idx").on(table.templateId), + index("template_fields_recipient_id_idx").on(table.recipientId), + ]; + }, +); + +export const templateFieldSelectSchema = createSelectSchema(templateFields); + +export const esignRecipients = createTable( + "esign_recipients", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + email: varchar("email", { length: 191 }).notNull(), + name: varchar("name", { length: 191 }), + + // Foreign key references + templateId: varchar("template_id", { length: 191 }).notNull(), + status: EsignRecipientStatusEnum("status").notNull().default("PENDING"), + memberId: varchar("member_id", { length: 191 }), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring the indexes from Prisma schema + index("esign_recipients_member_id_idx").on(table.memberId), + index("esign_recipients_template_id_idx").on(table.templateId), + ]; + }, +); + +export const esignRecipientSelectSchema = createSelectSchema(esignRecipients); diff --git a/packages/db/schema/updates.ts b/packages/db/schema/updates.ts new file mode 100644 index 000000000..6705d5960 --- /dev/null +++ b/packages/db/schema/updates.ts @@ -0,0 +1,71 @@ +import { boolean, index, jsonb, timestamp, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { UpdateStatusEnum } from "./enums"; +import { createTable } from "./index"; + +export const updates = createTable( + "updates", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + publicId: varchar("public_id", { length: 191 }).notNull().unique(), + title: varchar("title", { length: 191 }).notNull(), + content: jsonb("content").notNull(), + html: varchar("html", { length: 191 }).notNull(), + public: boolean("public").notNull().default(false), + status: UpdateStatusEnum("status").notNull().default("DRAFT"), + + // Foreign key references + authorId: varchar("author_id", { length: 191 }).notNull(), + companyId: varchar("company_id", { length: 191 }).notNull(), + + // Timestamps + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring the indexes from Prisma schema + index("updates_public_id_idx").on(table.publicId), + index("updates_author_id_idx").on(table.authorId), + index("updates_company_id_idx").on(table.companyId), + ]; + }, +); + +export const updateSelectSchema = createSelectSchema(updates); + +export const esignAudits = createTable( + "esign_audits", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + + // Foreign key references + companyId: varchar("company_id", { length: 191 }).notNull(), + templateId: varchar("template_id", { length: 191 }).notNull(), + recipientId: varchar("recipient_id", { length: 191 }), + + action: varchar("action", { length: 191 }).notNull(), + ip: varchar("ip", { length: 191 }).notNull(), + userAgent: varchar("user_agent", { length: 191 }).notNull(), + location: varchar("location", { length: 191 }).notNull(), + summary: varchar("summary", { length: 191 }).notNull(), + + // Timestamps + occurredAt: timestamp("occurred_at", { withTimezone: true }) + .notNull() + .defaultNow(), + updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + // Mirroring the indexes from Prisma schema + index("esign_audits_company_id_idx").on(table.companyId), + index("esign_audits_template_id_idx").on(table.templateId), + index("esign_audits_recipient_id_idx").on(table.recipientId), + ]; + }, +); + +export const esignAuditSelectSchema = createSelectSchema(esignAudits); diff --git a/packages/db/schema/users.ts b/packages/db/schema/users.ts new file mode 100644 index 000000000..19d8ecd3e --- /dev/null +++ b/packages/db/schema/users.ts @@ -0,0 +1,22 @@ +import { timestamp, uniqueIndex, varchar } from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { createTable } from "./index"; + +export const users = createTable( + "users", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + name: varchar("name", { length: 191 }), + email: varchar("email", { length: 191 }), + password: varchar("password", { length: 191 }), + emailVerified: timestamp("email_verified", { withTimezone: true }), + image: varchar("image", { length: 191 }), + lastSignedIn: timestamp("last_signed_in", { withTimezone: true }).notNull(), + identityProvider: varchar("identity_provider", { length: 191 }), + }, + (table) => { + return [uniqueIndex("users_email_idx").on(table.email)]; + }, +); + +export const userSelectSchema = createSelectSchema(users); diff --git a/packages/db/schema/verification-tokens.ts b/packages/db/schema/verification-tokens.ts new file mode 100644 index 000000000..341c9eda5 --- /dev/null +++ b/packages/db/schema/verification-tokens.ts @@ -0,0 +1,75 @@ +import { + index, + integer, + timestamp, + uniqueIndex, + varchar, +} from "drizzle-orm/pg-core"; +import { createSelectSchema } from "drizzle-zod"; +import { createTable } from "./index"; + +export const verificationTokens = createTable( + "verification_tokens", + { + id: integer("id").primaryKey().notNull(), + secondaryId: varchar("secondary_id", { length: 191 }).notNull().unique(), + identifier: varchar("identifier", { length: 191 }).notNull(), + token: varchar("token", { length: 191 }).notNull().unique(), + expires: timestamp("expires", { withTimezone: true }).notNull(), + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + + // Foreign key reference + userId: varchar("user_id", { length: 191 }), + }, + (table) => { + return [ + uniqueIndex("verification_tokens_identifier_token_idx").on( + table.identifier, + table.token, + ), + index("verification_tokens_user_id_idx").on(table.userId), + ]; + }, +); + +export const verificationTokenSelectSchema = + createSelectSchema(verificationTokens); + +export const passkeyVerificationTokens = createTable( + "passkey_verification_tokens", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + token: varchar("token", { length: 191 }).notNull().unique(), + expiresAt: timestamp("expires_at", { withTimezone: true }).notNull(), + createdAt: timestamp("created_at", { withTimezone: true }) + .notNull() + .defaultNow(), + }, +); + +export const passkeyVerificationTokenSelectSchema = createSelectSchema( + passkeyVerificationTokens, +); + +export const passwordResetTokens = createTable( + "password_reset_tokens", + { + id: varchar("id", { length: 191 }).primaryKey().notNull(), + email: varchar("email", { length: 191 }).notNull(), + token: varchar("token", { length: 191 }).notNull().unique(), + expires: timestamp("expires", { withTimezone: true }).notNull(), + }, + (table) => { + return [ + uniqueIndex("password_reset_tokens_email_token_idx").on( + table.email, + table.token, + ), + ]; + }, +); + +export const passwordResetTokenSelectSchema = + createSelectSchema(passwordResetTokens); diff --git a/prisma/seeds/companies.ts b/packages/db/seeds/companies.ts similarity index 58% rename from prisma/seeds/companies.ts rename to packages/db/seeds/companies.ts index 4f24b99bf..52c2f8759 100644 --- a/prisma/seeds/companies.ts +++ b/packages/db/seeds/companies.ts @@ -1,52 +1,54 @@ -import { generatePublicId } from "@/common/id"; -import { db } from "@/server/db"; +import { generatePublicId } from "@captable/config"; +import { logger } from "@captable/logger"; import { faker } from "@faker-js/faker"; -import colors from "colors"; import { sample } from "lodash-es"; -colors.enable(); +import { v4 as uuidv4 } from "uuid"; +import { db } from "../index"; +import { companies } from "../schema/companies"; -type CompanyType = { +type CompanyInputData = { + id: string; name: string; publicId: string; incorporationType: string; incorporationDate: Date; incorporationState: string; incorporationCountry: string; - streetAddress: string; city: string; state: string; zipcode: string; country: string; + updatedAt: Date; }; + const seedCompanies = async (count = 4) => { - const companies: CompanyType[] = []; + const companiesData: CompanyInputData[] = []; for (let i = 0; i < count; i++) { - companies.push({ + companiesData.push({ + id: uuidv4(), name: faker.company.name(), publicId: generatePublicId(), - incorporationType: sample(["llc", "c-corp", "s-corp"]), + incorporationType: sample(["llc", "c-corp", "s-corp"]) || "c-corp", incorporationDate: faker.date.past(), incorporationState: faker.location.state({ abbreviated: true }), incorporationCountry: faker.location.countryCode(), - streetAddress: faker.location.streetAddress(), city: faker.location.city(), state: faker.location.state({ abbreviated: true }), zipcode: faker.location.zipCode(), country: faker.location.countryCode(), + updatedAt: new Date(), }); } - console.log(`Seeding ${companies.length} companies`.blue); + logger.info(`Seeding ${companiesData.length} companies`); - const records = await db.company.createMany({ - data: companies, - }); + const result = await db.insert(companies).values(companiesData); - console.log(`🎉 Seeded ${records.count} companies`.green); - return records; + logger.info(`Seeded ${companiesData.length} companies`); + return result; }; export default seedCompanies; diff --git a/packages/db/seeds/index.ts b/packages/db/seeds/index.ts new file mode 100644 index 000000000..aff15e1b5 --- /dev/null +++ b/packages/db/seeds/index.ts @@ -0,0 +1,62 @@ +import { logger } from "@captable/logger"; +import inquirer from "inquirer"; +import type { QuestionCollection } from "inquirer"; +import { db } from "../index"; +import { companies } from "../schema/companies"; +import { members } from "../schema/members"; +import { users } from "../schema/users"; +import seedCompanies from "./companies"; +import seedTeam from "./team"; + +// Prevent running in production +if (process.env.NODE_ENV === "production") { + logger.error("❌ You cannot run this command on production"); + process.exit(0); +} + +export const seed = async () => { + const inquiry = await inquirer.prompt({ + type: "confirm", + name: "answer", + message: "Are you sure you want to NUKE 🚀 and re-seed the database?", + } as QuestionCollection); + + const answer = inquiry.answer as boolean; + + if (answer) { + await nuke(); + + logger.info("Seeding database"); + return db.transaction(async (tx) => { + await seedCompanies(); + await seedTeam(); + }); + } + + throw new Error("Seeding aborted"); +}; + +const nuke = async () => { + logger.info("🚀 Nuking database records"); + return db.transaction(async (tx) => { + // Delete all records in reverse order of dependencies + await db.delete(members); + await db.delete(users); + await db.delete(companies); + // Add other tables that need to be cleared + }); +}; + +// Execute the seed function +seed() + .then(async () => { + logger.info("✅ Database seeding completed"); + logger.info(`💌 We have created four admin accounts for you. Please login with one of these emails: + ceo@example.com + cto@example.com + cfo@example.com + lawyer@example.com`); + }) + .catch(async (error: Error) => { + logger.error(`❌ ${error.message}`); + }); diff --git a/prisma/seeds/team.ts b/packages/db/seeds/team.ts similarity index 54% rename from prisma/seeds/team.ts rename to packages/db/seeds/team.ts index 13596205e..0b2f47a29 100644 --- a/prisma/seeds/team.ts +++ b/packages/db/seeds/team.ts @@ -1,9 +1,13 @@ -import type { MemberStatusEnum } from "@/prisma/enums"; -import { db } from "@/server/db"; +import { logger } from "@captable/logger"; import { faker } from "@faker-js/faker"; import bcrypt from "bcryptjs"; -import colors from "colors"; -colors.enable(); +import { v4 as uuidv4 } from "uuid"; +import { db } from "../index"; +import { MemberStatusEnum } from "../schema/enums"; +import { members } from "../schema/members"; +import { users } from "../schema/users"; + +type MemberStatus = "ACTIVE" | "INACTIVE" | "PENDING"; type UserType = { name: string; @@ -11,86 +15,86 @@ type UserType = { title?: string; image?: string; isOnboarded?: boolean; - status?: MemberStatusEnum; + status?: MemberStatus; }; const seedTeam = async () => { - const team = [ + const team: UserType[] = [ { name: faker.person.fullName(), email: "ceo@example.com", - // image: faker.image.avatar(), title: "Co-Founder & CEO", status: "ACTIVE", isOnboarded: true, }, - { name: faker.person.fullName(), email: "cto@example.com", - // image: faker.image.avatar(), title: "Co-Founder & CTO", status: "ACTIVE", isOnboarded: true, }, - { name: faker.person.fullName(), email: "cfo@example.com", - // image: faker.image.avatar(), title: "CFO", status: "PENDING", isOnboarded: false, }, - { name: faker.person.fullName(), email: "lawyer@example.com", - // image: faker.image.avatar(), title: "Lawyer at Law Firm LLP", status: "PENDING", }, { name: faker.person.fullName(), email: "accountant@example.com", - // image: faker.image.avatar(), title: "Accountant at XYZ Accounting, Inc.", status: "INACTIVE", }, ]; - console.log(`Seeding ${team.length} team members`.blue); - const companies = await db.company.findMany(); + logger.info(`Seeding ${team.length} team members`); - team.forEach(async (t) => { - // const { name, email, image, title, status, isOnboarded } = t + // Get all companies + const companiesResult = await db.query.companies.findMany(); + + for (const t of team) { const salt = await bcrypt.genSalt(10); const hashedPassword = await bcrypt.hash("P@ssw0rd!", salt); const { name, email, title, status, isOnboarded } = t; - const user = await db.user.create({ - data: { + + // Create user + const userResult = await db + .insert(users) + .values({ + id: uuidv4(), name, email, password: hashedPassword, emailVerified: new Date(), - // image, - }, - }); + lastSignedIn: new Date(), + }) + .returning(); + + const user = userResult[0]; - companies.forEach(async (company) => { - await db.member.create({ - data: { - title, - isOnboarded, - status: status as MemberStatusEnum, - userId: user.id, - companyId: company.id, - }, + // Create member records for each company + for (const company of companiesResult) { + await db.insert(members).values({ + id: uuidv4(), + title, + isOnboarded: isOnboarded || false, + status: (status || "PENDING") as MemberStatus, + userId: user.id, + companyId: company.id, + updatedAt: new Date(), }); - }); - }); + } + } - console.log(`🎉 Seeded ${team.length} team members`.green); + logger.info(`Seeded ${team.length} team members`); return team; }; diff --git a/packages/db/tsconfig.json b/packages/db/tsconfig.json new file mode 100644 index 000000000..238655f2c --- /dev/null +++ b/packages/db/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + // Enable latest features + "lib": ["ESNext", "DOM"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + } +} diff --git a/packages/db/utils.ts b/packages/db/utils.ts new file mode 100644 index 000000000..c583adff4 --- /dev/null +++ b/packages/db/utils.ts @@ -0,0 +1,71 @@ +import { + eq, + ne, + gt, + gte, + lt, + lte, + isNull, + isNotNull, + and, + or, + not, + like, + ilike, + between, + inArray, + notInArray, + desc, + asc, + sql, + type AnyColumn, + type SQLWrapper, +} from "drizzle-orm"; + +export { + eq, // Equal + ne, // Not equal + gt, // Greater than + gte, // Greater than or equal + lt, // Less than + lte, // Less than or equal + isNull, // Check if value is NULL + isNotNull, // Check if value is NOT NULL + and, // Combine conditions with AND + or, // Combine conditions with OR + not, // Negate a condition + like, // Pattern matching (case-sensitive) + ilike, // Pattern matching (case-insensitive) + between, // Check if value is between two values + inArray, // Check if value is in an array + notInArray, // Check if value is not in an array + desc, // Sort in descending order + asc, // Sort in ascending order + sql, // Raw SQL expression +}; + +/** + * Helper utilities for working with Drizzle ORM + */ + +// Common where clause helper +export function whereClause(...conditions: SQLWrapper[]) { + return { where: and(...conditions) }; +} + +// Common orderBy helper +export function orderByClause( + column: AnyColumn | SQLWrapper, + direction = "asc" as const, +) { + return { orderBy: direction === "asc" ? asc(column) : desc(column) }; +} + +// Pagination helper +export function paginationClause(page = 1, pageSize = 10) { + const offset = (page - 1) * pageSize; + return { + limit: pageSize, + offset, + }; +} diff --git a/packages/logger/.gitignore b/packages/logger/.gitignore new file mode 100644 index 000000000..9b1ee42e8 --- /dev/null +++ b/packages/logger/.gitignore @@ -0,0 +1,175 @@ +# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore + +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Caches + +.cache + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/packages/logger/README.md b/packages/logger/README.md new file mode 100644 index 000000000..4d9ce2cc4 --- /dev/null +++ b/packages/logger/README.md @@ -0,0 +1,15 @@ +# @captable/logger + +To install dependencies: + +```bash +bun install +``` + +To run: + +```bash +bun run index.ts +``` + +This project was created using `bun init` in bun v1.1.21. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime. diff --git a/packages/logger/biome.json b/packages/logger/biome.json new file mode 100644 index 000000000..86326ab92 --- /dev/null +++ b/packages/logger/biome.json @@ -0,0 +1,3 @@ +{ + "extends": ["../config/biome.json"] +} diff --git a/packages/logger/index.ts b/packages/logger/index.ts new file mode 100644 index 000000000..fd405c7ed --- /dev/null +++ b/packages/logger/index.ts @@ -0,0 +1,17 @@ +import pino, { type Logger } from "pino"; + +export const logger: Logger = pino({ + ...(process.env.NODE_ENV === "development" + ? { + transport: { + target: "pino-pretty", + options: { + colorize: true, + }, + }, + level: "debug", + } + : { + level: "info", + }), +}); diff --git a/packages/logger/package.json b/packages/logger/package.json new file mode 100644 index 000000000..707c06de8 --- /dev/null +++ b/packages/logger/package.json @@ -0,0 +1,20 @@ +{ + "name": "@captable/logger", + "module": "index.ts", + "type": "module", + "scripts": { + "lint": "biome check", + "format": "biome format --write" + }, + "devDependencies": { + "@biomejs/biome": "1.9.4", + "@types/bun": "latest", + "dotenv": "^16.5.0" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "dependencies": { + "pino": "^9.7.0" + } +} diff --git a/packages/logger/tsconfig.json b/packages/logger/tsconfig.json new file mode 100644 index 000000000..238655f2c --- /dev/null +++ b/packages/logger/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + // Enable latest features + "lib": ["ESNext", "DOM"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 61b4824d3..000000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,18863 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@ark-ui/react': - specifier: ^2.2.3 - version: 2.2.3(@internationalized/date@3.5.2)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@aws-sdk/client-s3': - specifier: ^3.577.0 - version: 3.577.0 - '@aws-sdk/s3-request-presigner': - specifier: ^3.577.0 - version: 3.577.0 - '@blocknote/react': - specifier: ^0.12.2 - version: 0.12.4(@tiptap/pm@2.4.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@hono/swagger-ui': - specifier: ^0.4.0 - version: 0.4.0(hono@4.5.8) - '@hono/zod-openapi': - specifier: ^0.15.1 - version: 0.15.1(hono@4.5.8)(zod@3.23.8) - '@hookform/resolvers': - specifier: ^3.9.0 - version: 3.9.0(react-hook-form@7.52.1(react@18.3.1)) - '@next-auth/prisma-adapter': - specifier: ^1.0.7 - version: 1.0.7(@prisma/client@5.14.0(prisma@5.14.0))(next-auth@4.24.7(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)) - '@prisma/client': - specifier: ^5.13.0 - version: 5.14.0(prisma@5.14.0) - '@prisma/generator-helper': - specifier: ^5.17.0 - version: 5.17.0 - '@radix-ui/react-accordion': - specifier: ^1.2.0 - version: 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-alert-dialog': - specifier: ^1.0.5 - version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-avatar': - specifier: ^1.1.0 - version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-checkbox': - specifier: ^1.1.1 - version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-dialog': - specifier: ^1.0.5 - version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-dropdown-menu': - specifier: ^2.0.6 - version: 2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-label': - specifier: ^2.0.2 - version: 2.0.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-popover': - specifier: ^1.1.1 - version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-radio-group': - specifier: ^1.2.0 - version: 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-scroll-area': - specifier: ^1.1.0 - version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-select': - specifier: ^2.0.0 - version: 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-separator': - specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': - specifier: ^1.0.2 - version: 1.0.2(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-switch': - specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-tabs': - specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toolbar': - specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-tooltip': - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@react-email/components': - specifier: 0.0.22 - version: 0.0.22(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@react-pdf/renderer': - specifier: ^3.4.4 - version: 3.4.4(react@18.3.1) - '@remixicon/react': - specifier: ^4.0.1 - version: 4.2.0(react@18.3.1) - '@scalar/nextjs-api-reference': - specifier: ^0.4.18 - version: 0.4.18(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(postcss@8.4.40)(react-dom@18.2.0(react@18.3.1))(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@sentry/nextjs': - specifier: ^8.19.0 - version: 8.19.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.92.0) - '@simplewebauthn/browser': - specifier: ^10.0.0 - version: 10.0.0 - '@simplewebauthn/server': - specifier: ^10.0.0 - version: 10.0.0 - '@sindresorhus/slugify': - specifier: ^2.2.1 - version: 2.2.1 - '@stripe/stripe-js': - specifier: ^4.1.0 - version: 4.1.0 - '@t3-oss/env-nextjs': - specifier: ^0.10.1 - version: 0.10.1(typescript@5.4.5)(zod@3.23.8) - '@tanstack/react-query': - specifier: ^4.36.1 - version: 4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@tanstack/react-table': - specifier: ^8.20.1 - version: 8.20.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@tremor/react': - specifier: ^3.17.4 - version: 3.17.4(react-dom@18.2.0(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.3) - '@trpc/client': - specifier: ^10.43.6 - version: 10.45.2(@trpc/server@10.45.2) - '@trpc/next': - specifier: ^10.45.2 - version: 10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/react-query@10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/server@10.45.2)(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@trpc/react-query': - specifier: ^10.43.6 - version: 10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@trpc/server': - specifier: ^10.43.6 - version: 10.45.2 - '@types/bcryptjs': - specifier: ^2.4.6 - version: 2.4.6 - '@types/papaparse': - specifier: ^5.3.14 - version: 5.3.14 - '@wojtekmaj/react-hooks': - specifier: ^1.20.0 - version: 1.20.0(@types/react@18.3.3)(react@18.3.1) - bcryptjs: - specifier: ^2.4.3 - version: 2.4.3 - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - clsx: - specifier: ^2.1.1 - version: 2.1.1 - cmdk: - specifier: ^1.0.0 - version: 1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - cookie: - specifier: ^0.6.0 - version: 0.6.0 - dayjs: - specifier: ^1.11.11 - version: 1.11.11 - hono: - specifier: ^4.5.8 - version: 4.5.8 - html-to-image: - specifier: ^1.11.11 - version: 1.11.11 - input-otp: - specifier: ^1.1.0 - version: 1.2.4(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - jose: - specifier: ^5.3.0 - version: 5.3.0 - lodash-es: - specifier: ^4.17.21 - version: 4.17.21 - mime: - specifier: ^4.0.3 - version: 4.0.3 - nanoid: - specifier: ^5.0.4 - version: 5.0.7 - next: - specifier: ^14.2.4 - version: 14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - next-auth: - specifier: ^4.24.7 - version: 4.24.7(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - next-nprogress-bar: - specifier: ^2.3.13 - version: 2.3.13 - nodemailer: - specifier: ^6.9.14 - version: 6.9.14 - papaparse: - specifier: ^5.4.1 - version: 5.4.1 - pdf-lib: - specifier: ^1.17.1 - version: 1.17.1 - pg-boss: - specifier: ^9.0.3 - version: 9.0.3 - pino: - specifier: ^9.3.1 - version: 9.3.1 - pino-pretty: - specifier: ^11.2.2 - version: 11.2.2 - prisma-extension-pagination: - specifier: ^0.7.4 - version: 0.7.4(@prisma/client@5.14.0(prisma@5.14.0)) - prisma-json-types-generator: - specifier: ^3.0.4 - version: 3.0.4(prisma@5.14.0)(typescript@5.4.5) - pushmodal: - specifier: ^1.0.4 - version: 1.0.4(@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: - specifier: 18.3.1 - version: 18.3.1 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.3.1) - react-dropzone: - specifier: ^14.2.3 - version: 14.2.3(react@18.3.1) - react-email: - specifier: 2.1.6 - version: 2.1.6(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.11)(eslint@9.8.0) - react-hook-form: - specifier: ^7.52.1 - version: 7.52.1(react@18.3.1) - react-number-format: - specifier: ^5.3.4 - version: 5.3.4(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react-pdf: - specifier: ^8.0.2 - version: 8.0.2(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - sharp: - specifier: ^0.33.3 - version: 0.33.4 - sonner: - specifier: ^1.5.0 - version: 1.5.0(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - stripe: - specifier: ^15.8.0 - version: 15.8.0 - superjson: - specifier: ^2.2.1 - version: 2.2.1 - tailwind-merge: - specifier: ^2.4.0 - version: 2.4.0 - tailwindcss-animate: - specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.3) - ts-pattern: - specifier: ^5.3.1 - version: 5.3.1 - ua-parser-js: - specifier: ^1.0.37 - version: 1.0.37 - usehooks-ts: - specifier: ^3.1.0 - version: 3.1.0(react@18.3.1) - zod: - specifier: ^3.23.8 - version: 3.23.8 - devDependencies: - '@biomejs/biome': - specifier: 1.7.3 - version: 1.7.3 - '@blocknote/core': - specifier: ^0.13.2 - version: 0.13.2 - '@faker-js/faker': - specifier: ^8.4.0 - version: 8.4.1 - '@flydotio/dockerfile': - specifier: ^0.5.8 - version: 0.5.8 - '@next/bundle-analyzer': - specifier: ^14.2.3 - version: 14.2.3 - '@simplewebauthn/types': - specifier: ^10.0.0 - version: 10.0.0 - '@tailwindcss/typography': - specifier: ^0.5.12 - version: 0.5.13(tailwindcss@3.4.3) - '@types/cookie': - specifier: ^0.6.0 - version: 0.6.0 - '@types/inquirer': - specifier: ^9.0.7 - version: 9.0.7 - '@types/lodash-es': - specifier: ^4.17.12 - version: 4.17.12 - '@types/node': - specifier: ^20.12.12 - version: 20.12.12 - '@types/nodemailer': - specifier: ^6.4.14 - version: 6.4.15 - '@types/react': - specifier: ^18.3.3 - version: 18.3.3 - '@types/react-dom': - specifier: ^18.2.23 - version: 18.3.0 - '@types/ua-parser-js': - specifier: ^0.7.39 - version: 0.7.39 - autoprefixer: - specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.40) - colors: - specifier: ^1.4.0 - version: 1.4.0 - husky: - specifier: ^9.1.3 - version: 9.1.4 - inquirer: - specifier: ^9.2.22 - version: 9.2.22 - knip: - specifier: ^5.17.2 - version: 5.17.4(@types/node@20.12.12)(typescript@5.4.5) - lint-staged: - specifier: ^15.2.2 - version: 15.2.2 - postcss: - specifier: ^8.4.40 - version: 8.4.40 - prisma: - specifier: ^5.13.0 - version: 5.14.0 - tailwindcss: - specifier: ^3.4.3 - version: 3.4.3 - tsx: - specifier: ^4.7.0 - version: 4.10.4 - typescript: - specifier: ^5.4.5 - version: 5.4.5 - vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@20.12.12)(terser@5.31.1) - -packages: - - '@adobe/css-tools@4.4.0': - resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} - - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - - '@ark-ui/anatomy@2.3.1': - resolution: {integrity: sha512-pfHDkuFRFdzOnZxqNcAld1b03ehvFrOqXery9JHBTchP8+VmAmxg6ZDn4Se1ie4HvcmXD6IU61jltJB/aXYpJg==} - - '@ark-ui/react@2.2.3': - resolution: {integrity: sha512-W43rbimG1f7v1jk8J+PG/3um8/PaL1lQZEnRPzaXtQjEoiBlXH4yFyJakoEldxoZEQGB8x7SUkjHxZ93cRceuQ==} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@asteasolutions/zod-to-openapi@7.1.1': - resolution: {integrity: sha512-lF0d1gAc0lYLO9/BAGivwTwE2Sh9h6CHuDcbk5KnGBfIuAsAkDC+Fdat4dkQY3CS/zUWKHRmFEma0B7X132Ymw==} - peerDependencies: - zod: ^3.20.2 - - '@aws-crypto/crc32@3.0.0': - resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} - - '@aws-crypto/crc32c@3.0.0': - resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} - - '@aws-crypto/ie11-detection@3.0.0': - resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} - - '@aws-crypto/sha1-browser@3.0.0': - resolution: {integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==} - - '@aws-crypto/sha256-browser@3.0.0': - resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} - - '@aws-crypto/sha256-js@3.0.0': - resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} - - '@aws-crypto/supports-web-crypto@3.0.0': - resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} - - '@aws-crypto/util@3.0.0': - resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} - - '@aws-sdk/client-s3@3.577.0': - resolution: {integrity: sha512-mQYXwn6E4Rwggn6teF6EIWJtK8jsKcxnPj2QVETkSmD8QaFLm4g/DgLPdamDE97UI8k1k0cmWqXcTOLIaZ7wQg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/client-sso-oidc@3.577.0': - resolution: {integrity: sha512-njmKSPDWueWWYVFpFcZ2P3fI6/pdQVDa0FgCyYZhOnJLgEHZIcBBg1AsnkVWacBuLopp9XVt2m+7hO6ugY1/1g==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/client-sso@3.577.0': - resolution: {integrity: sha512-BwujdXrydlk6UEyPmewm5GqG4nkQ6OVyRhS/SyZP/6UKSFv2/sf391Cmz0hN0itUTH1rR4XeLln8XCOtarkrzg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/client-sts@3.577.0': - resolution: {integrity: sha512-509Kklimva1XVlhGbpTpeX3kOP6ORpm44twJxDHpa9TURbmoaxj7veWlnLCbDorxDTrbsDghvYZshvcLsojVpg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/core@3.576.0': - resolution: {integrity: sha512-KDvDlbeipSTIf+ffKtTg1m419TK7s9mZSWC8bvuZ9qx6/sjQFOXIKOVqyuli6DnfxGbvRcwoRuY99OcCH1N/0w==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-env@3.577.0': - resolution: {integrity: sha512-Jxu255j0gToMGEiqufP8ZtKI8HW90lOLjwJ3LrdlD/NLsAY0tOQf1fWc53u28hWmmNGMxmCrL2p66IOgMDhDUw==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-http@3.577.0': - resolution: {integrity: sha512-n++yhCp67b9+ZRGEdY1jhamB5E/O+QsIDOPSuRmdaSGMCOd82oUEKPgIVEU1bkqxDsBxgiEWuvtfhK6sNiDS0A==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-ini@3.577.0': - resolution: {integrity: sha512-q7lHPtv6BjRvChUE3m0tIaEZKxPTaZ1B3lKxGYsFl3VLAu5N8yGCUKwuA1izf4ucT+LyKscVGqK6VDZx1ev3nw==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.577.0 - - '@aws-sdk/credential-provider-node@3.577.0': - resolution: {integrity: sha512-epZ1HOMsrXBNczc0HQpv0VMjqAEpc09DUA7Rg3gUJfn8umhML7A7bXnUyqPA+S54q397UYg1leQKdSn23OiwQQ==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-process@3.577.0': - resolution: {integrity: sha512-Gin6BWtOiXxIgITrJ3Nwc+Y2P1uVT6huYR4EcbA/DJUPWyO0n9y5UFLewPvVbLkRn15JeEqErBLUrHclkiOKtw==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-sso@3.577.0': - resolution: {integrity: sha512-iVm5SQvS7EgZTJsRaqUOmDQpBQPPPat42SCbWFvFQOLrl8qewq8OP94hFS5w2mP62zngeYzqhJnDel79HXbxew==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/credential-provider-web-identity@3.577.0': - resolution: {integrity: sha512-ZGHGNRaCtJJmszb9UTnC7izNCtRUttdPlLdMkh41KPS32vfdrBDHs1JrpbZijItRj1xKuOXsiYSXLAaHGcLh8Q==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sts': ^3.577.0 - - '@aws-sdk/middleware-bucket-endpoint@3.577.0': - resolution: {integrity: sha512-twlkNX2VofM6kHXzDEiJOiYCc9tVABe5cbyxMArRWscIsCWG9mamPhC77ezG4XsN9dFEwVdxEYD5Crpm/5EUiw==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-expect-continue@3.577.0': - resolution: {integrity: sha512-6dPp8Tv4F0of4un5IAyG6q++GrRrNQQ4P2NAMB1W0VO4JoEu1C8GievbbDLi88TFIFmtKpnHB0ODCzwnoe8JsA==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-flexible-checksums@3.577.0': - resolution: {integrity: sha512-IHAUEipIfagjw92LV8SOSBiCF7ZnqfHcw14IkcZW2/mfrCy1Fh/k40MoS/t3Tro2tQ91rgQPwUoSgB/QCi2Org==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-host-header@3.577.0': - resolution: {integrity: sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-location-constraint@3.577.0': - resolution: {integrity: sha512-DKPTD2D2s+t2QUo/IXYtVa/6Un8GZ+phSTBkyBNx2kfZz4Kwavhl/JJzSqTV3GfCXkVdFu7CrjoX7BZ6qWeTUA==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-logger@3.577.0': - resolution: {integrity: sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-recursion-detection@3.577.0': - resolution: {integrity: sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-sdk-s3@3.577.0': - resolution: {integrity: sha512-/t8Shvy6lGIRdTEKG6hA8xy+oon/CDF5H8Ksms/cd/uvIy/MYbNjOJ/Arwk8H5W6LB4DP/1O+tOzOpGx1MCufA==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-signing@3.577.0': - resolution: {integrity: sha512-QS/dh3+NqZbXtY0j/DZ867ogP413pG5cFGqBy9OeOhDMsolcwLrQbi0S0c621dc1QNq+er9ffaMhZ/aPkyXXIg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-ssec@3.577.0': - resolution: {integrity: sha512-i2BPJR+rp8xmRVIGc0h1kDRFcM2J9GnClqqpc+NLSjmYadlcg4mPklisz9HzwFVcRPJ5XcGf3U4BYs5G8+iTyg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/middleware-user-agent@3.577.0': - resolution: {integrity: sha512-P55HAXgwmiHHpFx5JEPvOnAbfhN7v6sWv9PBQs+z2tC7QiBcPS0cdJR6PfV7J1n4VPK52/OnrK3l9VxdQ7Ms0g==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/region-config-resolver@3.577.0': - resolution: {integrity: sha512-4ChCFACNwzqx/xjg3zgFcW8Ali6R9C95cFECKWT/7CUM1D0MGvkclSH2cLarmHCmJgU6onKkJroFtWp0kHhgyg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/s3-request-presigner@3.577.0': - resolution: {integrity: sha512-mlcf//A/gFSnKnY4Kc/zCt/zvRiFLeDfaH4t5vpwdBhNjZCRJcHwh6eJeC27/8R+IkRVU5s2CVXrUM5RyeLDWg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/signature-v4-multi-region@3.577.0': - resolution: {integrity: sha512-mMykGRFBYmlDcMhdbhNM0z1JFUaYYZ8r9WV7Dd0T2PWELv2brSAjDAOBHdJLHObDMYRnM6H0/Y974qTl3icEcQ==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/token-providers@3.577.0': - resolution: {integrity: sha512-0CkIZpcC3DNQJQ1hDjm2bdSy/Xjs7Ny5YvSsacasGOkNfk+FdkiQy6N67bZX3Zbc9KIx+Nz4bu3iDeNSNplnnQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@aws-sdk/client-sso-oidc': ^3.577.0 - - '@aws-sdk/types@3.577.0': - resolution: {integrity: sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/util-arn-parser@3.568.0': - resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/util-endpoints@3.577.0': - resolution: {integrity: sha512-FjuUz1Kdy4Zly2q/c58tpdqHd6z7iOdU/caYzoc8jwgAHBDBbIJNQLCU9hXJnPV2M8pWxQDyIZsoVwtmvErPzw==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/util-format-url@3.577.0': - resolution: {integrity: sha512-SyEGC2J+y/krFRuPgiF02FmMYhqbiIkOjDE6k4nYLJQRyS6XEAGxZoG+OHeOVEM+bsDgbxokXZiM3XKGu6qFIg==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/util-locate-window@3.568.0': - resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/util-user-agent-browser@3.577.0': - resolution: {integrity: sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA==} - - '@aws-sdk/util-user-agent-node@3.577.0': - resolution: {integrity: sha512-XqvtFjbSMtycZTWVwDe8DRWovuoMbA54nhUoZwVU6rW9OSD6NZWGR512BUGHFaWzW0Wg8++Dj10FrKTG2XtqfA==} - engines: {node: '>=16.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - - '@aws-sdk/util-utf8-browser@3.259.0': - resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - - '@aws-sdk/xml-builder@3.575.0': - resolution: {integrity: sha512-cWgAwmbFYNCFzPwxL705+lWps0F3ZvOckufd2KKoEZUmtpVw9/txUXNrPySUXSmRTSRhoatIMABNfStWR043bQ==} - engines: {node: '>=16.0.0'} - - '@babel/code-frame@7.24.2': - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.24.4': - resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.24.5': - resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.24.5': - resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.23.6': - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-environment-visitor@7.22.20': - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.23.0': - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-hoist-variables@7.22.5': - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.24.3': - resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.24.5': - resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-simple-access@7.24.5': - resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-split-export-declaration@7.24.5': - resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.24.1': - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.24.5': - resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.23.5': - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.24.5': - resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.24.5': - resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.24.5': - resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.24.7': - resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/runtime@7.24.5': - resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.24.0': - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.24.5': - resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.24.5': - resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} - engines: {node: '>=6.9.0'} - - '@biomejs/biome@1.7.3': - resolution: {integrity: sha512-ogFQI+fpXftr+tiahA6bIXwZ7CSikygASdqMtH07J2cUzrpjyTMVc9Y97v23c7/tL1xCZhM+W9k4hYIBm7Q6cQ==} - engines: {node: '>=14.21.3'} - hasBin: true - - '@biomejs/cli-darwin-arm64@1.7.3': - resolution: {integrity: sha512-eDvLQWmGRqrPIRY7AIrkPHkQ3visEItJKkPYSHCscSDdGvKzYjmBJwG1Gu8+QC5ed6R7eiU63LEC0APFBobmfQ==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [darwin] - - '@biomejs/cli-darwin-x64@1.7.3': - resolution: {integrity: sha512-JXCaIseKRER7dIURsVlAJacnm8SG5I0RpxZ4ya3dudASYUc68WGl4+FEN03ABY3KMIq7hcK1tzsJiWlmXyosZg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [darwin] - - '@biomejs/cli-linux-arm64-musl@1.7.3': - resolution: {integrity: sha512-c8AlO45PNFZ1BYcwaKzdt46kYbuP6xPGuGQ6h4j3XiEDpyseRRUy/h+6gxj07XovmyxKnSX9GSZ6nVbZvcVUAw==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-arm64@1.7.3': - resolution: {integrity: sha512-phNTBpo7joDFastnmZsFjYcDYobLTx4qR4oPvc9tJ486Bd1SfEVPHEvJdNJrMwUQK56T+TRClOQd/8X1nnjA9w==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-x64-musl@1.7.3': - resolution: {integrity: sha512-UdEHKtYGWEX3eDmVWvQeT+z05T9/Sdt2+F/7zmMOFQ7boANeX8pcO6EkJPK3wxMudrApsNEKT26rzqK6sZRTRA==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-linux-x64@1.7.3': - resolution: {integrity: sha512-vnedYcd5p4keT3iD48oSKjOIRPYcjSNNbd8MO1bKo9ajg3GwQXZLAH+0Cvlr+eMsO67/HddWmscSQwTFrC/uPA==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-win32-arm64@1.7.3': - resolution: {integrity: sha512-unNCDqUKjujYkkSxs7gFIfdasttbDC4+z0kYmcqzRk6yWVoQBL4dNLcCbdnJS+qvVDNdI9rHp2NwpQ0WAdla4Q==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [win32] - - '@biomejs/cli-win32-x64@1.7.3': - resolution: {integrity: sha512-ZmByhbrnmz/UUFYB622CECwhKIPjJLLPr5zr3edhu04LzbfcOrz16VYeNq5dpO1ADG70FORhAJkaIGdaVBG00w==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [win32] - - '@blocknote/core@0.12.4': - resolution: {integrity: sha512-njnrEZUZ7sPm0CIwxSfFfnP1IgB+H+Kvk5+2Etr3tozuQgwdQ0X6wn6E+MTCP97Nxl/aPA7S1F/XUoy1L8ICXQ==} - - '@blocknote/core@0.13.2': - resolution: {integrity: sha512-HthOOI22YLMWc6lL/+xniJh4ujldwOkOKAZRUbVf8+PPFqMpbuOaNwRlmUfwG0YB4W0+YHFpgnhiYuo4t1NEdA==} - - '@blocknote/react@0.12.4': - resolution: {integrity: sha512-cgtQmPUhRmWwHifskhfuwq7SflXTagilblzkfKmkvHYsldeH2WcOHGbgskX5bdx7ulvryrLnTSbXszLuTGd5Hw==} - peerDependencies: - react: ^18 - react-dom: ^18 - - '@codemirror/autocomplete@6.16.3': - resolution: {integrity: sha512-Vl/tIeRVVUCRDuOG48lttBasNQu8usGgXQawBXI7WJAiUDSFOfzflmEsZFZo48mAvAaa4FZ/4/yLLxFtdJaKYA==} - peerDependencies: - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 - '@lezer/common': ^1.0.0 - - '@codemirror/commands@6.6.0': - resolution: {integrity: sha512-qnY+b7j1UNcTS31Eenuc/5YJB6gQOzkUoNmJQc0rznwqSRpeaWWpjkWy2C/MPTcePpsKJEM26hXrOXl1+nceXg==} - - '@codemirror/lang-css@6.2.1': - resolution: {integrity: sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==} - - '@codemirror/lang-html@6.4.9': - resolution: {integrity: sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==} - - '@codemirror/lang-javascript@6.2.2': - resolution: {integrity: sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==} - - '@codemirror/lang-json@6.0.1': - resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==} - - '@codemirror/lang-yaml@6.1.1': - resolution: {integrity: sha512-HV2NzbK9bbVnjWxwObuZh5FuPCowx51mEfoFT9y3y+M37fA3+pbxx4I7uePuygFzDsAmCTwQSc/kXh/flab4uw==} - - '@codemirror/language@6.10.2': - resolution: {integrity: sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==} - - '@codemirror/lint@6.8.1': - resolution: {integrity: sha512-IZ0Y7S4/bpaunwggW2jYqwLuHj0QtESf5xcROewY6+lDNwZ/NzvR4t+vpYgg9m7V8UXLPYqG+lu3DF470E5Oxg==} - - '@codemirror/search@6.5.6': - resolution: {integrity: sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==} - - '@codemirror/state@6.4.1': - resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==} - - '@codemirror/view@6.28.2': - resolution: {integrity: sha512-A3DmyVfjgPsGIjiJqM/zvODUAPQdQl3ci0ghehYNnbt5x+o76xq+dL5+mMBuysDXnI3kapgOkoeJ0sbtL/3qPw==} - - '@discoveryjs/json-ext@0.5.7': - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} - - '@emnapi/runtime@1.1.1': - resolution: {integrity: sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==} - - '@emotion/is-prop-valid@0.8.8': - resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} - - '@emotion/memoize@0.7.4': - resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} - - '@ericcornelissen/bash-parser@0.5.2': - resolution: {integrity: sha512-4pIMTa1nEFfMXitv7oaNEWOdM+zpOZavesa5GaiWTgda6Zk32CFGxjUp/iIaN0PwgUW1yTq/fztSjbpE8SLGZQ==} - engines: {node: '>=4'} - - '@esbuild/aix-ppc64@0.19.11': - resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.20.2': - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.19.11': - resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.20.2': - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.19.11': - resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.20.2': - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.19.11': - resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.20.2': - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.19.11': - resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.20.2': - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.19.11': - resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.20.2': - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.19.11': - resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.20.2': - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.19.11': - resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.20.2': - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.19.11': - resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.20.2': - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.19.11': - resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.20.2': - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.19.11': - resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.20.2': - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.19.11': - resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.20.2': - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.19.11': - resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.20.2': - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.19.11': - resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.20.2': - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.19.11': - resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.20.2': - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.19.11': - resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.20.2': - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.19.11': - resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.20.2': - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.19.11': - resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.20.2': - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.19.11': - resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.20.2': - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.19.11': - resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.20.2': - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.19.11': - resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.20.2': - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.19.11': - resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.20.2': - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.19.11': - resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.20.2': - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - 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.11.0': - resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.17.1': - resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.1.0': - resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.8.0': - resolution: {integrity: sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.4': - resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@faker-js/faker@8.4.1': - resolution: {integrity: sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} - - '@floating-ui/core@1.6.2': - resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==} - - '@floating-ui/dom@1.6.3': - resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} - - '@floating-ui/dom@1.6.5': - resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==} - - '@floating-ui/react-dom@1.3.0': - resolution: {integrity: sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/react-dom@2.0.9': - resolution: {integrity: sha512-q0umO0+LQK4+p6aGyvzASqKbKOJcAHJ7ycE9CuUvfx3s9zTHWmGJTPOIlM/hmSBfUfg/XfY5YhLBLR/LHwShQQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/react@0.19.2': - resolution: {integrity: sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/react@0.26.15': - resolution: {integrity: sha512-WKmfLkxTwCm09Dxq4LpjL3EPbZVSp5wvnap1jmculsfnzg2Ag/pCkP+OPyjE5dFMXqX97hsLIqJehboZ5XAHXw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/utils@0.2.2': - resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} - - '@floating-ui/utils@0.2.3': - resolution: {integrity: sha512-XGndio0l5/Gvd6CLIABvsav9HHezgDFFhDfHk1bvLfr9ni8dojqLSvBbotJEjmIwNHL7vK4QzBJTdBRoB+c1ww==} - - '@floating-ui/vue@1.0.7': - resolution: {integrity: sha512-tm9aMT9IrMzoZfzPpsoZHP7j7ULZ0p9AzCJV6i2H8sAlKe36tAnwuQLHdm7vE0SnRkHJJXuMB/gNz4gFdHLNrg==} - - '@flydotio/dockerfile@0.5.8': - resolution: {integrity: sha512-119l9s4xUEATRWTQPddE0f+jZjVBhpnJiGA/aHzDiOUet2L7SD3G5jbSGvOXJm1Ks3kGmxUcPdt3BpLQRef+ow==} - engines: {node: '>=16.0.0'} - hasBin: true - - '@headlessui/react@1.7.19': - resolution: {integrity: sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==} - engines: {node: '>=10'} - peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - - '@headlessui/tailwindcss@0.2.1': - resolution: {integrity: sha512-2+5+NZ+RzMyrVeCZOxdbvkUSssSxGvcUxphkIfSVLpRiKsj+/63T2TOL9dBYMXVfj/CGr6hMxSRInzXv6YY7sA==} - engines: {node: '>=10'} - peerDependencies: - tailwindcss: ^3.0 - - '@headlessui/vue@1.7.22': - resolution: {integrity: sha512-Hoffjoolq1rY+LOfJ+B/OvkhuBXXBFgd8oBlN+l1TApma2dB0En0ucFZrwQtb33SmcCqd32EQd0y07oziXWNYg==} - engines: {node: '>=10'} - peerDependencies: - vue: ^3.2.0 - - '@hexagon/base64@1.1.28': - resolution: {integrity: sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==} - - '@hono/swagger-ui@0.4.0': - resolution: {integrity: sha512-8lF+dexzgV2HRM1R/gf49E5djroq4jVMYMSwLkSF9pT0I6sYhuqirFDCRFrBtbbLCBsKzw6f2MF5rS+WY3d7Nw==} - peerDependencies: - hono: '*' - - '@hono/zod-openapi@0.15.1': - resolution: {integrity: sha512-2Un3D5xD1j4tIvUwzQ/XkB6xwrEA0Ne23TRjB8UVw0PgUWzsB3xiB8Hl/y2ZEMfcIfrA15/ga4P6Bkct8uYaLg==} - engines: {node: '>=16.0.0'} - peerDependencies: - hono: '>=4.3.6' - zod: 3.* - - '@hono/zod-validator@0.2.2': - resolution: {integrity: sha512-dSDxaPV70Py8wuIU2QNpoVEIOSzSXZ/6/B/h4xA7eOMz7+AarKTSGV8E6QwrdcCbBLkpqfJ4Q2TmBO0eP1tCBQ==} - peerDependencies: - hono: '>=3.9.0' - zod: ^3.19.1 - - '@hookform/resolvers@3.9.0': - resolution: {integrity: sha512-bU0Gr4EepJ/EQsH/IwEzYLsT/PEj5C0ynLQ4m+GSHS+xKH4TfSelhluTgOaoc4kA5s7eCsQbM4wvZLzELmWzUg==} - peerDependencies: - react-hook-form: ^7.0.0 - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.3.0': - resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} - engines: {node: '>=18.18'} - - '@img/sharp-darwin-arm64@0.33.4': - resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - - '@img/sharp-darwin-x64@0.33.4': - resolution: {integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-darwin-arm64@1.0.2': - resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} - engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - - '@img/sharp-libvips-darwin-x64@1.0.2': - resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} - engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - - '@img/sharp-libvips-linux-arm64@1.0.2': - resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linux-arm@1.0.2': - resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - - '@img/sharp-libvips-linux-s390x@1.0.2': - resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] - - '@img/sharp-libvips-linux-x64@1.0.2': - resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-arm64@1.0.2': - resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - - '@img/sharp-libvips-linuxmusl-x64@1.0.2': - resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - - '@img/sharp-linux-arm64@0.33.4': - resolution: {integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - - '@img/sharp-linux-arm@0.33.4': - resolution: {integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - - '@img/sharp-linux-s390x@0.33.4': - resolution: {integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==} - engines: {glibc: '>=2.31', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] - - '@img/sharp-linux-x64@0.33.4': - resolution: {integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - - '@img/sharp-linuxmusl-arm64@0.33.4': - resolution: {integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - - '@img/sharp-linuxmusl-x64@0.33.4': - resolution: {integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - - '@img/sharp-wasm32@0.33.4': - resolution: {integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [wasm32] - - '@img/sharp-win32-ia32@0.33.4': - resolution: {integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [ia32] - os: [win32] - - '@img/sharp-win32-x64@0.33.4': - resolution: {integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [win32] - - '@inquirer/figures@1.0.2': - resolution: {integrity: sha512-4F1MBwVr3c/m4bAUef6LgkvBfSjzwH+OfldgHqcuacWwSUetFebM2wi58WfG9uk1rR98U6GwLed4asLJbwdV5w==} - engines: {node: '>=18'} - - '@internationalized/date@3.5.2': - resolution: {integrity: sha512-vo1yOMUt2hzp63IutEaTUxROdvQg1qlMRsbCvbay2AK2Gai7wIgCyK5weEX3nHkiLgo4qCXHijFNC/ILhlRpOQ==} - - '@internationalized/date@3.5.4': - resolution: {integrity: sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw==} - - '@internationalized/number@3.5.1': - resolution: {integrity: sha512-N0fPU/nz15SwR9IbfJ5xaS9Ss/O5h1sVXMZf43vc9mxEG48ovglvvzBjF53aHlq20uoR6c+88CrIXipU/LSzwg==} - - '@internationalized/number@3.5.3': - resolution: {integrity: sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw==} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@levischuck/tiny-cbor@0.2.2': - resolution: {integrity: sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==} - - '@lezer/common@1.2.1': - resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==} - - '@lezer/css@1.1.8': - resolution: {integrity: sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==} - - '@lezer/highlight@1.2.0': - resolution: {integrity: sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==} - - '@lezer/html@1.3.10': - resolution: {integrity: sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==} - - '@lezer/javascript@1.4.17': - resolution: {integrity: sha512-bYW4ctpyGK+JMumDApeUzuIezX01H76R1foD6LcRX224FWfyYit/HYxiPGDjXXe/wQWASjCvVGoukTH68+0HIA==} - - '@lezer/json@1.0.2': - resolution: {integrity: sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==} - - '@lezer/lr@1.4.1': - resolution: {integrity: sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw==} - - '@lezer/yaml@1.0.3': - resolution: {integrity: sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA==} - - '@ljharb/through@2.3.13': - resolution: {integrity: sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==} - engines: {node: '>= 0.4'} - - '@mantine/core@7.9.2': - resolution: {integrity: sha512-ARNEiREF70tikW6at8QwFFcDbtennPjnhPOifaDL1sQurO3ORN/iOUFxiH1npWoqNydUZHxhsfFVpte8NNf/oQ==} - peerDependencies: - '@mantine/hooks': 7.9.2 - react: ^18.2.0 - react-dom: ^18.2.0 - - '@mantine/hooks@7.9.2': - resolution: {integrity: sha512-qT8vvHZ8K/qFXSSIyq/NHpKgtEs1Vas4Z2tPPtMTN7oyibjsel09XebPAt59nkJS/SACQbja0GZ4lUXI2+AFFw==} - peerDependencies: - react: ^18.2.0 - - '@mantine/utils@6.0.21': - resolution: {integrity: sha512-33RVDRop5jiWFao3HKd3Yp7A9mEq4HAJxJPTuYm1NkdqX6aTKOQK7wT8v8itVodBp+sb4cJK6ZVdD1UurK/txQ==} - peerDependencies: - react: '>=16.8.0' - - '@mapbox/node-pre-gyp@1.0.11': - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} - hasBin: true - - '@next-auth/prisma-adapter@1.0.7': - resolution: {integrity: sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw==} - peerDependencies: - '@prisma/client': '>=2.26.0 || >=3' - next-auth: ^4 - - '@next/bundle-analyzer@14.2.3': - resolution: {integrity: sha512-Z88hbbngMs7njZKI8kTJIlpdLKYfMSLwnsqYe54AP4aLmgL70/Ynx/J201DQ+q2Lr6FxFw1uCeLGImDrHOl2ZA==} - - '@next/env@14.1.4': - resolution: {integrity: sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==} - - '@next/env@14.2.4': - resolution: {integrity: sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==} - - '@next/swc-darwin-arm64@14.1.4': - resolution: {integrity: sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@next/swc-darwin-arm64@14.2.4': - resolution: {integrity: sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@next/swc-darwin-x64@14.1.4': - resolution: {integrity: sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@next/swc-darwin-x64@14.2.4': - resolution: {integrity: sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@next/swc-linux-arm64-gnu@14.1.4': - resolution: {integrity: sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@next/swc-linux-arm64-gnu@14.2.4': - resolution: {integrity: sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@next/swc-linux-arm64-musl@14.1.4': - resolution: {integrity: sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@next/swc-linux-arm64-musl@14.2.4': - resolution: {integrity: sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@next/swc-linux-x64-gnu@14.1.4': - resolution: {integrity: sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@next/swc-linux-x64-gnu@14.2.4': - resolution: {integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@next/swc-linux-x64-musl@14.1.4': - resolution: {integrity: sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@next/swc-linux-x64-musl@14.2.4': - resolution: {integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@next/swc-win32-arm64-msvc@14.1.4': - resolution: {integrity: sha512-xzxF4ErcumXjO2Pvg/wVGrtr9QQJLk3IyQX1ddAC/fi6/5jZCZ9xpuL9Tzc4KPWMFq8GGWFVDMshZOdHGdkvag==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@next/swc-win32-arm64-msvc@14.2.4': - resolution: {integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@next/swc-win32-ia32-msvc@14.1.4': - resolution: {integrity: sha512-WZiz8OdbkpRw6/IU/lredZWKKZopUMhcI2F+XiMAcPja0uZYdMTZQRoQ0WZcvinn9xZAidimE7tN9W5v9Yyfyw==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@next/swc-win32-ia32-msvc@14.2.4': - resolution: {integrity: sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@next/swc-win32-x64-msvc@14.1.4': - resolution: {integrity: sha512-4Rto21sPfw555sZ/XNLqfxDUNeLhNYGO2dlPqsnuCg8N8a2a9u1ltqBOPQ4vj1Gf7eJC0W2hHG2eYUHuiXgY2w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@next/swc-win32-x64-msvc@14.2.4': - resolution: {integrity: sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.scandir@3.0.0': - resolution: {integrity: sha512-ktI9+PxfHYtKjF3cLTUAh2N+b8MijCRPNwKJNqTVdL0gB0QxLU2rIRaZ1t71oEa3YBDE6bukH1sR0+CDnpp/Mg==} - engines: {node: '>=16.14.0'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@3.0.0': - resolution: {integrity: sha512-2tQOI38s19P9i7X/Drt0v8iMA+KMsgdhB/dyPER+e+2Y8L1Z7QvnuRdW/uLuf5YRFUYmnj4bMA6qCuZHFI1GDQ==} - engines: {node: '>=16.14.0'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@2.0.0': - resolution: {integrity: sha512-54voNDBobGdMl3BUXSu7UaDh1P85PGHWlJ5e0XhPugo1JulOyCtp2I+5ri4wplGDJ8QGwPEQW7/x3yTLU7yF1A==} - engines: {node: '>=16.14.0'} - - '@one-ini/wasm@0.1.1': - resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} - - '@opentelemetry/api-logs@0.52.1': - resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==} - engines: {node: '>=14'} - - '@opentelemetry/api@1.9.0': - resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} - engines: {node: '>=8.0.0'} - - '@opentelemetry/context-async-hooks@1.25.1': - resolution: {integrity: sha512-UW/ge9zjvAEmRWVapOP0qyCvPulWU6cQxGxDbWEFfGOj1VBBZAuOqTo3X6yWmDTD3Xe15ysCZChHncr2xFMIfQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/core@1.25.0': - resolution: {integrity: sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/core@1.25.1': - resolution: {integrity: sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/instrumentation-connect@0.38.0': - resolution: {integrity: sha512-2/nRnx3pjYEmdPIaBwtgtSviTKHWnDZN3R+TkRUnhIVrvBKVcq+I5B2rtd6mr6Fe9cHlZ9Ojcuh7pkNh/xdWWg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-express@0.41.0': - resolution: {integrity: sha512-/B7fbMdaf3SYe5f1P973tkqd6s7XZirjpfkoJ63E7nltU30qmlgm9tY5XwZOzAFI0rHS9tbrFI2HFPAvQUFe/A==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-fastify@0.38.0': - resolution: {integrity: sha512-HBVLpTSYpkQZ87/Df3N0gAw7VzYZV3n28THIBrJWfuqw3Or7UqdhnjeuMIPQ04BKk3aZc0cWn2naSQObbh5vXw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-graphql@0.42.0': - resolution: {integrity: sha512-N8SOwoKL9KQSX7z3gOaw5UaTeVQcfDO1c21csVHnmnmGUoqsXbArK2B8VuwPWcv6/BC/i3io+xTo7QGRZ/z28Q==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-hapi@0.40.0': - resolution: {integrity: sha512-8U/w7Ifumtd2bSN1OLaSwAAFhb9FyqWUki3lMMB0ds+1+HdSxYBe9aspEJEgvxAqOkrQnVniAPTEGf1pGM7SOw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-http@0.52.1': - resolution: {integrity: sha512-dG/aevWhaP+7OLv4BQQSEKMJv8GyeOp3Wxl31NHqE8xo9/fYMfEljiZphUHIfyg4gnZ9swMyWjfOQs5GUQe54Q==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-ioredis@0.42.0': - resolution: {integrity: sha512-P11H168EKvBB9TUSasNDOGJCSkpT44XgoM6d3gRIWAa9ghLpYhl0uRkS8//MqPzcJVHr3h3RmfXIpiYLjyIZTw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-koa@0.42.0': - resolution: {integrity: sha512-H1BEmnMhho8o8HuNRq5zEI4+SIHDIglNB7BPKohZyWG4fWNuR7yM4GTlR01Syq21vODAS7z5omblScJD/eZdKw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-mongodb@0.46.0': - resolution: {integrity: sha512-VF/MicZ5UOBiXrqBslzwxhN7TVqzu1/LN/QDpkskqM0Zm0aZ4CVRbUygL8d7lrjLn15x5kGIe8VsSphMfPJzlA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-mongoose@0.40.0': - resolution: {integrity: sha512-niRi5ZUnkgzRhIGMOozTyoZIvJKNJyhijQI4nF4iFSb+FUx2v5fngfR+8XLmdQAO7xmsD8E5vEGdDVYVtKbZew==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-mysql2@0.40.0': - resolution: {integrity: sha512-0xfS1xcqUmY7WE1uWjlmI67Xg3QsSUlNT+AcXHeA4BDUPwZtWqF4ezIwLgpVZfHOnkAEheqGfNSWd1PIu3Wnfg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-mysql@0.40.0': - resolution: {integrity: sha512-d7ja8yizsOCNMYIJt5PH/fKZXjb/mS48zLROO4BzZTtDfhNCl2UM/9VIomP2qkGIFVouSJrGr/T00EzY7bPtKA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-nestjs-core@0.39.0': - resolution: {integrity: sha512-mewVhEXdikyvIZoMIUry8eb8l3HUjuQjSjVbmLVTt4NQi35tkpnHQrG9bTRBrl3403LoWZ2njMPJyg4l6HfKvA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-pg@0.43.0': - resolution: {integrity: sha512-og23KLyoxdnAeFs1UWqzSonuCkePUzCX30keSYigIzJe/6WSYA8rnEI5lobcxPEzg+GcU06J7jzokuEHbjVJNw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-redis-4@0.41.0': - resolution: {integrity: sha512-H7IfGTqW2reLXqput4yzAe8YpDC0fmVNal95GHMLOrS89W+qWUKIqxolSh63hJyfmwPSFwXASzj7wpSk8Az+Dg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation@0.46.0': - resolution: {integrity: sha512-a9TijXZZbk0vI5TGLZl+0kxyFfrXHhX6Svtz7Pp2/VBlCSKrazuULEyoJQrOknJyFWNMEmbbJgOciHCCpQcisw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation@0.52.1': - resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/redis-common@0.36.2': - resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==} - engines: {node: '>=14'} - - '@opentelemetry/resources@1.25.0': - resolution: {integrity: sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/resources@1.25.1': - resolution: {integrity: sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/sdk-metrics@1.25.0': - resolution: {integrity: sha512-IF+Sv4VHgBr/BPMKabl+GouJIhEqAOexCHgXVTISdz3q9P9H/uA8ScCF+22gitQ69aFtESbdYOV+Fen5+avQng==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' - - '@opentelemetry/sdk-trace-base@1.25.1': - resolution: {integrity: sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/semantic-conventions@1.25.0': - resolution: {integrity: sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==} - engines: {node: '>=14'} - - '@opentelemetry/semantic-conventions@1.25.1': - resolution: {integrity: sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==} - engines: {node: '>=14'} - - '@opentelemetry/sql-common@0.40.1': - resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.1.0 - - '@panva/hkdf@1.1.1': - resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} - - '@pdf-lib/standard-fonts@1.0.0': - resolution: {integrity: sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==} - - '@pdf-lib/upng@1.0.1': - resolution: {integrity: sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==} - - '@peculiar/asn1-android@2.3.10': - resolution: {integrity: sha512-z9Rx9cFJv7UUablZISe7uksNbFJCq13hO0yEAOoIpAymALTLlvUOSLnGiQS7okPaM5dP42oTLhezH6XDXRXjGw==} - - '@peculiar/asn1-ecc@2.3.8': - resolution: {integrity: sha512-Ah/Q15y3A/CtxbPibiLM/LKcMbnLTdUdLHUgdpB5f60sSvGkXzxJCu5ezGTFHogZXWNX3KSmYqilCrfdmBc6pQ==} - - '@peculiar/asn1-rsa@2.3.8': - resolution: {integrity: sha512-ES/RVEHu8VMYXgrg3gjb1m/XG0KJWnV4qyZZ7mAg7rrF3VTmRbLxO8mk+uy0Hme7geSMebp+Wvi2U6RLLEs12Q==} - - '@peculiar/asn1-schema@2.3.8': - resolution: {integrity: sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==} - - '@peculiar/asn1-x509@2.3.8': - resolution: {integrity: sha512-voKxGfDU1c6r9mKiN5ZUsZWh3Dy1BABvTM3cimf0tztNwyMJPhiXY94eRTgsMQe6ViLfT6EoXxkWVzcm3mFAFw==} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@polka/url@1.0.0-next.25': - resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - - '@popperjs/core@2.11.8': - resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - - '@prisma/client@5.14.0': - resolution: {integrity: sha512-akMSuyvLKeoU4LeyBAUdThP/uhVP3GuLygFE3MlYzaCb3/J8SfsYBE5PkaFuLuVpLyA6sFoW+16z/aPhNAESqg==} - engines: {node: '>=16.13'} - peerDependencies: - prisma: '*' - peerDependenciesMeta: - prisma: - optional: true - - '@prisma/debug@5.14.0': - resolution: {integrity: sha512-iq56qBZuFfX3fCxoxT8gBX33lQzomBU0qIUaEj1RebsKVz1ob/BVH1XSBwwwvRVtZEV1b7Fxx2eVu34Ge/mg3w==} - - '@prisma/debug@5.17.0': - resolution: {integrity: sha512-l7+AteR3P8FXiYyo496zkuoiJ5r9jLQEdUuxIxNCN1ud8rdbH3GTxm+f+dCyaSv9l9WY+29L9czaVRXz9mULfg==} - - '@prisma/debug@5.9.1': - resolution: {integrity: sha512-yAHFSFCg8KVoL0oRUno3m60GAjsUKYUDkQ+9BA2X2JfVR3kRVSJFc/GpQ2fSORi4pSHZR9orfM4UC9OVXIFFTA==} - - '@prisma/engines-version@5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48': - resolution: {integrity: sha512-ip6pNkRo1UxWv+6toxNcYvItNYaqQjXdFNGJ+Nuk2eYtRoEdoF13wxo7/jsClJFFenMPVNVqXQDV0oveXnR1cA==} - - '@prisma/engines@5.14.0': - resolution: {integrity: sha512-lgxkKZ6IEygVcw6IZZUlPIfLQ9hjSYAtHjZ5r64sCLDgVzsPFCi2XBBJgzPMkOQ5RHzUD4E/dVdpn9+ez8tk1A==} - - '@prisma/fetch-engine@5.14.0': - resolution: {integrity: sha512-VrheA9y9DMURK5vu8OJoOgQpxOhas3qF0IBHJ8G/0X44k82kc8E0w98HCn2nhnbOOMwbWsJWXfLC2/F8n5u0gQ==} - - '@prisma/generator-helper@5.17.0': - resolution: {integrity: sha512-UcYpNjjQNVHAjIxgjfXnF4fcKU7B2vuzG1L27xIV81xQoGSbxg7v670URBhd0/ZoE8v2Itj2bbuyezY1ViHVaA==} - - '@prisma/generator-helper@5.9.1': - resolution: {integrity: sha512-WMdEUPpPYxUGruRQM6e6IVTWXFjt1hHdF/m2TO7pWxhPo7/ZeoTOF9fH8JsvVSV78DYLOQkx9osjFLXZu447Kw==} - - '@prisma/get-platform@5.14.0': - resolution: {integrity: sha512-/yAyBvcEjRv41ynZrhdrPtHgk47xLRRq/o5eWGcUpBJ1YrUZTYB8EoPiopnP7iQrMATK8stXQdPOoVlrzuTQZw==} - - '@prisma/instrumentation@5.17.0': - resolution: {integrity: sha512-c1Sle4ji8aasMcYfBBHFM56We4ljfenVtRmS8aY06BllS7SoU6SmJBwG7vil+GHiR0Yrh+t9iBwt4AY0Jr4KNQ==} - - '@radix-ui/colors@1.0.1': - resolution: {integrity: sha512-xySw8f0ZVsAEP+e7iLl3EvcBXX7gsIlC1Zso/sPBW9gIWerBTgz6axrjU+MZ39wD+WFi5h5zdWpsg3+hwt2Qsg==} - - '@radix-ui/number@1.0.1': - resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} - - '@radix-ui/number@1.1.0': - resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} - - '@radix-ui/primitive@1.0.1': - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - - '@radix-ui/primitive@1.1.0': - resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} - - '@radix-ui/react-accordion@1.2.0': - resolution: {integrity: sha512-HJOzSX8dQqtsp/3jVxCU3CXEONF7/2jlGAB28oX8TTw1Dz8JYbEI1UcL8355PuLBE41/IRRMvCw7VkiK/jcUOQ==} - 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.0.5': - resolution: {integrity: sha512-OrVIOcZL0tl6xibeuGt5/+UxoT2N27KCFOPjFyfXMnchxSHZ/OW7cCX2nGlIYJrbHK/fczPcFzAwvNBB6XBNMA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-arrow@1.0.3': - resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-arrow@1.1.0': - resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} - 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.0': - resolution: {integrity: sha512-Q/PbuSMk/vyAd/UoIShVGZ7StHHeRFYU7wXmi5GV+8cLXflZAEpHL/F697H1klrzxKXNtZ97vWiC0q3RKUH8UA==} - 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.1.1': - resolution: {integrity: sha512-0i/EKJ222Afa1FE0C6pNJxDq1itzcl3HChE9DwskA4th4KRse8ojx8a1nVcOjwJdbpDLcz7uol77yYnQNMHdKw==} - 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.0': - resolution: {integrity: sha512-zQY7Epa8sTL0mq4ajSJpjgn2YmCgyrG7RsQgLp3C0LQVkG7+Tf6Pv1CeNWZLyqMjhdPkBa5Lx7wYBeSu7uCSTA==} - 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.0.3': - resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-collection@1.1.0': - resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} - 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.0.1': - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-compose-refs@1.1.0': - resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} - 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.0.1': - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context@1.1.0': - resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} - 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.0.5': - resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-direction@1.0.1': - resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-direction@1.1.0': - resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} - 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.0.5': - resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-dismissable-layer@1.1.0': - resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} - 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.0.6': - resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-focus-guards@1.0.1': - resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-focus-guards@1.1.0': - resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} - 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.0.4': - resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-focus-scope@1.1.0': - resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} - 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.0.1': - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-id@1.1.0': - resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} - 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.0.2': - resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-menu@2.0.6': - resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-popover@1.1.1': - resolution: {integrity: sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==} - 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.1.3': - resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-popper@1.2.0': - resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} - 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.0.4': - resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-portal@1.1.1': - resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} - 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.0.1': - resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-presence@1.1.0': - resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} - 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@1.0.3': - resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-primitive@2.0.0': - resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} - 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.2.0': - resolution: {integrity: sha512-yv+oiLaicYMBpqgfpSPw6q+RyXlLdIpQWDHZbUKURxe+nEh53hFXPPlfhfQQtYkS5MMK/5IWIa76SksleQZSzw==} - 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.0.4': - resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-roving-focus@1.1.0': - resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} - 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.1.0': - resolution: {integrity: sha512-9ArIZ9HWhsrfqS765h+GZuLoxaRHD/j0ZWOWilsCvYTpYJp8XwCqNG7Dt9Nu/TItKOdgLGkOPCodQvDc+UMwYg==} - 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.0.0': - resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-separator@1.0.3': - resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slot@1.0.2': - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-slot@1.1.0': - resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} - 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.0.3': - resolution: {integrity: sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-tabs@1.0.4': - resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-toggle-group@1.0.4': - resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-toggle-group@1.1.0': - resolution: {integrity: sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==} - 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.0.3': - resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-toggle@1.1.0': - resolution: {integrity: sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==} - 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-toolbar@1.0.4': - resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-tooltip@1.1.1': - resolution: {integrity: sha512-LLE8nzNE4MzPMw3O2zlVlkLFid3y9hMUs7uCbSHyKSo+tCN4yMCf+ZCCcfrYgsOC0TiHBPQ1mtpJ2liY3ZT3SQ==} - 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.1.2': - resolution: {integrity: sha512-9XRsLwe6Yb9B/tlnYCPVUd/TFS4J7HuOZW345DCeC6vKIxQGMZdx21RK4VoZauPD5frgkXTYVS5y90L+3YBn4w==} - 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.0.1': - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-callback-ref@1.1.0': - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - 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.0.1': - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.1.0': - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - 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.0.3': - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.1.0': - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} - 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.0.1': - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.1.0': - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} - 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.0.1': - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-previous@1.1.0': - resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} - 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.0.1': - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.1.0': - resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} - 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.0.1': - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.1.0': - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} - 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.0.3': - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-visually-hidden@1.1.0': - resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} - 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.0.1': - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} - - '@radix-ui/rect@1.1.0': - resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - - '@react-email/body@0.0.9': - resolution: {integrity: sha512-bSGF6j+MbfQKYnnN+Kf57lGp/J+ci+435OMIv/BKAtfmNzHL+ptRrsINJELiO8QzwnZmQjTGKSMAMMJiQS+xwQ==} - peerDependencies: - react: ^18.2.0 - - '@react-email/button@0.0.16': - resolution: {integrity: sha512-paptUerzDhKHEUmBuT0UecCoqo3N6ZQSyDKC1hFALTwKReGW2xQATisinho9Ybh9ZGw6IZ3n1nGtmX5k2sX70Q==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/code-block@0.0.6': - resolution: {integrity: sha512-i+TEeI7AyG1pmtO2Mr+TblV08zQnOtTlYB/v45kFMlDWWKTkvIV33oLRqLYOFhCIvoO5fDZA9T+4m6PvhmcNwQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/code-inline@0.0.3': - resolution: {integrity: sha512-SY5Nn4KhjcqqEBHvUwFlOLNmUT78elIGR+Y14eg02LrVKQJ38mFCfXNGDLk4wbP/2dnidkLYq9+60nf7mFMhnQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/column@0.0.11': - resolution: {integrity: sha512-KvrPuQFn0hlItRRL3vmRuOJgKG+8I0oO9HM5ReLMi5Ns313JSEQogCJaXuOEFkOVeuu5YyY6zy/+5Esccc1AxQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/components@0.0.22': - resolution: {integrity: sha512-GO6F+fS3c3aQ6OnqL8esQ/KqtrPGwz80U6uQ8Nd/ETpgFt7y1PXvSGfr8v12wyLffAagdowc/JjoThfIr0L6aA==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/container@0.0.13': - resolution: {integrity: sha512-ftke0N1FZl8MX3XXxXiiOaiJOnrQz7ZXUyqNj81K+BK+DePWIVaSmgK6Bu8fFnsgwdKuBdqjZTEtF4sIkU3FuQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/font@0.0.7': - resolution: {integrity: sha512-R0/mfUV/XcUQIALjZUFT9GP+XGmIP1KPz20h9rpS5e4ji6VkQ3ENWlisxrdK5U+KA9iZQrlan+/6tUoTJ9bFsg==} - peerDependencies: - react: ^18.2.0 - - '@react-email/head@0.0.10': - resolution: {integrity: sha512-VoH399w0/i3dJFnwH0Ixf9BTuiWhSA/y8PpsCJ7CPw8Mv8WNBqMAAsw0rmrITYI8uPd15LZ2zk2uwRDvqasMRw==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/heading@0.0.13': - resolution: {integrity: sha512-MYDzjJwljKHBLueLuyqkaHxu6N4aGOL1ms2NNyJ9WXC9mmBnLs4Y/QEf9SjE4Df3AW4iT9uyfVHuaNUb7uq5QA==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/hr@0.0.9': - resolution: {integrity: sha512-Rte+EZL3ptH3rkVU3a7fh8/06mZ6Q679tDaWDjsw3878RQC9afWqUPp5lwgA/1pTouLmJlDs2BjRnV6H84O7iw==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/html@0.0.9': - resolution: {integrity: sha512-NB74xwWaOJZxhpiy6pzkhHvugBa2vvmUa0KKnSwOEIX+WEQH8wj5UUhRN4F+Pmkiqz3QBTETUJiSsNWWFtrHgA==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/img@0.0.9': - resolution: {integrity: sha512-zDlQWmlSANb2dBYhDaKD12Z4xaGD5mEf3peawBYHGxYySzMLwRT2ANGvFqpDNd7iT0C5po+/9EWR8fS1dLy0QQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/link@0.0.9': - resolution: {integrity: sha512-rRqWGPUTGFwwtMCtsdCHNh0ewOsd4UBG/D12UcwJYFKRb0U6hUG/6VJZE3tB1QYZpLIESdvOLL6ztznh+D749g==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/markdown@0.0.11': - resolution: {integrity: sha512-KeDTS0bAvvtgavYAIAmxKpRxWUSr1/jufckDzu9g4QsQtth8wYaSR5wCPXuTPmhFgJMIlNSlOiBnVp+oRbDtKA==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/preview@0.0.10': - resolution: {integrity: sha512-bRrv8teMMBlF7ttLp1zZUejkPUzrwMQXrigdagtEBOqsB8HxvJU2MR6Yyb3XOqBYldaIDOQJ1z61zyD2wRlKAw==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/render@0.0.17': - resolution: {integrity: sha512-xBQ+/73+WsGuXKY7r1U73zMBNV28xdV0cp9cFjhNYipBReDHhV97IpA6v7Hl0dDtDzt+yS/72dY5vYXrF1v8NA==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - react-dom: ^18.2.0 - - '@react-email/row@0.0.9': - resolution: {integrity: sha512-ZDASHVvyKrWBS00o5pSH5khfMf46UtZhrHcSAfPSiC4nj7R8A0bf+3Wmbk8YmsaV+qWXUCUSHWwIAAlMRnJoAA==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/section@0.0.13': - resolution: {integrity: sha512-McsCQ5NQlNWEMEAR3EtCxHgRhxGmLD+jPvj7A3FD7y2X3fXG0hbmUGX12B63rIywSWjJoQi6tojx/8RpzbyeTA==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/tailwind@0.0.19': - resolution: {integrity: sha512-bA0w4D7mSNowxWhcO0jBJauFIPf2Ok7QuKlrHwCcxyX35L2pb5D6ZmXYOrD9C6ADQuVz5oEX+oed3zpSLROgPg==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-email/text@0.0.9': - resolution: {integrity: sha512-UNFPGerER3zywpb1ODOS2VgHP7rgOmiTxMHn75pjvQf/gi3/jN9edEQLYvRgPv/mNn4IpJFkOrlP8jcammLeew==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^18.2.0 - - '@react-pdf/fns@2.2.1': - resolution: {integrity: sha512-s78aDg0vDYaijU5lLOCsUD+qinQbfOvcNeaoX9AiE7+kZzzCo6B/nX+l48cmt9OosJmvZvE9DWR9cLhrhOi2pA==} - - '@react-pdf/font@2.5.1': - resolution: {integrity: sha512-Hyb2zBb92Glc3lvhmJfy4dO2Mj29KB26Uk12Ua9EhKAdiuCTLBqgP8Oe1cGwrvDI7xA4OOcwvBMdYh0vhOUHzA==} - - '@react-pdf/image@2.3.6': - resolution: {integrity: sha512-7iZDYZrZlJqNzS6huNl2XdMcLFUo68e6mOdzQeJ63d5eApdthhSHBnkGzHfLhH5t8DCpZNtClmklzuLL63ADfw==} - - '@react-pdf/layout@3.12.1': - resolution: {integrity: sha512-BxSeykDxvADlpe4OGtQ7NH46QXq3uImAYsTHOPLCwbXMniQ1O3uCBx7H+HthxkCNshgYVPp9qS3KyvQv/oIZwg==} - - '@react-pdf/pdfkit@3.1.10': - resolution: {integrity: sha512-P/qPBtCFo2HDJD0i6NfbmoBRrsOVO8CIogYsefwG4fklTo50zNgnMM5U1WLckTuX8Qt1ThiQuokmTG5arheblA==} - - '@react-pdf/png-js@2.3.1': - resolution: {integrity: sha512-pEZ18I4t1vAUS4lmhvXPmXYP4PHeblpWP/pAlMMRkEyP7tdAeHUN7taQl9sf9OPq7YITMY3lWpYpJU6t4CZgZg==} - - '@react-pdf/primitives@3.1.1': - resolution: {integrity: sha512-miwjxLwTnO3IjoqkTVeTI+9CdyDggwekmSLhVCw+a/7FoQc+gF3J2dSKwsHvAcVFM0gvU8mzCeTofgw0zPDq0w==} - - '@react-pdf/render@3.4.4': - resolution: {integrity: sha512-CfGxWmVgrY3JgmB1iMnz2W6Ck+8pisZeFt8vGlxP+JfT+0onr208pQvGSV5KwA9LGhAdABxqc/+y17V3vtKdFA==} - - '@react-pdf/renderer@3.4.4': - resolution: {integrity: sha512-j1TWMHHXDeHdoQE3xjhBh0MZ2rn7wHIlP/uglr/EJZXqnPbfg6bfLzRJCM6bs+XJV3d8+zLQjHf6sF/fWcBDfg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@react-pdf/stylesheet@4.2.5': - resolution: {integrity: sha512-XnmapeCW+hDuNdVwpuvO04WKv71wAs8aH+saIq29Bo2fp1SxznHTcQArTZtK6Wgr/E9BHXeB2iAPpUZuI6G+xA==} - - '@react-pdf/textkit@4.4.1': - resolution: {integrity: sha512-Jl9wdTqIvJ5pX+vAGz0EOhP7ut5Two9H6CzTKo/YYPeD79cM2yTXF3JzTERBC28y7LR0Waq9D2LHQjI+b/EYUQ==} - - '@react-pdf/types@2.5.0': - resolution: {integrity: sha512-XsVRkt0hQ60I4e3leAVt+aZR3KJCaJd179BfJHAv4F4x6Vq3yqkry8lcbUWKGKDw1j3/8sW4FsgGR41SFvsG9A==} - - '@remirror/core-constants@2.0.2': - resolution: {integrity: sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==} - - '@remixicon/react@4.2.0': - resolution: {integrity: sha512-eGhKpZ88OU0qkcY9pJu6khBmItDV82nU130E6C68yc+FbljueHlUYy/4CrJsmf860RIDMay2Rpzl27OSJ81miw==} - peerDependencies: - react: '>=18.2.0' - - '@replit/codemirror-css-color-picker@6.1.1': - resolution: {integrity: sha512-e/wYHcgt3HRDpvYuwqXyjv3LEY6VyFjJeDQK1UtFmaykp86R6Cbw3ULH9pvuJuelaW6nS4CVtIRHuOfbFLlqwQ==} - peerDependencies: - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 - - '@rollup/plugin-commonjs@26.0.1': - resolution: {integrity: sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==} - engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@5.1.0': - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.18.0': - resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.18.0': - resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.18.0': - resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.18.0': - resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-linux-arm-gnueabihf@4.18.0': - resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.18.0': - resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.18.0': - resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.18.0': - resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': - resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.18.0': - resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.18.0': - resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.18.0': - resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.18.0': - resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.18.0': - resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.18.0': - resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.18.0': - resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} - cpu: [x64] - os: [win32] - - '@scalar/api-client-modal@0.0.16': - resolution: {integrity: sha512-7edLTztM7HKNOJ20rMd8YyzQUeoVuabSSlXuCxk6q+tzeSELMbAUlv3ZXZMINVZAWMIdvVsP3ktdpNAzWHNHHQ==} - engines: {node: '>=18'} - - '@scalar/api-client@1.3.19': - resolution: {integrity: sha512-GAVDclMEWerm6hlSU8dse+bzqxj4tzHCZLRVa6UtfCkdxmOqAaP46TDKasJAfuMPfWrVDNgGnIRwLBAz0u/zsQ==} - engines: {node: '>=18'} - - '@scalar/api-reference@1.24.20': - resolution: {integrity: sha512-vgdVv5EMbFlVMv7c+jajGFw3yCbo6VvmsCdphCi9m5TIcejvh/lt6wtFR11l2sv3VR/JHL5hZ/PS2gPg5ebqhg==} - engines: {node: '>=18'} - - '@scalar/client-app@0.1.14': - resolution: {integrity: sha512-d9T45OE0m3uNLP3blrO+x5EyFw1h1rqjsq9eSBTOIXluHL65nXX0plnb168pnQ7p04y+Sk+BF8lkCFnmK7fKkg==} - engines: {node: '>=18'} - - '@scalar/code-highlight@0.0.5': - resolution: {integrity: sha512-/8Q68WBvrVeqda5sW6E0mxmLwK0vbuDPHyfuugkYlHj9F7o5lKV+VviBxeaUh18nbGp3qWjdxv6X2mbUe2TyNA==} - engines: {node: '>=18'} - - '@scalar/components@0.12.4': - resolution: {integrity: sha512-PXtLu5PXpLKUOmfentsEgMNrhUXno09NCKKbfuYryftggi/Lbl+U2+Fe+/ZwER5D7VZybW7etBNNQRORzE4LYg==} - engines: {node: '>=18'} - - '@scalar/draggable@0.1.3': - resolution: {integrity: sha512-A6lUgTV8q/zJGkzHerY1T+X3l3GXmCCg09Z7OU7j6yDyyuj2BSTblthncoD5sN3BdwLjHwkm9ecehfvaE0pj5w==} - engines: {node: '>=18'} - - '@scalar/nextjs-api-reference@0.4.18': - resolution: {integrity: sha512-A62jYUAt2rTelvgt68pii6SuyOfsx5jXye9A4imN8qO+MTDBeEr4pNvf1GysnM+RWq8FvnwAwovHNq23mfFxEw==} - engines: {node: '>=18'} - - '@scalar/oas-utils@0.2.5': - resolution: {integrity: sha512-YxQOO20SOJa+M3XVepg2kIoo3V61EYuFepIVhc0NftzN47y6d2S3RNEWZK6YLn8Q2rIRSvzCajglWdHOPt5Dlw==} - engines: {node: '>=18'} - - '@scalar/object-utils@1.1.2': - resolution: {integrity: sha512-93Yhb68Lt5WWSyI8HIpqNZUlnxhx8v/XW7Mxt6V7NFXbOmp9wY3MlTf1qsbWaYfmkqcwEAhO/2rAy1RB9tLJvg==} - engines: {node: '>=18'} - - '@scalar/openapi-parser@0.7.1': - resolution: {integrity: sha512-FR2ezONBF0OOe5w5fa8uBInWvlGjC2+hEEmRZnJn/n1VMII8gg88VmBpE1wD2TqE4d6KIPCp/yxr5h10a8D1vw==} - engines: {node: '>=18'} - - '@scalar/snippetz-core@0.1.4': - resolution: {integrity: sha512-NMnDzl5dHgUj0k8ZtfssDfy6wv1wO/M+GhpdGr/4OH3m8UZB27CZ3hM7wXh+fm75hZO5XIBsANW20kJVnzpaHg==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@scalar/snippetz-plugin-js-fetch@0.1.1': - resolution: {integrity: sha512-9ODfi0OaEvZHdCe09c91eH1R5QPynL+FPxtYuK/9K5ElRE2NqxYysri9AsgOhr1Fqhpy5qKzDj4Gi5FHsJSGXw==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@scalar/snippetz-plugin-js-ofetch@0.1.1': - resolution: {integrity: sha512-fPIJlY4q1j5gbnsYSxix0IJ7hqcvm8Ly7iVoK66vaL738AIMiGZMhGKtLrTVPad77PimwO+jeq5iDIZ495UY7Q==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@scalar/snippetz-plugin-node-fetch@0.1.2': - resolution: {integrity: sha512-kD6erA6aAqjHkj+JrJQKqrqcH4fnCrLi2uYw16CmELIGtqVHFau7ew2c087y4OQTltdi5rEk2zj5zOBu9yaS3Q==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@scalar/snippetz-plugin-node-ofetch@0.1.1': - resolution: {integrity: sha512-9NpvdMKebg82FkVWoWyOxd1JXAB8KNxmrsFFwQKNjhAw0A5hjNR5oW9lD+FtB1Laupg2FNtw9dcCydnF+LcCWw==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@scalar/snippetz-plugin-node-undici@0.1.6': - resolution: {integrity: sha512-CivUl7wgZ6vlUb01FMdqOt/NVyOWqT0iHZRp5YlPp1pflXZLnAyi5antUTtBEUHUtHM2EO/WR7vx4kRsPcrgLg==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@scalar/snippetz@0.1.6': - resolution: {integrity: sha512-z3DEpT/FIZq9yeHL/tz2v6WvdHIiZ4uvK96RdeTPKUUJ0IXvA5vONG3PF5LE0Q/408PCzWsZpGs9f97ztaeJSQ==} - - '@scalar/themes@0.9.8': - resolution: {integrity: sha512-eMgYw8DkPI3BzI4hFOYc9HvnhxkSP+6IfbHDC2YqHCjw+/0c2lh3lc0CW4FZT5jBRA1MP/uu+4caiQToqsv2mQ==} - engines: {node: '>=18'} - - '@scalar/use-codemirror@0.11.4': - resolution: {integrity: sha512-pS1uefkmV7Guaou8cyltcCLtt1EReq1ZqYHwDbZlzPyQYPEVoFWgA14U+ChvHzvUVlLogMvGbcRL4PNZDHfUSQ==} - engines: {node: '>=18'} - - '@scalar/use-toasts@0.7.4': - resolution: {integrity: sha512-LvnY0Gl0G09kgf65A3ArtZ1pOjB3Y7Rs29IS2GRlVKICGYOgdiWEdeWzXZCMtvvmIEM+LH5FTbuoqpiwXJ1OXg==} - engines: {node: '>=18'} - - '@scalar/use-tooltip@1.0.1': - resolution: {integrity: sha512-OccT/4vWnz3MFoPRIRlFDFWFBca3GCxXQ9LjFaOTzb47W9Fb8l4mwsonZ/h8pCYNq0tZqaRul6G5J8AFzAgKrg==} - engines: {node: '>=18'} - - '@selderee/plugin-htmlparser2@0.11.0': - resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - - '@sentry-internal/browser-utils@8.19.0': - resolution: {integrity: sha512-kM/2KlikKuBR63nFi2q7MGS3V9K9hakjvUknhr/jHZqDVfEuBKmp1ZlHFAdJtglKHHJy07gPj/XqDH7BbYh5yg==} - engines: {node: '>=14.18'} - - '@sentry-internal/feedback@8.19.0': - resolution: {integrity: sha512-Jc77H8fEaGcBhERc2U/o7Q8CZHvlZLT9vAlzq0ZZR20v/1vwYcJW1ysKfTuvmw22hCR6ukhFNl6pqJocXFVhvA==} - engines: {node: '>=14.18'} - - '@sentry-internal/replay-canvas@8.19.0': - resolution: {integrity: sha512-l4pKJDHrXEctxrK7Xme/+fKToXpGwr/G2t77BzeE1WEw9LwSwADz/hi8HoMdZzuKWriM2BNbz20tpVS84sODxA==} - engines: {node: '>=14.18'} - - '@sentry-internal/replay@8.19.0': - resolution: {integrity: sha512-EW9e1J6XbqXUXQST1AfSIzT9O8OwPyeFOkhkn9/gqOQv08TJvQEIBtWJEoJS+XFMEUuB8IqIzVWNVko/DnGt9A==} - engines: {node: '>=14.18'} - - '@sentry/babel-plugin-component-annotate@2.20.1': - resolution: {integrity: sha512-4mhEwYTK00bIb5Y9UWIELVUfru587Vaeg0DQGswv4aIRHIiMKLyNqCEejaaybQ/fNChIZOKmvyqXk430YVd7Qg==} - engines: {node: '>= 14'} - - '@sentry/browser@8.19.0': - resolution: {integrity: sha512-ZC1HxIFm4TIGONyy9MkPG6Dw8IAhzq43t5mq9PqrB1ehuWj8GX6Vk3E26kuc2sydAm4AXbj0562OmvZHsAJpUA==} - engines: {node: '>=14.18'} - - '@sentry/bundler-plugin-core@2.20.1': - resolution: {integrity: sha512-6ipbmGzHekxeRCbp7eoefr6bdd/lW4cNA9eNnrmd9+PicubweGaZZbH2NjhFHsaxzgOezwipDHjrTaap2kTHgw==} - engines: {node: '>= 14'} - - '@sentry/cli-darwin@2.32.1': - resolution: {integrity: sha512-z/lEwANTYPCzbWTZ2+eeeNYxRLllC8knd0h+vtAKlhmGw/fyc/N39cznIFyFu+dLJ6tTdjOWOeikHtKuS/7onw==} - engines: {node: '>=10'} - os: [darwin] - - '@sentry/cli-linux-arm64@2.32.1': - resolution: {integrity: sha512-hsGqHYuecUl1Yhq4MhiRejfh1gNlmhyNPcQEoO/DDRBnGnJyEAdiDpKXJcc2e/lT9k40B55Ob2CP1SeY040T2w==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux, freebsd] - - '@sentry/cli-linux-arm@2.32.1': - resolution: {integrity: sha512-m0lHkn+o4YKBq8KptGZvpT64FAwSl9mYvHZO9/ChnEGIJ/WyJwiN1X1r9JHVaW4iT5lD0Y5FAyq3JLkk0m0XHg==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux, freebsd] - - '@sentry/cli-linux-i686@2.32.1': - resolution: {integrity: sha512-SuMLN1/ceFd3Q/B0DVyh5igjetTAF423txiABAHASenEev0lG0vZkRDXFclfgDtDUKRPmOXW7VDMirM3yZWQHQ==} - engines: {node: '>=10'} - cpu: [x86, ia32] - os: [linux, freebsd] - - '@sentry/cli-linux-x64@2.32.1': - resolution: {integrity: sha512-x4FGd6xgvFddz8V/dh6jii4wy9qjWyvYLBTz8Fhi9rIP+b8wQ3oxwHIdzntareetZP7C1ggx+hZheiYocNYVwA==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux, freebsd] - - '@sentry/cli-win32-i686@2.32.1': - resolution: {integrity: sha512-i6aZma9mFzR+hqMY5VliQZEX6ypP/zUjPK0VtIMYWs5cC6PsQLRmuoeJmy3Z7d4nlh0CdK5NPC813Ej6RY6/vg==} - engines: {node: '>=10'} - cpu: [x86, ia32] - os: [win32] - - '@sentry/cli-win32-x64@2.32.1': - resolution: {integrity: sha512-B58w/lRHLb4MUSjJNfMMw2cQykfimDCMLMmeK+1EiT2RmSeNQliwhhBxYcKk82a8kszH6zg3wT2vCea7LyPUyA==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@sentry/cli@2.32.1': - resolution: {integrity: sha512-MWkbkzZfnlE7s2pPbg4VozRSAeMlIObfZlTIou9ye6XnPt6ZmmxCLOuOgSKMv4sXg6aeqKNzMNiadThxCWyvPg==} - engines: {node: '>= 10'} - hasBin: true - - '@sentry/core@8.19.0': - resolution: {integrity: sha512-MrgjsZCEjOJgQjIznnDSrLEy7qL+4LVpNieAvr49cV1rzBNSwGmWRnt/puVaPsLyCUgupVx/43BPUHB/HtKNUw==} - engines: {node: '>=14.18'} - - '@sentry/nextjs@8.19.0': - resolution: {integrity: sha512-WafL2zXKEp1jQJ0bC8H15zEUGT4m6bDiCwlaP8xAI3dz5E1e6f29OFlStvgzU3Tpx/Wi6qNTs5AGuwV3wK9qdg==} - engines: {node: '>=14.18'} - peerDependencies: - next: ^13.2.0 || ^14.0 || ^15.0.0-rc.0 - webpack: '>= 5.0.0' - peerDependenciesMeta: - webpack: - optional: true - - '@sentry/node@8.19.0': - resolution: {integrity: sha512-r7AeKxfB9eE/UW0NZT3AMh+hNA65NFEwtsMYO6iI52FPLFZh0DLOvzVOeNsmsJqPpyetooUGTtUYpBdinZldWA==} - engines: {node: '>=14.18'} - - '@sentry/opentelemetry@8.19.0': - resolution: {integrity: sha512-L1aSxO/aJJ7D3pIlTaVOgbiZJAnUHXezobTc8j5pqFCQACjxnLMSDrt53QfFV52CcjbliDWCYe4IB8umu4DgpA==} - engines: {node: '>=14.18'} - peerDependencies: - '@opentelemetry/api': ^1.9.0 - '@opentelemetry/core': ^1.25.1 - '@opentelemetry/instrumentation': ^0.52.1 - '@opentelemetry/sdk-trace-base': ^1.25.1 - '@opentelemetry/semantic-conventions': ^1.25.1 - - '@sentry/react@8.19.0': - resolution: {integrity: sha512-MzuMy4AEdSuIrBEyp3W7c4+v215+2MiU9ba7Y0KBKcC/Nrf1cGfRFRbjl9OYm/JIuxkaop7kgYs6sPMrVJVlrQ==} - engines: {node: '>=14.18'} - peerDependencies: - react: ^16.14.0 || 17.x || 18.x || 19.x - - '@sentry/types@8.19.0': - resolution: {integrity: sha512-52C8X5V7mK2KIxMJt8MV5TxXAFHqrQR1RKm1oPTwKVWm8hKr1ZYJXINymNrWvpAc3oVIKLC/sa9WFYgXQh+YlA==} - engines: {node: '>=14.18'} - - '@sentry/utils@8.19.0': - resolution: {integrity: sha512-8dWJJKaUN6Hf92Oxw2TBmHchGua2W3ZmonrZTTwLvl06jcAigbiQD0MGuF5ytZP8PHx860orV+SbTGKFzfU3Pg==} - engines: {node: '>=14.18'} - - '@sentry/vercel-edge@8.19.0': - resolution: {integrity: sha512-I1G19SGWKcwUo1VT57xD/c/ZBnl8qkz6V+6j+vCbms4i0GTFw3eASnUIAOd25kc59/Wih2tUVj5mfV6aX5/DFg==} - engines: {node: '>=14.18'} - - '@sentry/webpack-plugin@2.20.1': - resolution: {integrity: sha512-U6LzoE09Ndt0OCWROoRaZqqIHGxyMRdKpBhbqoBqyyfVwXN/zGW3I/cWZ1e8rreiKFj+2+c7+X0kOS+NGMTUrg==} - engines: {node: '>= 14'} - peerDependencies: - webpack: '>=4.40.0' - - '@simplewebauthn/browser@10.0.0': - resolution: {integrity: sha512-hG0JMZD+LiLUbpQcAjS4d+t4gbprE/dLYop/CkE01ugU/9sKXflxV5s0DRjdz3uNMFecatRfb4ZLG3XvF8m5zg==} - - '@simplewebauthn/server@10.0.0': - resolution: {integrity: sha512-w5eIoiF7ltg1sgggjY5Tx654j+DBuyEx2B3869jjmPp0xl2Z4BUP4kJ3yJ6DnZIv+ZYYntT3E6nZXNjPOQbrtw==} - engines: {node: '>=20.0.0'} - - '@simplewebauthn/types@10.0.0': - resolution: {integrity: sha512-SFXke7xkgPRowY2E+8djKbdEznTVnD5R6GO7GPTthpHrokLvNKw8C3lFZypTxLI7KkCfGPfhtqB3d7OVGGa9jQ==} - - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@sindresorhus/slugify@2.2.1': - resolution: {integrity: sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==} - engines: {node: '>=12'} - - '@sindresorhus/transliterate@1.6.0': - resolution: {integrity: sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==} - engines: {node: '>=12'} - - '@smithy/abort-controller@3.0.0': - resolution: {integrity: sha512-p6GlFGBt9K4MYLu72YuJ523NVR4A8oHlC5M2JO6OmQqN8kAc/uh1JqLE+FizTokrSJGg0CSvC+BrsmGzKtsZKA==} - engines: {node: '>=16.0.0'} - - '@smithy/chunked-blob-reader-native@3.0.0': - resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} - - '@smithy/chunked-blob-reader@3.0.0': - resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} - - '@smithy/config-resolver@3.0.0': - resolution: {integrity: sha512-2GzOfADwYLQugYkKQhIyZyQlM05K+tMKvRnc6eFfZcpJGRfKoMUMYdPlBKmqHwQFXQKBrGV6cxL9oymWgDzvFw==} - engines: {node: '>=16.0.0'} - - '@smithy/core@2.0.1': - resolution: {integrity: sha512-rcMkjvwxH/bER+oZUPR0yTA0ELD6m3A+d92+CFkdF6HJFCBB1bXo7P5pm21L66XwTN01B6bUhSCQ7cymWRD8zg==} - engines: {node: '>=16.0.0'} - - '@smithy/credential-provider-imds@3.0.0': - resolution: {integrity: sha512-lfmBiFQcA3FsDAPxNfY0L7CawcWtbyWsBOHo34nF095728JLkBX4Y9q/VPPE2r7fqMVK+drmDigqE2/SSQeVRA==} - engines: {node: '>=16.0.0'} - - '@smithy/eventstream-codec@3.0.0': - resolution: {integrity: sha512-PUtyEA0Oik50SaEFCZ0WPVtF9tz/teze2fDptW6WRXl+RrEenH8UbEjudOz8iakiMl3lE3lCVqYf2Y+znL8QFQ==} - - '@smithy/eventstream-serde-browser@3.0.0': - resolution: {integrity: sha512-NB7AFiPN4NxP/YCAnrvYR18z2/ZsiHiF7VtG30gshO9GbFrIb1rC8ep4NGpJSWrz6P64uhPXeo4M0UsCLnZKqw==} - engines: {node: '>=16.0.0'} - - '@smithy/eventstream-serde-config-resolver@3.0.0': - resolution: {integrity: sha512-RUQG3vQ3LX7peqqHAbmayhgrF5aTilPnazinaSGF1P0+tgM3vvIRWPHmlLIz2qFqB9LqFIxditxc8O2Z6psrRw==} - engines: {node: '>=16.0.0'} - - '@smithy/eventstream-serde-node@3.0.0': - resolution: {integrity: sha512-baRPdMBDMBExZXIUAoPGm/hntixjt/VFpU6+VmCyiYJYzRHRxoaI1MN+5XE+hIS8AJ2GCHLMFEIOLzq9xx1EgQ==} - engines: {node: '>=16.0.0'} - - '@smithy/eventstream-serde-universal@3.0.0': - resolution: {integrity: sha512-HNFfShmotWGeAoW4ujP8meV9BZavcpmerDbPIjkJbxKbN8RsUcpRQ/2OyIxWNxXNH2GWCAxuSB7ynmIGJlQ3Dw==} - engines: {node: '>=16.0.0'} - - '@smithy/fetch-http-handler@3.0.1': - resolution: {integrity: sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==} - - '@smithy/hash-blob-browser@3.0.0': - resolution: {integrity: sha512-/Wbpdg+bwJvW7lxR/zpWAc1/x/YkcqguuF2bAzkJrvXriZu1vm8r+PUdE4syiVwQg7PPR2dXpi3CLBb9qRDaVQ==} - - '@smithy/hash-node@3.0.0': - resolution: {integrity: sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw==} - engines: {node: '>=16.0.0'} - - '@smithy/hash-stream-node@3.0.0': - resolution: {integrity: sha512-J0i7de+EgXDEGITD4fxzmMX8CyCNETTIRXlxjMiNUvvu76Xn3GJ31wQR85ynlPk2wI1lqoknAFJaD1fiNDlbIA==} - engines: {node: '>=16.0.0'} - - '@smithy/invalid-dependency@3.0.0': - resolution: {integrity: sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g==} - - '@smithy/is-array-buffer@3.0.0': - resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} - engines: {node: '>=16.0.0'} - - '@smithy/md5-js@3.0.0': - resolution: {integrity: sha512-Tm0vrrVzjlD+6RCQTx7D3Ls58S3FUH1ZCtU1MIh/qQmaOo1H9lMN2as6CikcEwgattnA9SURSdoJJ27xMcEfMA==} - - '@smithy/middleware-content-length@3.0.0': - resolution: {integrity: sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg==} - engines: {node: '>=16.0.0'} - - '@smithy/middleware-endpoint@3.0.0': - resolution: {integrity: sha512-aXOAWztw/5qAfp0NcA2OWpv6ZI/E+Dh9mByif7i91D/0iyYNUcKvskmXiowKESFkuZ7PIMd3VOR4fTibZDs2OQ==} - engines: {node: '>=16.0.0'} - - '@smithy/middleware-retry@3.0.1': - resolution: {integrity: sha512-hBhSEuL841FhJBK/19WpaGk5YWSzFk/P2UaVjANGKRv3eYNO8Y1lANWgqnuPWjOyCEWMPr58vELFDWpxvRKANw==} - engines: {node: '>=16.0.0'} - - '@smithy/middleware-serde@3.0.0': - resolution: {integrity: sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w==} - engines: {node: '>=16.0.0'} - - '@smithy/middleware-stack@3.0.0': - resolution: {integrity: sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q==} - engines: {node: '>=16.0.0'} - - '@smithy/node-config-provider@3.0.0': - resolution: {integrity: sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==} - engines: {node: '>=16.0.0'} - - '@smithy/node-http-handler@3.0.0': - resolution: {integrity: sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==} - engines: {node: '>=16.0.0'} - - '@smithy/property-provider@3.0.0': - resolution: {integrity: sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==} - engines: {node: '>=16.0.0'} - - '@smithy/protocol-http@4.0.0': - resolution: {integrity: sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==} - engines: {node: '>=16.0.0'} - - '@smithy/querystring-builder@3.0.0': - resolution: {integrity: sha512-bW8Fi0NzyfkE0TmQphDXr1AmBDbK01cA4C1Z7ggwMAU5RDz5AAv/KmoRwzQAS0kxXNf/D2ALTEgwK0U2c4LtRg==} - engines: {node: '>=16.0.0'} - - '@smithy/querystring-parser@3.0.0': - resolution: {integrity: sha512-UzHwthk0UEccV4dHzPySnBy34AWw3V9lIqUTxmozQ+wPDAO9csCWMfOLe7V9A2agNYy7xE+Pb0S6K/J23JSzfQ==} - engines: {node: '>=16.0.0'} - - '@smithy/service-error-classification@3.0.0': - resolution: {integrity: sha512-3BsBtOUt2Gsnc3X23ew+r2M71WwtpHfEDGhHYHSDg6q1t8FrWh15jT25DLajFV1H+PpxAJ6gqe9yYeRUsmSdFA==} - engines: {node: '>=16.0.0'} - - '@smithy/shared-ini-file-loader@3.0.0': - resolution: {integrity: sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==} - engines: {node: '>=16.0.0'} - - '@smithy/signature-v4@3.0.0': - resolution: {integrity: sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA==} - engines: {node: '>=16.0.0'} - - '@smithy/smithy-client@3.0.1': - resolution: {integrity: sha512-KAiFY4Y4jdHxR+4zerH/VBhaFKM8pbaVmJZ/CWJRwtM/CmwzTfXfvYwf6GoUwiHepdv+lwiOXCuOl6UBDUEINw==} - engines: {node: '>=16.0.0'} - - '@smithy/types@3.0.0': - resolution: {integrity: sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==} - engines: {node: '>=16.0.0'} - - '@smithy/url-parser@3.0.0': - resolution: {integrity: sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw==} - - '@smithy/util-base64@3.0.0': - resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} - engines: {node: '>=16.0.0'} - - '@smithy/util-body-length-browser@3.0.0': - resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} - - '@smithy/util-body-length-node@3.0.0': - resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} - engines: {node: '>=16.0.0'} - - '@smithy/util-buffer-from@3.0.0': - resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} - engines: {node: '>=16.0.0'} - - '@smithy/util-config-provider@3.0.0': - resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} - engines: {node: '>=16.0.0'} - - '@smithy/util-defaults-mode-browser@3.0.1': - resolution: {integrity: sha512-nW5kEzdJn1Bn5TF+gOPHh2rcPli8JU9vSSXLbfg7uPnfR1TMRQqs9zlYRhIb87NeSxIbpdXOI94tvXSy+fvDYg==} - engines: {node: '>= 10.0.0'} - - '@smithy/util-defaults-mode-node@3.0.1': - resolution: {integrity: sha512-TFk+Qb+elLc/MOhtSp+50fstyfZ6avQbgH2d96xUBpeScu+Al9elxv+UFAjaTHe0HQe5n+wem8ZLpXvU8lwV6Q==} - engines: {node: '>= 10.0.0'} - - '@smithy/util-endpoints@2.0.0': - resolution: {integrity: sha512-+exaXzEY3DNt2qtA2OtRNSDlVrE4p32j1JSsQkzA5AdP0YtJNjkYbYhJxkFmPYcjI1abuwopOZCwUmv682QkiQ==} - engines: {node: '>=16.0.0'} - - '@smithy/util-hex-encoding@3.0.0': - resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} - engines: {node: '>=16.0.0'} - - '@smithy/util-middleware@3.0.0': - resolution: {integrity: sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ==} - engines: {node: '>=16.0.0'} - - '@smithy/util-retry@3.0.0': - resolution: {integrity: sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g==} - engines: {node: '>=16.0.0'} - - '@smithy/util-stream@3.0.1': - resolution: {integrity: sha512-7F7VNNhAsfMRA8I986YdOY5fE0/T1/ZjFF6OLsqkvQVNP3vZ/szYDfGCyphb7ioA09r32K/0qbSFfNFU68aSzA==} - engines: {node: '>=16.0.0'} - - '@smithy/util-uri-escape@3.0.0': - resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} - engines: {node: '>=16.0.0'} - - '@smithy/util-utf8@3.0.0': - resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} - engines: {node: '>=16.0.0'} - - '@smithy/util-waiter@3.0.0': - resolution: {integrity: sha512-+fEXJxGDLCoqRKVSmo0auGxaqbiCo+8oph+4auefYjaNxjOLKSY2MxVQfRzo65PaZv4fr+5lWg+au7vSuJJ/zw==} - engines: {node: '>=16.0.0'} - - '@snyk/github-codeowners@1.1.0': - resolution: {integrity: sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw==} - engines: {node: '>=8.10'} - hasBin: true - - '@socket.io/component-emitter@3.1.2': - resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - - '@storybook/channels@8.1.11': - resolution: {integrity: sha512-fu5FTqo6duOqtJFa6gFzKbiSLJoia+8Tibn3xFfB6BeifWrH81hc+AZq0lTmHo5qax2G5t8ZN8JooHjMw6k2RA==} - - '@storybook/client-logger@8.1.11': - resolution: {integrity: sha512-DVMh2usz3yYmlqCLCiCKy5fT8/UR9aTh+gSqwyNFkGZrIM4otC5A8eMXajXifzotQLT5SaOEnM3WzHwmpvMIEA==} - - '@storybook/core-events@8.1.11': - resolution: {integrity: sha512-vXaNe2KEW9BGlLrg0lzmf5cJ0xt+suPjWmEODH5JqBbrdZ67X6ApA2nb6WcxDQhykesWCuFN5gp1l+JuDOBi7A==} - - '@storybook/csf@0.1.9': - resolution: {integrity: sha512-JlZ6v/iFn+iKohKGpYXnMeNeTiiAMeFoDhYnPLIC8GnyyIWqEI9wJYrOK9i9rxlJ8NZAH/ojGC/u/xVC41qSgQ==} - - '@storybook/global@5.0.0': - resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - - '@storybook/instrumenter@8.1.11': - resolution: {integrity: sha512-r/U9hcqnodNMHuzRt1g56mWrVsDazR85Djz64M3KOwBhrTj5d46DF4/EE80w/5zR5JOrT7p8WmjJRowiVteOCQ==} - - '@storybook/preview-api@8.1.11': - resolution: {integrity: sha512-8ZChmFV56GKppCJ0hnBd/kNTfGn2gWVq1242kuet13pbJtBpvOhyq4W01e/Yo14tAPXvgz8dSnMvWLbJx4QfhQ==} - - '@storybook/test@8.1.11': - resolution: {integrity: sha512-k+V3HemF2/I8fkRxRqM8uH8ULrpBSAAdBOtWSHWLvHguVcb2YA4g4kKo6tXBB9256QfyDW4ZiaAj0/9TMxmJPQ==} - - '@storybook/types@8.1.11': - resolution: {integrity: sha512-k9N5iRuY2+t7lVRL6xeu6diNsxO3YI3lS4Juv3RZ2K4QsE/b3yG5ElfJB8DjHDSHwRH4ORyrU71KkOCUVfvtnw==} - - '@stripe/stripe-js@4.1.0': - resolution: {integrity: sha512-HhstGRUz/4JdbZpb26OcOf8Qb/cFR02arvHvgz4sPFLSnI6ZNHC53Jc6JP/FGNwxtrF719YyUnK0gGy4oyhucQ==} - engines: {node: '>=12.16'} - - '@swc/core-darwin-arm64@1.3.101': - resolution: {integrity: sha512-mNFK+uHNPRXSnfTOG34zJOeMl2waM4hF4a2NY7dkMXrPqw9CoJn4MwTXJcyMiSz1/BnNjjTCHF3Yhj0jPxmkzQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.3.101': - resolution: {integrity: sha512-B085j8XOx73Fg15KsHvzYWG262bRweGr3JooO1aW5ec5pYbz5Ew9VS5JKYS03w2UBSxf2maWdbPz2UFAxg0whw==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.3.101': - resolution: {integrity: sha512-9xLKRb6zSzRGPqdz52Hy5GuB1lSjmLqa0lST6MTFads3apmx4Vgs8Y5NuGhx/h2I8QM4jXdLbpqQlifpzTlSSw==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.3.101': - resolution: {integrity: sha512-oE+r1lo7g/vs96Weh2R5l971dt+ZLuhaUX+n3BfDdPxNHfObXgKMjO7E+QS5RbGjv/AwiPCxQmbdCp/xN5ICJA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.3.101': - resolution: {integrity: sha512-OGjYG3H4BMOTnJWJyBIovCez6KiHF30zMIu4+lGJTCrxRI2fAjGLml3PEXj8tC3FMcud7U2WUn6TdG0/te2k6g==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.3.101': - resolution: {integrity: sha512-/kBMcoF12PRO/lwa8Z7w4YyiKDcXQEiLvM+S3G9EvkoKYGgkkz4Q6PSNhF5rwg/E3+Hq5/9D2R+6nrkF287ihg==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.3.101': - resolution: {integrity: sha512-kDN8lm4Eew0u1p+h1l3JzoeGgZPQ05qDE0czngnjmfpsH2sOZxVj1hdiCwS5lArpy7ktaLu5JdRnx70MkUzhXw==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.3.101': - resolution: {integrity: sha512-9Wn8TTLWwJKw63K/S+jjrZb9yoJfJwCE2RV5vPCCWmlMf3U1AXj5XuWOLUX+Rp2sGKau7wZKsvywhheWm+qndQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.3.101': - resolution: {integrity: sha512-onO5KvICRVlu2xmr4//V2je9O2XgS1SGKpbX206KmmjcJhXN5EYLSxW9qgg+kgV5mip+sKTHTAu7IkzkAtElYA==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.3.101': - resolution: {integrity: sha512-T3GeJtNQV00YmiVw/88/nxJ/H43CJvFnpvBHCVn17xbahiVUOPOduh3rc9LgAkKiNt/aV8vU3OJR+6PhfMR7UQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.3.101': - resolution: {integrity: sha512-w5aQ9qYsd/IYmXADAnkXPGDMTqkQalIi+kfFf/MHRKTpaOL7DHjMXwPp/n8hJ0qNjRvchzmPtOqtPBiER50d8A==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': ^0.5.0 - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/helpers@0.4.14': - resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} - - '@swc/helpers@0.4.36': - resolution: {integrity: sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==} - - '@swc/helpers@0.5.11': - resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==} - - '@swc/helpers@0.5.2': - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} - - '@swc/helpers@0.5.5': - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} - - '@swc/types@0.1.12': - resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} - - '@t3-oss/env-core@0.10.1': - resolution: {integrity: sha512-GcKZiCfWks5CTxhezn9k5zWX3sMDIYf6Kaxy2Gx9YEQftFcz8hDRN56hcbylyAO3t4jQnQ5ifLawINsNgCDpOg==} - peerDependencies: - typescript: '>=5.0.0' - zod: ^3.0.0 - peerDependenciesMeta: - typescript: - optional: true - - '@t3-oss/env-nextjs@0.10.1': - resolution: {integrity: sha512-iy2qqJLnFh1RjEWno2ZeyTu0ufomkXruUsOZludzDIroUabVvHsrSjtkHqwHp1/pgPUzN3yBRHMILW162X7x2Q==} - peerDependencies: - typescript: '>=5.0.0' - zod: ^3.0.0 - peerDependenciesMeta: - typescript: - optional: true - - '@tailwindcss/typography@0.5.13': - resolution: {integrity: sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' - - '@tanstack/query-core@4.36.1': - resolution: {integrity: sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==} - - '@tanstack/react-query@4.36.1': - resolution: {integrity: sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - - '@tanstack/react-table@8.20.1': - resolution: {integrity: sha512-PJK+07qbengObe5l7c8vCdtefXm8cyR4i078acWrHbdm8JKw1ES7YpmOtVt9ALUVEEFAHscdVpGRhRgikgFMbQ==} - engines: {node: '>=12'} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@tanstack/react-virtual@3.5.1': - resolution: {integrity: sha512-jIsuhfgy8GqA67PdWqg73ZB2LFE+HD9hjWL1L6ifEIZVyZVAKpYmgUG4WsKQ005aEyImJmbuimPiEvc57IY0Aw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@tanstack/table-core@8.20.1': - resolution: {integrity: sha512-5Ly5TIRHnWH7vSDell9B/OVyV380qqIJVg7H7R7jU4fPEmOD4smqAX7VRflpYI09srWR8aj5OLD2Ccs1pI5mTg==} - engines: {node: '>=12'} - - '@tanstack/virtual-core@3.5.1': - resolution: {integrity: sha512-046+AUSiDru/V9pajE1du8WayvBKeCvJ2NmKPy/mR8/SbKKrqmSbj7LJBfXE+nSq4f5TBXvnCzu0kcYebI9WdQ==} - - '@tanstack/virtual-core@3.7.0': - resolution: {integrity: sha512-p0CWuqn+n8iZmsL7/l0Xg7kbyIKnHNqkEJkMDOkg4x3Ni3LohszmnJY8FPhTgG7Ad9ZFGcdKmn1R1mKUGEh9Xg==} - - '@tanstack/vue-virtual@3.7.0': - resolution: {integrity: sha512-RkSrajvJpV1RdJKgZnPgzyzVVx76QjPAu+spgdAms+SZRcSbYMUKlcjusnHjhszck5ngHXSXbSBp45ycF1nlDw==} - peerDependencies: - vue: ^2.7.0 || ^3.0.0 - - '@testing-library/dom@10.1.0': - resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} - engines: {node: '>=18'} - - '@testing-library/jest-dom@6.4.5': - resolution: {integrity: sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - peerDependencies: - '@jest/globals': '>= 28' - '@types/bun': latest - '@types/jest': '>= 28' - jest: '>= 28' - vitest: '>= 0.32' - peerDependenciesMeta: - '@jest/globals': - optional: true - '@types/bun': - optional: true - '@types/jest': - optional: true - jest: - optional: true - vitest: - optional: true - - '@testing-library/user-event@14.5.2': - resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' - - '@tiptap/core@2.4.0': - resolution: {integrity: sha512-YJSahk8pkxpCs8SflCZfTnJpE7IPyUWIylfgXM2DefjRQa5DZ+c6sNY0s/zbxKYFQ6AuHVX40r9pCfcqHChGxQ==} - peerDependencies: - '@tiptap/pm': ^2.0.0 - - '@tiptap/extension-bold@2.4.0': - resolution: {integrity: sha512-csnW6hMDEHoRfxcPRLSqeJn+j35Lgtt1YRiOwn7DlS66sAECGRuoGfCvQSPij0TCDp4VCR9if5Sf8EymhnQumQ==} - peerDependencies: - '@tiptap/core': ^2.0.0 - - '@tiptap/extension-bubble-menu@2.4.0': - resolution: {integrity: sha512-s99HmttUtpW3rScWq8rqk4+CGCwergNZbHLTkF6Rp6TSboMwfp+rwL5Q/JkcAG9KGLso1vGyXKbt1xHOvm8zMw==} - peerDependencies: - '@tiptap/core': ^2.0.0 - '@tiptap/pm': ^2.0.0 - - '@tiptap/extension-code@2.4.0': - resolution: {integrity: sha512-wjhBukuiyJMq4cTcK3RBTzUPV24k5n1eEPlpmzku6ThwwkMdwynnMGMAmSF3fErh3AOyOUPoTTjgMYN2d10SJA==} - peerDependencies: - '@tiptap/core': ^2.0.0 - - '@tiptap/extension-collaboration-cursor@2.4.0': - resolution: {integrity: sha512-BTVy9FCTGdHxYieJ4lteVLrRY5qAPQyfunhMwakVf1NT3iU9quE6CaeaIwt6wEDJPMPPKzOHg1/ltSz9nIDe4A==} - peerDependencies: - '@tiptap/core': ^2.0.0 - y-prosemirror: ^1.2.5 - - '@tiptap/extension-collaboration@2.4.0': - resolution: {integrity: sha512-achU+GU9tqxn3zsU61CbwWrCausf0U23MJIpo8vnywOIx6E955by6okHEHoUazLIGVFXVc5DBzBP7bf+Snzk0Q==} - peerDependencies: - '@tiptap/core': ^2.0.0 - '@tiptap/pm': ^2.0.0 - y-prosemirror: ^1.2.5 - - '@tiptap/extension-dropcursor@2.4.0': - resolution: {integrity: sha512-c46HoG2PEEpSZv5rmS5UX/lJ6/kP1iVO0Ax+6JrNfLEIiDULUoi20NqdjolEa38La2VhWvs+o20OviiTOKEE9g==} - peerDependencies: - '@tiptap/core': ^2.0.0 - '@tiptap/pm': ^2.0.0 - - '@tiptap/extension-floating-menu@2.4.0': - resolution: {integrity: sha512-vLb9v+htbHhXyty0oaXjT3VC8St4xuGSHWUB9GuAJAQ+NajIO6rBPbLUmm9qM0Eh2zico5mpSD1Qtn5FM6xYzg==} - peerDependencies: - '@tiptap/core': ^2.0.0 - '@tiptap/pm': ^2.0.0 - - '@tiptap/extension-gapcursor@2.4.0': - resolution: {integrity: sha512-F4y/0J2lseohkFUw9P2OpKhrJ6dHz69ZScABUvcHxjznJLd6+0Zt7014Lw5PA8/m2d/w0fX8LZQ88pZr4quZPQ==} - peerDependencies: - '@tiptap/core': ^2.0.0 - '@tiptap/pm': ^2.0.0 - - '@tiptap/extension-hard-break@2.4.0': - resolution: {integrity: sha512-3+Z6zxevtHza5IsDBZ4lZqvNR3Kvdqwxq/QKCKu9UhJN1DUjsg/l1Jn2NilSQ3NYkBYh2yJjT8CMo9pQIu776g==} - peerDependencies: - '@tiptap/core': ^2.0.0 - - '@tiptap/extension-history@2.4.0': - resolution: {integrity: sha512-gr5qsKAXEVGr1Lyk1598F7drTaEtAxqZiuuSwTCzZzkiwgEQsWMWTWc9F8FlneCEaqe1aIYg6WKWlmYPaFwr0w==} - peerDependencies: - '@tiptap/core': ^2.0.0 - '@tiptap/pm': ^2.0.0 - - '@tiptap/extension-horizontal-rule@2.4.0': - resolution: {integrity: sha512-yDgxy+YxagcEsBbdWvbQiXYxsv3noS1VTuGwc9G7ZK9xPmBHJ5y0agOkB7HskwsZvJHoaSqNRsh7oZTkf0VR3g==} - peerDependencies: - '@tiptap/core': ^2.0.0 - '@tiptap/pm': ^2.0.0 - - '@tiptap/extension-italic@2.4.0': - resolution: {integrity: sha512-aaW/L9q+KNHHK+X73MPloHeIsT191n3VLd3xm6uUcFDnUNvzYJ/q65/1ZicdtCaOLvTutxdrEvhbkrVREX6a8g==} - peerDependencies: - '@tiptap/core': ^2.0.0 - - '@tiptap/extension-link@2.4.0': - resolution: {integrity: sha512-r3PjT0bjSKAorHAEBPA0icSMOlqALbxVlWU9vAc+Q3ndzt7ht0CTPNewzFF9kjzARABVt1cblXP/2+c0qGzcsg==} - peerDependencies: - '@tiptap/core': ^2.0.0 - '@tiptap/pm': ^2.0.0 - - '@tiptap/extension-paragraph@2.4.0': - resolution: {integrity: sha512-+yse0Ow67IRwcACd9K/CzBcxlpr9OFnmf0x9uqpaWt1eHck1sJnti6jrw5DVVkyEBHDh/cnkkV49gvctT/NyCw==} - peerDependencies: - '@tiptap/core': ^2.0.0 - - '@tiptap/extension-strike@2.4.0': - resolution: {integrity: sha512-pE1uN/fQPOMS3i+zxPYMmPmI3keubnR6ivwM+KdXWOMnBiHl9N4cNpJgq1n2eUUGKLurC2qrQHpnVyGAwBS6Vg==} - peerDependencies: - '@tiptap/core': ^2.0.0 - - '@tiptap/extension-table-cell@2.4.0': - resolution: {integrity: sha512-zylResMWLvV17Z6+GEDjvvl+YpJqJhNMyJsZPZNx/72OcNCDN3p2d6RGFwhpnCpdzZDD6LGaIgWaTj9oeg53SA==} - peerDependencies: - '@tiptap/core': ^2.0.0 - - '@tiptap/extension-table-header@2.4.0': - resolution: {integrity: sha512-FZCOyJHSFsMTCfBh49J1DlwgpUIM5Ivpr57Za8FVvUkk8RKUIOKpNsZqxE+Wrw+2Bvy5H4X7Azb588x0NDqfOQ==} - peerDependencies: - '@tiptap/core': ^2.0.0 - - '@tiptap/extension-table-row@2.4.0': - resolution: {integrity: sha512-K4FDI4YzyLWZbhIZYYL15uqs6M3QsPZGTpTdkSaxcKMLholcskDSHhJmySxnrjI0+JNAtyIiqlWBfA1/9Zyhng==} - peerDependencies: - '@tiptap/core': ^2.0.0 - - '@tiptap/extension-text@2.4.0': - resolution: {integrity: sha512-LV0bvE+VowE8IgLca7pM8ll7quNH+AgEHRbSrsI3SHKDCYB9gTHMjWaAkgkUVaO1u0IfCrjnCLym/PqFKa+vvg==} - peerDependencies: - '@tiptap/core': ^2.0.0 - - '@tiptap/extension-underline@2.4.0': - resolution: {integrity: sha512-guWojb7JxUwLz4OKzwNExJwOkhZjgw/ttkXCMBT0PVe55k998MMYe1nvN0m2SeTW9IxurEPtScH4kYJ0XuSm8Q==} - peerDependencies: - '@tiptap/core': ^2.0.0 - - '@tiptap/pm@2.4.0': - resolution: {integrity: sha512-B1HMEqGS4MzIVXnpgRZDLm30mxDWj51LkBT/if1XD+hj5gm8B9Q0c84bhvODX6KIs+c6z+zsY9VkVu8w9Yfgxg==} - - '@tiptap/react@2.4.0': - resolution: {integrity: sha512-baxnIr6Dy+5iGagOEIKFeHzdl1ZRa6Cg+SJ3GDL/BVLpO6KiCM3Mm5ymB726UKP1w7icrBiQD2fGY3Bx8KaiSA==} - peerDependencies: - '@tiptap/core': ^2.0.0 - '@tiptap/pm': ^2.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - - '@tremor/react@3.17.4': - resolution: {integrity: sha512-teItTLbZglXJwakW8XYtRfIXZvp1Y6HKsaD9MC8cJqXG3vf1n6D9aPz3OKyWmDkBYE1Yjo/PTmEHKQIwN+2suQ==} - peerDependencies: - react: ^18.0.0 - react-dom: '>=16.6.0' - - '@trpc/client@10.45.2': - resolution: {integrity: sha512-ykALM5kYWTLn1zYuUOZ2cPWlVfrXhc18HzBDyRhoPYN0jey4iQHEFSEowfnhg1RvYnrAVjNBgHNeSAXjrDbGwg==} - peerDependencies: - '@trpc/server': 10.45.2 - - '@trpc/next@10.45.2': - resolution: {integrity: sha512-RSORmfC+/nXdmRY1pQ0AalsVgSzwNAFbZLYHiTvPM5QQ8wmMEHilseCYMXpu0se/TbPt9zVR6Ka2d7O6zxKkXg==} - peerDependencies: - '@tanstack/react-query': ^4.18.0 - '@trpc/client': 10.45.2 - '@trpc/react-query': 10.45.2 - '@trpc/server': 10.45.2 - next: '*' - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@trpc/react-query@10.45.2': - resolution: {integrity: sha512-BAqb9bGZIscroradlNx+Cc9522R+idY3BOSf5z0jHUtkxdMbjeGKxSSMxxu7JzoLqSIEC+LVzL3VvF8sdDWaZQ==} - peerDependencies: - '@tanstack/react-query': ^4.18.0 - '@trpc/client': 10.45.2 - '@trpc/server': 10.45.2 - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@trpc/server@10.45.2': - resolution: {integrity: sha512-wOrSThNNE4HUnuhJG6PfDRp4L2009KDVxsd+2VYH8ro6o/7/jwYZ8Uu5j+VaW+mOmc8EHerHzGcdbGNQSAUPgg==} - - '@types/aria-query@5.0.4': - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - - '@types/bcryptjs@2.4.6': - resolution: {integrity: sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==} - - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - - '@types/connect@3.4.36': - resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/cookie@0.4.1': - resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - - '@types/cors@2.8.17': - resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} - - '@types/d3-array@3.2.1': - resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} - - '@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.0': - resolution: {integrity: sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==} - - '@types/d3-scale@4.0.8': - resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==} - - '@types/d3-shape@3.1.6': - resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==} - - '@types/d3-time@3.0.3': - resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} - - '@types/d3-timer@3.0.2': - resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@8.56.10': - resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - - '@types/express-serve-static-core@4.19.3': - resolution: {integrity: sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==} - - '@types/express@4.17.21': - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - - '@types/extend@3.0.4': - resolution: {integrity: sha512-ArMouDUTJEz1SQRpFsT2rIw7DeqICFv5aaVzLSIYMYQSLcwcGOfT3VyglQs/p7K3F7fT4zxr0NWxYZIdifD6dA==} - - '@types/har-format@1.2.15': - resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==} - - '@types/hast@2.3.10': - resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} - - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - - '@types/inquirer@9.0.7': - resolution: {integrity: sha512-Q0zyBupO6NxGRZut/JdmqYKOnN95Eg5V8Csg3PGKkP+FnvsUZx1jAyK7fztIszxxMuoBA6E3KXWvdZVXIpx60g==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/lodash-es@4.17.12': - resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} - - '@types/lodash@4.17.4': - resolution: {integrity: sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==} - - '@types/mdast@3.0.15': - resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} - - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - - '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - - '@types/mysql@2.15.22': - resolution: {integrity: sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ==} - - '@types/node@20.12.12': - resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} - - '@types/nodemailer@6.4.15': - resolution: {integrity: sha512-0EBJxawVNjPkng1zm2vopRctuWVCxk34JcIlRuXSf54habUWdz1FB7wHDqOqvDa8Mtpt0Q3LTXQkAs2LNyK5jQ==} - - '@types/papaparse@5.3.14': - resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} - - '@types/parse5@6.0.3': - resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} - - '@types/pg-pool@2.0.4': - resolution: {integrity: sha512-qZAvkv1K3QbmHHFYSNRYPkRjOWRLBYrL4B9c+wG0GSVGBw0NtJwPcgx/DSddeDJvRGMHCEQ4VMEVfuJ/0gZ3XQ==} - - '@types/pg@8.6.1': - resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==} - - '@types/prismjs@1.26.4': - resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==} - - '@types/prop-types@15.7.12': - resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - - '@types/qs@6.9.15': - resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} - - '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - - '@types/react-dom@18.3.0': - resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} - - '@types/react@18.2.47': - resolution: {integrity: sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==} - - '@types/react@18.3.3': - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} - - '@types/scheduler@0.23.0': - resolution: {integrity: sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==} - - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} - - '@types/serve-static@1.15.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} - - '@types/shimmer@1.0.5': - resolution: {integrity: sha512-9Hp0ObzwwO57DpLFF0InUjUm/II8GmKAvzbefxQTihCb7KI6yc9yzf0nLc4mVdby5N4DRCgQM2wCup9KTieeww==} - - '@types/through@0.0.33': - resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} - - '@types/ua-parser-js@0.7.39': - resolution: {integrity: sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==} - - '@types/unist@2.0.10': - resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - - '@types/unist@3.0.2': - resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - - '@types/web-bluetooth@0.0.20': - resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} - - '@types/webpack@5.28.5': - resolution: {integrity: sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==} - - '@uiw/codemirror-themes@4.22.2': - resolution: {integrity: sha512-gsLHn6SUuV5iboBvGrM7YimzLFHQmsNlkGIYs3UaVUJTo/A/ZrKoSJNyPziShLRjBXA2UwKdBTIU6VhHyyaChw==} - peerDependencies: - '@codemirror/language': '>=6.0.0' - '@codemirror/state': '>=6.0.0' - '@codemirror/view': '>=6.0.0' - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - '@unhead/dom@1.9.14': - resolution: {integrity: sha512-XZSZ2Wmm1Sv7k9scSFGrarbteSIl3p3I3oOUprKPDboBTvuG5q81Qz8O99NKUGKGJ8BKUkxCqE982eH3S8DKJA==} - - '@unhead/schema@1.9.14': - resolution: {integrity: sha512-60NYSM6QjfK/wx4/QfaYyZ3XnNtwxS9a1oij2abEkGHPmA2/fqBOXeuHtnBo4eD42/Eg+owcS5s3mClPL8AkXw==} - - '@unhead/shared@1.9.14': - resolution: {integrity: sha512-7ZIC7uDV8gp3KHm5JxJ/NXMENQgkh+SCyTcsILSpOhkAGeszMHABrB6vjeZDGM4J9mRUxwyPn24KI2zG/R+XiQ==} - - '@unhead/vue@1.9.14': - resolution: {integrity: sha512-Yc7Qv0ze+iLte4urHiA+ghkF7y+svrawrT+ZrCuGXkZ/eRTF/AY2SKex+rJQJZsP+fKEQ2pGb72IsI5kHFZT3A==} - peerDependencies: - vue: '>=2.7 || >=3' - - '@vitest/expect@1.6.0': - resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} - - '@vitest/runner@1.6.0': - resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} - - '@vitest/snapshot@1.6.0': - resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} - - '@vitest/spy@1.6.0': - resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - - '@vitest/utils@1.6.0': - resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} - - '@vue/compiler-core@3.4.30': - resolution: {integrity: sha512-ZL8y4Xxdh8O6PSwfdZ1IpQ24PjTAieOz3jXb/MDTfDtANcKBMxg1KLm6OX2jofsaQGYfIVzd3BAG22i56/cF1w==} - - '@vue/compiler-dom@3.4.30': - resolution: {integrity: sha512-+16Sd8lYr5j/owCbr9dowcNfrHd+pz+w2/b5Lt26Oz/kB90C9yNbxQ3bYOvt7rI2bxk0nqda39hVcwDFw85c2Q==} - - '@vue/compiler-sfc@3.4.30': - resolution: {integrity: sha512-8vElKklHn/UY8+FgUFlQrYAPbtiSB2zcgeRKW7HkpSRn/JjMRmZvuOtwDx036D1aqKNSTtXkWRfqx53Qb+HmMg==} - - '@vue/compiler-ssr@3.4.30': - resolution: {integrity: sha512-ZJ56YZGXJDd6jky4mmM0rNaNP6kIbQu9LTKZDhcpddGe/3QIalB1WHHmZ6iZfFNyj5mSypTa4+qDJa5VIuxMSg==} - - '@vue/devtools-api@6.6.3': - resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} - - '@vue/reactivity@3.4.30': - resolution: {integrity: sha512-bVJurnCe3LS0JII8PPoAA63Zd2MBzcKrEzwdQl92eHCcxtIbxD2fhNwJpa+KkM3Y/A4T5FUnmdhgKwOf6BfbcA==} - - '@vue/runtime-core@3.4.30': - resolution: {integrity: sha512-qaFEbnNpGz+tlnkaualomogzN8vBLkgzK55uuWjYXbYn039eOBZrWxyXWq/7qh9Bz2FPifZqGjVDl/FXiq9L2g==} - - '@vue/runtime-dom@3.4.30': - resolution: {integrity: sha512-tV6B4YiZRj5QsaJgw2THCy5C1H+2UeywO9tqgWEc21tn85qHEERndHN/CxlyXvSBFrpmlexCIdnqPuR9RM9thw==} - - '@vue/server-renderer@3.4.30': - resolution: {integrity: sha512-TBD3eqR1DeDc0cMrXS/vEs/PWzq1uXxnvjoqQuDGFIEHFIwuDTX/KWAQKIBjyMWLFHEeTDGYVsYci85z2UbTDg==} - peerDependencies: - vue: 3.4.30 - - '@vue/shared@3.4.30': - resolution: {integrity: sha512-CLg+f8RQCHQnKvuHY9adMsMaQOcqclh6Z5V9TaoMgy0ut0tz848joZ7/CYFFyF/yZ5i2yaw7Fn498C+CNZVHIg==} - - '@vueuse/core@10.11.0': - resolution: {integrity: sha512-x3sD4Mkm7PJ+pcq3HX8PLPBadXCAlSDR/waK87dz0gQE+qJnaaFhc/dZVfJz+IUYzTMVGum2QlR7ImiJQN4s6g==} - - '@vueuse/metadata@10.11.0': - resolution: {integrity: sha512-kQX7l6l8dVWNqlqyN3ePW3KmjCQO3ZMgXuBMddIu83CmucrsBfXlH+JoviYyRBws/yLTQO8g3Pbw+bdIoVm4oQ==} - - '@vueuse/shared@10.11.0': - resolution: {integrity: sha512-fyNoIXEq3PfX1L3NkNhtVQUSRtqYwJtJg+Bp9rIzculIZWHTkKSysujrOk2J+NrRulLTQH9+3gGSfYLWSEWU1A==} - - '@webassemblyjs/ast@1.12.1': - resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} - - '@webassemblyjs/floating-point-hex-parser@1.11.6': - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - - '@webassemblyjs/helper-api-error@1.11.6': - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - - '@webassemblyjs/helper-buffer@1.12.1': - resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} - - '@webassemblyjs/helper-numbers@1.11.6': - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - - '@webassemblyjs/helper-wasm-section@1.12.1': - resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} - - '@webassemblyjs/ieee754@1.11.6': - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - - '@webassemblyjs/leb128@1.11.6': - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - - '@webassemblyjs/utf8@1.11.6': - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - - '@webassemblyjs/wasm-edit@1.12.1': - resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} - - '@webassemblyjs/wasm-gen@1.12.1': - resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} - - '@webassemblyjs/wasm-opt@1.12.1': - resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} - - '@webassemblyjs/wasm-parser@1.12.1': - resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} - - '@webassemblyjs/wast-printer@1.12.1': - resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} - - '@wojtekmaj/react-hooks@1.20.0': - resolution: {integrity: sha512-GZFgtrZ+/ZtLHFP+F1JxzFRZUneCDfquqOBYDVuDjpCkaJ818FfeQ+NKAkAV6D/OL1fAczJ8+O/785aHqsuELw==} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - '@zag-js/accordion@0.38.0': - resolution: {integrity: sha512-qovoN5KKX8kj5IH9N3r5GUHksL6Xa45YU0fbCeoDeMd/erObRKHoA7bnM+rfJLIKCifzO53ooWWYOVZaXOmT8Q==} - - '@zag-js/anatomy@0.38.0': - resolution: {integrity: sha512-VlCOnKCOSFOonvZjdGTRwp3D/A9iQd69WQTI8i5G0JwS0lhq5lK/qJ7pJ0+UHnLcqAWEv5eywbpHOLFrSlr7Nw==} - - '@zag-js/aria-hidden@0.38.0': - resolution: {integrity: sha512-yPdezG+ucZyaDD7p0jB7B6prtNQGyBJSfWlTyo69W+SFxkSdocdFF/dKjoReDEY6AvCc1ZhxgHVR/sd56F50/A==} - - '@zag-js/auto-resize@0.38.0': - resolution: {integrity: sha512-wauqOQwz8fAGzD2cHJEgqkCiNejWSq/Qsa7a0DdBX7BOdLyMloF6kc4YFNfQksUHgRaojLFHYJ5sfqzDO06yBQ==} - - '@zag-js/avatar@0.38.0': - resolution: {integrity: sha512-ZJqlwFcEET6OdmFgWPv7YQiYM7CyFTzfEN7wXeourRdkMlgbQvi1V0Ett3LteV2kYtFjFZCmEdxP4VMfOU3w0w==} - - '@zag-js/carousel@0.38.0': - resolution: {integrity: sha512-5CHRLaD9ZR5aivf1+MwmOYjkGCy8KXWx7XyWiUtlxu8ULJ4mFk6+s3RK12gmPHG7RVX5wPX9xC+2LSuVayXs5w==} - - '@zag-js/checkbox@0.38.0': - resolution: {integrity: sha512-xOjbh35lxffAOyk+JwSxmKCV8wBTPe6O6aknBQkBa7Vd3KCZrgCtf/7fN8BG6cmnVjWmMk5edRt7lvZDHV8IHQ==} - - '@zag-js/clipboard@0.38.0': - resolution: {integrity: sha512-YVWdoPuqzqdy0PXzAd66gqbvFv6qRTe84HaPNXZLBeFiL1OFdH9pl+xoa4Zxx5x4zJFPkOjbcd1jeXu0HMn7Ew==} - - '@zag-js/collapsible@0.38.0': - resolution: {integrity: sha512-3FxPKnCSn/sCilKziVXEjrOCeVvPQ4vp1QOFgBiIlM0yjWxsqLv0uMWrFVh6rgc0dKfyVtKEJQgI1oYKwuwjjg==} - - '@zag-js/collection@0.38.0': - resolution: {integrity: sha512-q+Y5MhmcbD4FlZSiWuqAXrc8EWziyVAD5LWd8mUI9ljMs0xsLCYSU14B1XkRx2e4FQ8Mi2C6n3lP+sHpa9/eLw==} - - '@zag-js/color-picker@0.38.0': - resolution: {integrity: sha512-s6RFvnkjEeZdr6q/bDLUVuNSbJrfc0HnPf6EqJ53dISCV3rQf3LCx9rCyBJvyiM+/iay/rB2UEVlSteF2GVHtQ==} - - '@zag-js/color-utils@0.38.0': - resolution: {integrity: sha512-lGZ5HDvQKLuMsXdRXzWr3p01zyL8Go7j82yVKNijFOj+2E4HoxQXgU5Tq393kt9DXONYkurISW+AWEUr+gM17Q==} - - '@zag-js/combobox@0.38.0': - resolution: {integrity: sha512-MT+KMH6FAGvlWeKPck/SLV26dxxrGWGvHQoIPZtJyJoUjPdw8vuw7QvUF7YTx+bUoQwDL0nn3EBYJpGPSAJ7/Q==} - - '@zag-js/core@0.38.0': - resolution: {integrity: sha512-+S5qKvIPiG4CBNFaVSwdUBViiU96cZPzkUttPhl+qP3Xk7HqBV6vL48PhP01nBXfcpmW0nk8FDX1S9PleWm0oQ==} - - '@zag-js/date-picker@0.38.0': - resolution: {integrity: sha512-FMRnG1IHq7fOElXUGhC32hd09r7XcZ1RBJQsCd4/aJYipNyGJzMVHea/PaUo6iayhuBQ8vHsDDv5WiEWQrYimw==} - - '@zag-js/date-utils@0.38.0': - resolution: {integrity: sha512-H6dR/HcFEJTATKDc19YRg6fabpF26DbCI1o0YmuclKY68jF9XWfbeAwjyr/V71DjB2QHzvODALWWSbNLDKxQDg==} - peerDependencies: - '@internationalized/date': '>=3.0.0' - - '@zag-js/dialog@0.38.0': - resolution: {integrity: sha512-DcaEM8VWCVHAdv73y9ez4Sb1RuVMXYWYP/5K3SAeo6QCQVVuBg5pQXnkCqmGLnyE3Rf1wta8dRggu6N3Gghqrw==} - - '@zag-js/dismissable@0.38.0': - resolution: {integrity: sha512-4Ipp68QxFmrBeXuLjPpIx7uBrBjhqv3aQFWIvzuEbxVzq3o7afVEMVLlix54EIjkOLmdyW7O20pfTyPBO4lS8w==} - - '@zag-js/dom-event@0.38.0': - resolution: {integrity: sha512-YQk23fCV8nLpvYP2G/pzQcggPzfLOkBAmXuGJvvJk7M5fkd3f5I+SSS6XNlWJ//+o1JkiMYQEezVDl7WXM+ITA==} - - '@zag-js/dom-query@0.38.0': - resolution: {integrity: sha512-po1HqrEtP9ZfVKHbUzqK4jfHipQVdsfw84B5pnqPo/aPcsZnyzWgHmWE31yRZERmtTZdG6YTlOZdlZ/gQz0FfA==} - - '@zag-js/editable@0.38.0': - resolution: {integrity: sha512-omOyINSgPX92E5D3RBexMyRvjLa4Zq5UUppG3FlA3kEi6DSU4hEj661vnVwc4ihhyWgWZh6KSKDE2m9fd6KEsA==} - - '@zag-js/element-rect@0.38.0': - resolution: {integrity: sha512-Oi19Yhbos+XXxR/CTCs+EhvTcYZ1AKk2EtGzDzJTUzKf+qtl3ki6Ptfam/jZxIy2M59/vv70NpW7fPZOFNAmtw==} - - '@zag-js/element-size@0.38.0': - resolution: {integrity: sha512-flOrHUK732FlU2Q5e5YdH42HxHg727uVmsez95ua97OG/Whsh87qLZRC20RQrqtC061lKOHkBi6LuQlhGxT9Gw==} - - '@zag-js/file-upload@0.38.0': - resolution: {integrity: sha512-7XwD9yhTgkLrn/MCgLCcyGfJ/PjAJt5C1Wy7PoKEz3RkAyaT2Vs0qqg8OE2NbtL7pdE/mFzirtCGr2qgZ9JYHg==} - - '@zag-js/file-utils@0.38.0': - resolution: {integrity: sha512-WwZOqk9G+/DhDuvgQaNJuruTY4C0bc31obc1d1xDBvvH9aIl/mg99idAMrNc7bK+nMQSEVtKA5oMt5EobKqR1g==} - - '@zag-js/form-utils@0.38.0': - resolution: {integrity: sha512-2ziHvspfZ6Ft63AODo/0rkHxNrp37vOjbC+aV7L2r+pCCRnen5G+rzZuq2gwdyaOHeqYLlZSjDfSYbrI3Wfbkw==} - - '@zag-js/hover-card@0.38.0': - resolution: {integrity: sha512-tH6YQqYUwo2LAzpAb7oplMGB/K3teVZ+oL3xmq2kTXCtwVQTzHkxjopaywxljMCBmg+2E5OV26tzIrJFIAgxNg==} - - '@zag-js/i18n-utils@0.38.0': - resolution: {integrity: sha512-uLe6rA3n5MBKz1oGN1cdWHhFN2MU+HAXXpYuSGlUpHrQmjvAl0TxcOcBNz7qd9AwOoR8v7pGyt3OQnG0LC0PQA==} - - '@zag-js/interact-outside@0.38.0': - resolution: {integrity: sha512-9T2sPrgC9zCqS6y+2UlmVLAhFS3Qx/hFMCNAI7IlGFFI8z77NP6lQUaSuLAPqy3B9eG0fUFrBDh/rgBIPnBUDA==} - - '@zag-js/live-region@0.38.0': - resolution: {integrity: sha512-ktxJQxOomwUzfzFiwa6OFrV390kKQwHQV485SK5TV24/FNj9ogDlLwwhqzQ7PIHPxS/6JAUVUeW2POcgE6bDqw==} - - '@zag-js/menu@0.38.0': - resolution: {integrity: sha512-t0AcniH63zYqfWPnMOHTyJO7cc7uVSszDFZCJUEocO5EWQp0DnUVcdqXwUZNe+nIUvAjWMLdNDkCU3P74aMSMw==} - - '@zag-js/mutation-observer@0.38.0': - resolution: {integrity: sha512-S8K3SQwEFPXHYTvn26zpeVl2RmmCmtqUFR0vHWkXyhpB3f+MmCQIk7UmO+6VtZLEBOew9FYfBgEfeuCzl+jgVQ==} - - '@zag-js/number-input@0.38.0': - resolution: {integrity: sha512-tqnUP8Ww9fiLx5jOrirEcceOrspTA23iElvbZsvuB7fCgW2GUSPBeWkn074dyscZQ2JbZgrJVH40MU8l67D9ug==} - - '@zag-js/number-utils@0.38.0': - resolution: {integrity: sha512-Ao9aq0PTgM6ObcjlvP45yv/8XzSKO6FmRUsz7UOu2AkChhMztrDMvJMErUXMt/uVn+LReTA9Wf9n29WRKk87Kw==} - - '@zag-js/numeric-range@0.38.0': - resolution: {integrity: sha512-Qfe0CQhIPVmmAFPi2ySq83AuXchd4uJvcDnQAeKZK9oVqLX8ol3ZOL5iv2ugYtHA1WoQftbNwGx7Zs4/JUWqvQ==} - - '@zag-js/pagination@0.38.0': - resolution: {integrity: sha512-C9xduN6G5ewXugRU4pijtTibSBhOY3IXf/BuFewiPTrxXLAGtxl8UyLJ+8MrlOjMAQgxLT3Q5bbVOUjy2nVdtA==} - - '@zag-js/pin-input@0.38.0': - resolution: {integrity: sha512-2884vhtGw4jAveNCQjpkhhQgWdDj7DU0WpgIml21Gqxx4QjesG5ebBpSG3lft1cGiP0JnhVnARY6EbhP+t/Lyw==} - - '@zag-js/popover@0.38.0': - resolution: {integrity: sha512-KJG/Ftiluk0Pkf46+Vzx2YXzpi+0tX5QFBc1Ok+uVF4b9iSy9x3WCvj7mwoqVyFBE7w4+o6JKGpD9baXqt3wtw==} - - '@zag-js/popper@0.38.0': - resolution: {integrity: sha512-6xpG+mvfUJqVapu3LpRdAUuFwsqhVXLOQaBmQYntt6iiFd1+zJxkXW8o176BC2LG5IB8783GZE4+BY1/DB3sDA==} - - '@zag-js/presence@0.38.0': - resolution: {integrity: sha512-Rio2mqo98+o0olxzG4MffFizFQRHJzL/HL6AFRi2G0u2HdGTHDGIMfACYGPLrq2JmBW+wIbO37A3KHiSYtfdtw==} - - '@zag-js/progress@0.38.0': - resolution: {integrity: sha512-7Qzuen0iP9hNRlStgUvuLGdJyx+Sz4vCoGaZkF3cYXyEpEd2rKYFct35cze3oXdg5+ZutbDoKbIZ08xsDtxhag==} - - '@zag-js/radio-group@0.38.0': - resolution: {integrity: sha512-GISABuxOKTu48o5SzxJknc5p0ViB3TeOmkg76/aZaNlWMkURgQ9cvxIR5meXiIISpVsyAtIvOMoCXzmFxvoOmA==} - - '@zag-js/rating-group@0.38.0': - resolution: {integrity: sha512-ToaNzSU8tnDHfPJSHM5Y1o7w6MSq9N1qRCg/4G24orES0rG0qDhJvRKQdqqY08ZWTetCZcHNvPbUyQPzi91fTQ==} - - '@zag-js/react@0.38.0': - resolution: {integrity: sha512-w0epVxXasralAVCWfC2KtQxxSebhhh0R2Cu1PYxU9M2pDsA8zg67Q4w8HyGR1zVKqbn4VXPZbEZZiyLQHOaZPQ==} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - - '@zag-js/rect-utils@0.38.0': - resolution: {integrity: sha512-GUabczevwHrCP1fm56otvkushDH8WblXvKrNNSAVyJ1E7r81gsjsoD/aCnIZZ4RabQKrifqDekMfjYMbrRtFkw==} - - '@zag-js/remove-scroll@0.38.0': - resolution: {integrity: sha512-JFcgj0QfUrT/POw/+V2LxuvnUjzLBP7TmCTmuGychEzWOalxxuuStTMa27nBDvgYp4eRNgIP+jjn8Fz3O+UW2g==} - - '@zag-js/select@0.38.0': - resolution: {integrity: sha512-dQb6gLyPU5dN1qYdMESX5CDgWZurmukE36I7A5r3rQ0/OkP3dhpTY1eqWJeaDg9lxGEcWnERpFiLelxxKc/RLg==} - - '@zag-js/slider@0.38.0': - resolution: {integrity: sha512-D11+GZSGrYQpVSmcM2m2CVGOFk+TKDQL+USxfgY0vHp7fIEBuHbRYM/QPFRtcrCRAMx7y6UqZbxAUy7oqhoklQ==} - - '@zag-js/splitter@0.38.0': - resolution: {integrity: sha512-eeCA+I6hbMvU/Kid0Ea4psfLux/9/UzW3tcVv0t7zH3+6EFOEV6B/TSPzxOqWQpgKvo94ejxpmRTsUKRlhejOQ==} - - '@zag-js/store@0.38.0': - resolution: {integrity: sha512-XbGfCxOeRLKqSAKsTOdPW8II+aAcLmyaIEDElWPr+Xt6IicANDi/CvksiiuzFiMutxowJzhXOrfIT7A093D2vQ==} - - '@zag-js/switch@0.38.0': - resolution: {integrity: sha512-2N/2nT5V62JGPvwcsK7mKmsgT2ZiSX8Gt2+zOMY6vuS5SZJnHvI9TxsMP2XuJto9mskFBIdm/Z+27IvM6sPcbg==} - - '@zag-js/tabbable@0.38.0': - resolution: {integrity: sha512-hIe0HKBvFV6IJQlZPyPPRMD7v4r8jJ0Hn3ZpMXoYwyRmH0Cfuha03SoLOsqeAQvLAa+EJDSU8UDUCnVrNtHASQ==} - - '@zag-js/tabs@0.38.0': - resolution: {integrity: sha512-KYXO8uUeikFiwdGPHxNZg5lWn7z564WKHj4PjBV2iU0H2Itc4313xePbxAA0/rTlEQrIbYutqhAPp65bCa5OVw==} - - '@zag-js/tags-input@0.38.0': - resolution: {integrity: sha512-SNqPiAG2Jzhy+0HNYVINvphgIWkPpFkkldbZfEqBFnYs5kHx/iP4FAWeTB4AtY0yxexSAv0Pj9DrQfewz0xkMA==} - - '@zag-js/text-selection@0.38.0': - resolution: {integrity: sha512-etNbRs0g4wgB/HETO0GhRziDIKRdRAEV39P4/zEdFMNBkXCjJgX7xWvWiwXkoCzIBFN2FXTFuwWWA+fBt3XfSQ==} - - '@zag-js/toast@0.38.0': - resolution: {integrity: sha512-uCiB5sUuc7/hIZvDR6xcy+fQeE2UJNXpI8i6k/Jg4D1ZYy63iJVm8g9+5mByaPaSVi9Osou/r/A/yIU9qbOSnw==} - - '@zag-js/toggle-group@0.38.0': - resolution: {integrity: sha512-9iRMDuUvbQBZ1WzU4sbAC5BhL14Ev5P9AxQSEmexWgV1nJi+vsWEzOrZY+AqoOoeFdg0Ju/c0K0Uk/sLcsKfgA==} - - '@zag-js/tooltip@0.38.0': - resolution: {integrity: sha512-MsgUdozogatPQivWTNINxt1bgx7ndOvxNlG2GuwUwEfMIjZyU4c7SqbhGwVohLJCd6h2056IAM3PxpYZNkXXIg==} - - '@zag-js/tree-view@0.38.0': - resolution: {integrity: sha512-N2vOKIZ4NNT4YbkfcywrpOZ4RFX2qQWUkcMGmE936LhWBM/NDHlJ6Wub7UcUcSUkKyQnaAeslJ8zrr1/xMCpgA==} - - '@zag-js/types@0.38.0': - resolution: {integrity: sha512-PaLqLOWSFlnqwyavLuycasx/dFKzbbcoCB/FcDbKPe88ysCZtRPxeUA/Yn8N1roPnF/gvkwCSTO43+VA6cKspA==} - - '@zag-js/utils@0.38.0': - resolution: {integrity: sha512-u37JTfpbAYtvHwLbHVIRBuzM3+FWDX32Vsyt3LJQ+1GW69BXtWz2zDRVru3xMZ7XGsXlnGxD8xNIjYxOJCJePA==} - - '@zag-js/visually-hidden@0.38.0': - resolution: {integrity: sha512-yOpGmd+4Y2xSzmbTpip9XtJadZmxcW8VYGDPkMKKzDClFxqUcGDh501DT5amJ+iLL+onqhzggvUJJxl7KzV7+g==} - - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - - abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - abs-svg-path@0.1.1: - resolution: {integrity: sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==} - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - acorn-import-assertions@1.9.0: - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - peerDependencies: - acorn: ^8 - - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} - hasBin: true - - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - - ajv-draft-04@1.0.0: - resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} - peerDependencies: - ajv: ^8.5.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@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.16.0: - resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-escapes@6.2.1: - resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} - engines: {node: '>=14.16'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - 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'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - 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'} - - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-hidden@1.2.4: - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} - engines: {node: '>=10'} - - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - - arity-n@1.0.4: - resolution: {integrity: sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==} - - array-last@1.3.0: - resolution: {integrity: sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==} - engines: {node: '>=0.10.0'} - - asn1js@3.0.5: - resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} - engines: {node: '>=12.0.0'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - - attr-accept@2.2.2: - resolution: {integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==} - engines: {node: '>=4'} - - autoprefixer@10.4.14: - resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - autoprefixer@10.4.19: - resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - axios@1.7.2: - resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} - - babylon@6.18.0: - resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} - hasBin: true - - 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==} - - base64id@2.0.0: - resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} - engines: {node: ^4.5.0 || >= 5.9} - - bcryptjs@2.4.3: - resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} - - bidi-js@1.0.3: - resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - brotli@1.3.3: - resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} - - browserify-zlib@0.2.0: - resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} - - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - 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.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - caniuse-lite@1.0.30001620: - resolution: {integrity: sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==} - - canvas@2.11.2: - resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} - engines: {node: '>=6'} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - 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==} - - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - - cjs-module-lexer@1.3.1: - resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} - - class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} - - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} - engines: {node: '>=18'} - - 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'} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - clone@2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - - clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - - clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - - clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} - engines: {node: '>=6'} - - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - - cmdk@1.0.0: - resolution: {integrity: sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - codemirror@6.0.1: - resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - - colors@1.4.0: - resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} - engines: {node: '>=0.1.90'} - - 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@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - - 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'} - - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - compose-function@3.0.3: - resolution: {integrity: sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - - config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} - engines: {node: '>= 0.6'} - - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - - copy-anything@3.0.5: - resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} - engines: {node: '>=12.13'} - - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - - crelt@1.0.6: - resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} - - cron-parser@4.9.0: - resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} - engines: {node: '>=12.0.0'} - - cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} - - cross-fetch@4.0.0: - resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - - css.escape@1.5.1: - resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - cva@1.0.0-beta.1: - resolution: {integrity: sha512-gznFqTgERU9q4wg7jfgqtt34+RUt9S5t0xDAAEuDwQEAXEgjdDkKXpLLNjwSxsB4Ln/sqWJEH7yhE8Ny0mxd0w==} - peerDependencies: - typescript: '>= 4.5.5 < 6' - peerDependenciesMeta: - typescript: - optional: true - - 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.0: - resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} - 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'} - - date-fns@3.6.0: - resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} - - dateformat@4.6.3: - resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} - - dayjs@1.11.11: - resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} - - debounce@1.2.1: - resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} - - debounce@2.0.0: - resolution: {integrity: sha512-xRetU6gL1VJbs85Mc4FoEGSjQxzpdxRyFhe3lmWFyy2EzydIcD4xzUvRJMD+NPDfMwKNhxa3PvsIOU32luIWeA==} - engines: {node: '>=18'} - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decimal.js-light@2.5.1: - resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} - - decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - - decompress-response@4.2.1: - resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} - engines: {node: '>=8'} - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - deep-freeze@0.0.1: - resolution: {integrity: sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==} - - 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'} - - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - - delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - - dfa@1.2.0: - resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - - dom-accessibility-api@0.6.3: - resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} - - dom-helpers@5.2.1: - resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - - dotenv@16.0.3: - resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} - engines: {node: '>=12'} - - dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - easy-table@1.2.0: - resolution: {integrity: sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==} - - editorconfig@1.0.4: - resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} - engines: {node: '>=14'} - hasBin: true - - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true - - electron-to-chromium@1.4.774: - resolution: {integrity: sha512-132O1XCd7zcTkzS3FgkAzKmnBuNJjK8WjcTtNuoylj7MYbqw5eXehjQ5OK91g0zm7OTKIPeaAG4CPoRfD9M1Mg==} - - emoji-regex@10.3.0: - resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - engine.io-client@6.5.4: - resolution: {integrity: sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==} - - engine.io-parser@5.2.3: - resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} - engines: {node: '>=10.0.0'} - - engine.io@6.5.5: - resolution: {integrity: sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==} - engines: {node: '>=10.2.0'} - - enhanced-resolve@5.17.0: - resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} - engines: {node: '>=10.13.0'} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-module-lexer@1.5.3: - resolution: {integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==} - - esbuild@0.19.11: - resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - 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-prettier@9.0.0: - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-config-turbo@1.10.12: - resolution: {integrity: sha512-z3jfh+D7UGYlzMWGh+Kqz++hf8LOE96q3o5R8X4HTjmxaBWlLAWG+0Ounr38h+JLR2TJno0hU9zfzoPNkR9BdA==} - peerDependencies: - eslint: '>6.6.0' - - eslint-plugin-turbo@1.10.12: - resolution: {integrity: sha512-uNbdj+ohZaYo4tFJ6dStRXu2FZigwulR1b3URPXe0Q8YaE7thuekKNP+54CHtZPH9Zey9dmDx5btAQl9mfzGOw==} - peerDependencies: - eslint: '>6.6.0' - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-scope@8.0.2: - resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} - 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.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@9.8.0: - resolution: {integrity: sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - - espree@10.1.0: - resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - 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-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - - fast-copy@3.0.2: - resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} - - fast-deep-equal@2.0.1: - resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-equals@5.0.1: - resolution: {integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==} - engines: {node: '>=6.0.0'} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - 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-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - - fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - - fast-xml-parser@4.2.5: - resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} - hasBin: true - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - file-selector@0.6.0: - resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} - engines: {node: '>= 12'} - - file-system-cache@2.3.0: - resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} - - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - filter-iterator@0.0.1: - resolution: {integrity: sha512-v4lhL7Qa8XpbW3LN46CEnmhGk3eHZwxfNl5at20aEkreesht4YKb/Ba3BUIbnPhAC/r3dmu7ABaGk6MAvh2alA==} - - filter-obj@1.1.0: - resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} - engines: {node: '>=0.10.0'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - - focus-trap@7.5.4: - resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} - - follow-redirects@1.15.6: - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - fontkit@2.0.2: - resolution: {integrity: sha512-jc4k5Yr8iov8QfS6u8w2CnHWVmbOGtdBtOXMze5Y+QD966Rx6PEVWXSEGwXlsDlKtu1G12cJjcsybnqhSk/+LA==} - - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - - formdata-node@4.4.1: - resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} - engines: {node: '>= 12.20'} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - framer-motion@10.17.4: - resolution: {integrity: sha512-CYBSs6cWfzcasAX8aofgKFZootmkQtR4qxbfTOksBLny/lbUfkGbQAFOS3qnl6Uau1N9y8tUpI7mVIrHgkFjLQ==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - 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==} - - fuse.js@7.0.0: - resolution: {integrity: sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==} - engines: {node: '>=10'} - - gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - - 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.2.0: - resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} - engines: {node: '>=18'} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - - get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - - get-own-enumerable-property-symbols@3.0.2: - resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - get-tsconfig@4.7.5: - resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} - - github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - - 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@10.3.15: - resolution: {integrity: sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==} - engines: {node: '>=16 || 14 >=14.18'} - hasBin: true - - glob@10.3.4: - resolution: {integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@9.3.5: - resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} - engines: {node: '>=16 || 14 >=14.17'} - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - gzip-size@6.0.0: - resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} - engines: {node: '>=10'} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-own-property@0.1.0: - resolution: {integrity: sha512-14qdBKoonU99XDhWcFKZTShK+QV47qU97u8zzoVo9cL5TZ3BmBHXogItSt9qJjR0KUMFRhcCW8uGIGl8nkl7Aw==} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hast-util-embedded@2.0.1: - resolution: {integrity: sha512-QUdSOP1/o+/TxXtpPFXR2mUg2P+ySrmlX7QjwHZCXqMFyYk7YmcGSvqRW+4XgXAoHifdE1t2PwFaQK33TqVjSw==} - - hast-util-embedded@3.0.0: - resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} - - hast-util-from-dom@4.2.0: - resolution: {integrity: sha512-t1RJW/OpJbCAJQeKi3Qrj1cAOLA0+av/iPFori112+0X7R3wng+jxLA+kXec8K4szqPRGI8vPxbbpEYvvpwaeQ==} - - hast-util-from-html@2.0.1: - resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} - - hast-util-from-parse5@7.1.2: - resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} - - hast-util-from-parse5@8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} - - hast-util-has-property@2.0.1: - resolution: {integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==} - - hast-util-has-property@3.0.0: - resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} - - hast-util-is-body-ok-link@2.0.0: - resolution: {integrity: sha512-S58hCexyKdD31vMsErvgLfflW6vYWo/ixRLPJTtkOvLld24vyI8vmYmkgLA5LG3la2ME7nm7dLGdm48gfLRBfw==} - - hast-util-is-body-ok-link@3.0.0: - resolution: {integrity: sha512-VFHY5bo2nY8HiV6nir2ynmEB1XkxzuUffhEGeVx7orbu/B1KaGyeGgMZldvMVx5xWrDlLLG/kQ6YkJAMkBEx0w==} - - hast-util-is-element@2.1.3: - resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==} - - hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - - hast-util-parse-selector@3.1.1: - resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} - - hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - - hast-util-phrasing@2.0.2: - resolution: {integrity: sha512-yGkCfPkkfCyiLfK6KEl/orMDr/zgCnq/NaO9HfULx6/Zga5fso5eqQA5Ov/JZVqACygvw9shRYWgXNcG2ilo7w==} - - hast-util-phrasing@3.0.1: - resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} - - hast-util-raw@7.2.3: - resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} - - hast-util-raw@9.0.3: - resolution: {integrity: sha512-ICWvVOF2fq4+7CMmtCPD5CM4QKjPbHpPotE6+8tDooV0ZuyJVUzHsrNX+O5NaRbieTf0F7FfeBOMAwi6Td0+yQ==} - - hast-util-sanitize@5.0.1: - resolution: {integrity: sha512-IGrgWLuip4O2nq5CugXy4GI2V8kx4sFVy5Hd4vF7AR2gxS0N9s7nEAVUyeMtZKZvzrxVsHt73XdTsno1tClIkQ==} - - hast-util-to-html@8.0.4: - resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} - - hast-util-to-html@9.0.1: - resolution: {integrity: sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==} - - hast-util-to-mdast@8.4.1: - resolution: {integrity: sha512-tfmBLASuCgyhCzpkTXM5kU8xeuS5jkMZ17BYm2YftGT5wvgc7uHXTZ/X8WfNd6F5NV/IGmrLsuahZ+jXQir4zQ==} - - hast-util-to-parse5@7.1.0: - resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} - - hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} - - hast-util-to-text@3.1.2: - resolution: {integrity: sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==} - - hast-util-to-text@4.0.2: - resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} - - hast-util-whitespace@2.0.1: - resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - hastscript@7.2.0: - resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} - - hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} - - help-me@5.0.0: - resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} - - highlight.js@11.9.0: - resolution: {integrity: sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==} - engines: {node: '>=12.0.0'} - - highlightjs-curl@1.3.0: - resolution: {integrity: sha512-50UEfZq1KR0Lfk2Tr6xb/MUIZH3h10oNC0OTy9g7WELcs5Fgy/mKN1vEhuKTkKbdo8vr5F9GXstu2eLhApfQ3A==} - - highlightjs-vue@1.0.0: - resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==} - - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - - hono@4.5.8: - resolution: {integrity: sha512-pqpSlcdqGkpTTRpLYU1PnCz52gVr0zVR9H5GzMyJWuKQLLEBQxh96q45QizJ2PPX8NATtz2mu31/PKW/Jt+90Q==} - engines: {node: '>=16.0.0'} - - hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - - hsl-to-hex@1.0.0: - resolution: {integrity: sha512-K6GVpucS5wFf44X0h2bLVRDsycgJmf9FF2elg+CrqD8GcFU8c6vYhgXn8NjUkFCwj+xDFb70qgLbTUm6sxwPmA==} - - hsl-to-rgb-for-reals@1.1.1: - resolution: {integrity: sha512-LgOWAkrN0rFaQpfdWBQlv/VhkOxb5AsBjk6NQVx4yEzWS923T07X0M1Y0VNko2H52HeSpZrZNNMJ0aFqsdVzQg==} - - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - - html-to-image@1.11.11: - resolution: {integrity: sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA==} - - html-to-text@9.0.5: - resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} - engines: {node: '>=14'} - - html-void-elements@2.0.1: - resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} - - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - - html-whitespace-sensitive-tag-names@3.0.0: - resolution: {integrity: sha512-KlClZ3/Qy5UgvpvVvDomGhnQhNWH5INE8GwvSIQ9CWt1K0zbbXrl7eN5bWaafOZgtmO3jMPwUqmrmEwinhPq1w==} - - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - httpsnippet-lite@3.0.5: - resolution: {integrity: sha512-So4qTXY5iFj5XtFDwyz2PicUu+8NWrI8e8h+ZeZoVtMNcFQp4FFIntBHUE+JPUG6QQU8o1VHCy+X4ETRDwt9CA==} - engines: {node: '>=14.13'} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - husky@9.1.4: - resolution: {integrity: sha512-bho94YyReb4JV7LYWRWxZ/xr6TtOTt8cMfmQ39MQYJ7f/YE268s3GdghGwi+y4zAeqewE5zYLvuhV0M0ijsDEA==} - engines: {node: '>=18'} - hasBin: true - - hyphen@1.10.4: - resolution: {integrity: sha512-SejXzIpv9gOVdDWXd4suM1fdF1k2dxZGvuTdkOVLoazYfK7O4DykIQbdrvuyG+EaTNlXAGhMndtKrhykgbt0gg==} - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - identity-function@1.0.0: - resolution: {integrity: sha512-kNrgUK0qI+9qLTBidsH85HjDLpZfrrS0ElquKKe/fJFdB3D7VeKdXXEvOPDUHSHOzdZKCAAaQIWWyp0l2yq6pw==} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - import-in-the-middle@1.7.1: - resolution: {integrity: sha512-1LrZPDtW+atAxH42S6288qyDFNQ2YCty+2mxEPRtfazH6Z5QwkaBSTS2ods7hnVJioF6rkRfNoA6A/MstpFXLg==} - - import-in-the-middle@1.9.1: - resolution: {integrity: sha512-E+3tEOutU1MV0mxhuCwfSPNNWRkbTJ3/YyL5be+blNIbHwZc53uYHQfuIhAU77xWR0BoF2eT7cqDJ6VlU5APPg==} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - 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==} - - input-otp@1.2.4: - resolution: {integrity: sha512-md6rhmD+zmMnUh5crQNSQxq3keBRYvE3odbr4Qb9g2NWzQv9azi+t1a3X4TBTbh98fsGHgEEJlzbe1q860uGCA==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - - inquirer@9.2.22: - resolution: {integrity: sha512-SqLLa/Oe5rZUagTR9z+Zd6izyatHglbmbvVofo1KzuVB54YHleWzeHNLoR7FOICGOeQSqeLh1cordb3MzhGcEw==} - engines: {node: '>=18'} - - internmap@2.0.3: - resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} - engines: {node: '>=12'} - - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} - engines: {node: '>= 10'} - - is-absolute-url@4.0.1: - resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - - is-fullwidth-code-point@5.0.0: - resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} - engines: {node: '>=18'} - - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - is-iterable@1.1.1: - resolution: {integrity: sha512-EdOZCr0NsGE00Pot+x1ZFx9MJK3C6wy91geZpXwvwexDLJvA4nzYyZf7r+EIwSeVsOLDdBz7ATg9NqKTzuNYuQ==} - engines: {node: '>= 4'} - - is-number@4.0.0: - resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-obj@1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - - is-regexp@1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - is-url@1.2.4: - resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} - - is-what@4.1.16: - resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} - engines: {node: '>=12.13'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isomorphic.js@0.2.5: - resolution: {integrity: sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==} - - iterable-lookahead@1.0.0: - resolution: {integrity: sha512-hJnEP2Xk4+44DDwJqUQGdXal5VbyeWLaPyDl2AQc242Zr7iqz4DgpQOrEzglWVMGHMDCkguLHEKxd1+rOsmgSQ==} - engines: {node: '>=4'} - - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jake@10.9.1: - resolution: {integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==} - engines: {node: '>=10'} - hasBin: true - - jay-peg@1.0.2: - resolution: {integrity: sha512-fyV3NVvv6pTys/3BTapBUGAWAuU9rM2gRcgijZHzptd5KKL+s+S7hESFN+wOsbDH1MzFwdlRAXi0aGxS6uiMKg==} - - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true - - jose@4.15.5: - resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} - - jose@5.3.0: - resolution: {integrity: sha512-IChe9AtAE79ru084ow8jzkN2lNrG3Ntfiv65Cvj9uOCE2m5LNsdHG+9EbxWxAoWRF9TgDOqLN5jm08++owDVRg==} - - joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - - js-beautify@1.15.1: - resolution: {integrity: sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==} - engines: {node: '>=14'} - hasBin: true - - js-cookie@3.0.5: - resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} - engines: {node: '>=14'} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - 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-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsonpointer@5.0.1: - resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} - engines: {node: '>=0.10.0'} - - just-clone@6.2.0: - resolution: {integrity: sha512-1IynUYEc/HAwxhi3WDpIpxJbZpMCvvrrmZVqvj9EhpvbH8lls7HhdhiByjL7DkAaWlLIzpC0Xc/VPvy/UxLNjA==} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - - klona@2.0.6: - resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} - engines: {node: '>= 8'} - - knip@5.17.4: - resolution: {integrity: sha512-D6dQjauc3ZIPq0jTYgTeuxpeDKVOaV84S5TNeBDB2GjoPQVzEPW7PA83XijyGXNrflWq4zvWNn49gTUN0Lfeig==} - engines: {node: '>=18.6.0'} - hasBin: true - peerDependencies: - '@types/node': '>=18' - typescript: '>=5.0.4' - - leac@0.6.0: - resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} - - leven@4.0.0: - resolution: {integrity: sha512-puehA3YKku3osqPlNuzGDUHq8WpwXupUg1V6NXdV38G+gr+gkBwFC8g1b/+YcIvp8gnqVIus+eJCH/eGsRmJNw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lib0@0.2.94: - resolution: {integrity: sha512-hZ3p54jL4Wpu7IOg26uC7dnEWiMyNlUrb9KoG7+xYs45WkQwpVvKFndVq2+pqLYKe1u8Fp3+zAfZHVvTK34PvQ==} - engines: {node: '>=16'} - hasBin: true - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lilconfig@3.0.0: - resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} - engines: {node: '>=14'} - - lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - linkify-it@5.0.0: - resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - - linkifyjs@4.1.3: - resolution: {integrity: sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==} - - lint-staged@15.2.2: - resolution: {integrity: sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw==} - engines: {node: '>=18.12.0'} - hasBin: true - - listr2@8.0.1: - resolution: {integrity: sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==} - engines: {node: '>=18.0.0'} - - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - - lodash.castarray@4.4.0: - resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} - - lodash.curry@4.1.1: - resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} - - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - log-update@6.0.0: - resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==} - 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 - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - lowlight@3.1.0: - resolution: {integrity: sha512-CEbNVoSikAxwDMDPjXlqlFYiZLkDJHwyGu/MfOsJnF3d7f3tds5J3z8s/l9TMXhzfsJCCJEAsD78842mwmg0PQ==} - - lru-cache@10.2.2: - resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} - engines: {node: 14 || >=16.14} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - luxon@3.4.4: - resolution: {integrity: sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==} - engines: {node: '>=12'} - - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - - magic-string@0.16.0: - resolution: {integrity: sha512-c4BEos3y6G2qO0B9X7K0FVLOPT9uGrjYwYRLFmDqyl5YMboUviyecnXWp94fJTSMwPw2/sf+CEYt5AGpmklkkQ==} - - magic-string@0.30.10: - resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - - magic-string@0.30.8: - resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} - engines: {node: '>=12'} - - make-cancellable-promise@1.3.2: - resolution: {integrity: sha512-GCXh3bq/WuMbS+Ky4JBPW1hYTOU+znU+Q5m9Pu+pI8EoUqIHk9+tviOKC6/qhHh8C4/As3tzJ69IF32kdz85ww==} - - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - - make-event-props@1.6.2: - resolution: {integrity: sha512-iDwf7mA03WPiR8QxvcVHmVWEPfMY1RZXerDVNCRYW7dUr2ppH3J58Rwb39/WG39yTZdRSxr3x+2v22tvI0VEvA==} - - map-obj@2.0.0: - resolution: {integrity: sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==} - engines: {node: '>=4'} - - map-or-similar@1.5.0: - resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - - markdown-it@14.1.0: - resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} - hasBin: true - - markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - - marked@7.0.4: - resolution: {integrity: sha512-t8eP0dXRJMtMvBojtkcsA7n48BkauktUKzfkPSCq85ZMTJ0v76Rke4DYz01omYpPTUh4p/f7HePgRo3ebG8+QQ==} - engines: {node: '>= 16'} - hasBin: true - - md-to-react-email@5.0.2: - resolution: {integrity: sha512-x6kkpdzIzUhecda/yahltfEl53mH26QdWu4abUF9+S0Jgam8P//Ciro8cdhyMHnT5MQUJYrIbO6ORM2UxPiNNA==} - peerDependencies: - react: 18.x - - mdast-util-definitions@5.1.2: - resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} - - mdast-util-find-and-replace@2.2.2: - resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} - - mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} - - mdast-util-from-markdown@1.3.1: - resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} - - mdast-util-from-markdown@2.0.1: - resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} - - mdast-util-gfm-autolink-literal@1.0.3: - resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} - - mdast-util-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} - - mdast-util-gfm-footnote@1.0.2: - resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} - - mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} - - mdast-util-gfm-strikethrough@1.0.3: - resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} - - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - - mdast-util-gfm-table@1.0.7: - resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} - - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - - mdast-util-gfm-task-list-item@1.0.2: - resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} - - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - - mdast-util-gfm@2.0.2: - resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} - - mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} - - mdast-util-phrasing@3.0.1: - resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} - - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - - mdast-util-to-hast@12.3.0: - resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} - - mdast-util-to-hast@13.1.0: - resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} - - mdast-util-to-markdown@1.5.0: - resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} - - mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} - - mdast-util-to-string@3.2.0: - resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - mdurl@2.0.0: - resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} - - media-engine@1.0.3: - resolution: {integrity: sha512-aa5tG6sDoK+k70B9iEX1NeyfT8ObCKhNDs6lJVpwF6r8vhUfuKMslIcirq6HIUYuuUYLefcEQOn9bSBOvawtwg==} - - memoizerific@1.11.3: - resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} - - merge-refs@1.3.0: - resolution: {integrity: sha512-nqXPXbso+1dcKDpPCXvwZyJILz+vSLqGGOnDrYHQYE+B8n9JTCekVLC65AfCpR4ggVyA/45Y0iR9LDyS2iI+zA==} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - 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@1.1.0: - resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} - - micromark-core-commonmark@2.0.1: - resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} - - micromark-extension-gfm-autolink-literal@1.0.5: - resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} - - micromark-extension-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} - - micromark-extension-gfm-footnote@1.1.2: - resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} - - micromark-extension-gfm-footnote@2.0.0: - resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} - - micromark-extension-gfm-strikethrough@1.0.7: - resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} - - micromark-extension-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} - - micromark-extension-gfm-table@1.0.7: - resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} - - micromark-extension-gfm-table@2.0.0: - resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} - - micromark-extension-gfm-tagfilter@1.0.2: - resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} - - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - - micromark-extension-gfm-task-list-item@1.0.5: - resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} - - micromark-extension-gfm-task-list-item@2.0.1: - resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} - - micromark-extension-gfm@2.0.3: - resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} - - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - - micromark-factory-destination@1.1.0: - resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} - - micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} - - micromark-factory-label@1.1.0: - resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} - - micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} - - micromark-factory-space@1.1.0: - resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} - - micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} - - micromark-factory-title@1.1.0: - resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} - - micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} - - micromark-factory-whitespace@1.1.0: - resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} - - micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} - - micromark-util-character@1.2.0: - resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} - - micromark-util-character@2.1.0: - resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} - - micromark-util-chunked@1.1.0: - resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} - - micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} - - micromark-util-classify-character@1.1.0: - resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} - - micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} - - micromark-util-combine-extensions@1.1.0: - resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} - - micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} - - micromark-util-decode-numeric-character-reference@1.1.0: - resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} - - micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} - - micromark-util-decode-string@1.1.0: - resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} - - micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} - - micromark-util-encode@1.1.0: - resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} - - micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - - micromark-util-html-tag-name@1.2.0: - resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} - - micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - - micromark-util-normalize-identifier@1.1.0: - resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} - - micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} - - micromark-util-resolve-all@1.1.0: - resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} - - micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} - - micromark-util-sanitize-uri@1.2.0: - resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} - - micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - - micromark-util-subtokenize@1.1.0: - resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} - - micromark-util-subtokenize@2.0.1: - resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} - - micromark-util-symbol@1.1.0: - resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} - - micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - - micromark-util-types@1.1.0: - resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} - - micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - - micromark@3.2.0: - resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} - - micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@4.0.3: - resolution: {integrity: sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ==} - engines: {node: '>=16'} - hasBin: true - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - mimic-response@2.1.0: - resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} - engines: {node: '>=8'} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@8.0.4: - resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.1: - resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - - minipass@7.1.1: - resolution: {integrity: sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - mitt@3.0.1: - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mlly@1.7.1: - resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} - - module-details-from-path@1.0.3: - resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} - - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - - mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} - engines: {node: '>=10'} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - mute-stream@1.0.0: - resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nan@2.19.0: - resolution: {integrity: sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - nanoid@5.0.7: - resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} - engines: {node: ^18 || >=20} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - next-auth@4.24.7: - resolution: {integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==} - peerDependencies: - next: ^12.2.5 || ^13 || ^14 - nodemailer: ^6.6.5 - react: ^17.0.2 || ^18 - react-dom: ^17.0.2 || ^18 - peerDependenciesMeta: - nodemailer: - optional: true - - next-nprogress-bar@2.3.13: - resolution: {integrity: sha512-eJQDvPSUwZ2yRyNKqAH6xTFI4RtIFvs+qtY8essTtfooyaxLGmkanEO7vL83U166bullMtVpixD6FQk5SQkhMw==} - - next@14.1.4: - resolution: {integrity: sha512-1WTaXeSrUwlz/XcnhGTY7+8eiaFvdet5z9u3V2jb+Ek1vFo0VhHKSAIJvDWfQpttWjnyw14kBeq28TPq7bTeEQ==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - sass: - optional: true - - next@14.2.4: - resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - sass: - optional: true - - node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - - nodemailer@6.9.14: - resolution: {integrity: sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==} - engines: {node: '>=6.0.0'} - - nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - - nopt@7.2.1: - resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - normalize-svg-path@1.1.0: - resolution: {integrity: sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==} - - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - - nprogress@0.2.0: - resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} - - oauth@0.9.15: - resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@2.2.0: - resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} - engines: {node: '>= 6'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - - object-pairs@0.1.0: - resolution: {integrity: sha512-3ECr6K831I4xX/Mduxr9UC+HPOz/d6WKKYj9p4cmC8Lg8p7g8gitzsxNX5IWlSIgFWN/a4JgrJaoAMKn20oKwA==} - - object-values@1.0.0: - resolution: {integrity: sha512-+8hwcz/JnQ9EpLIXzN0Rs7DLsBpJNT/xYehtB/jU93tHYr5BFEO8E+JGQNOSqE7opVzz5cGksKFHt7uUJVLSjQ==} - engines: {node: '>=0.10.0'} - - oidc-token-hash@5.0.3: - resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} - engines: {node: ^10.13.0 || >=12.0.0} - - on-exit-leak-free@2.1.2: - resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} - engines: {node: '>=14.0.0'} - - 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@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - openapi3-ts@4.3.3: - resolution: {integrity: sha512-LKkzBGJcZ6wdvkKGMoSvpK+0cbN5Xc3XuYkJskO+vjEQWJgs1kgtyUk0pjf8KwPuysv323Er62F5P17XQl96Qg==} - - opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true - - openid-client@5.6.5: - resolution: {integrity: sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==} - - opentelemetry-instrumentation-fetch-node@1.2.3: - resolution: {integrity: sha512-Qb11T7KvoCevMaSeuamcLsAD+pZnavkhDnlVL0kRozfhl42dKG5Q3anUklAFKJZjY3twLR+BnRa6DlwwkIE/+A==} - engines: {node: '>18.0.0'} - peerDependencies: - '@opentelemetry/api': ^1.6.0 - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - - orderedmap@2.1.1: - resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} - - pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - - pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - - papaparse@5.4.1: - resolution: {integrity: sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-ms@3.0.0: - resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} - engines: {node: '>=12'} - - parse-ms@4.0.0: - resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} - engines: {node: '>=18'} - - parse-svg-path@0.1.2: - resolution: {integrity: sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==} - - parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - - parseley@0.12.1: - resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - 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-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path2d-polyfill@2.0.1: - resolution: {integrity: sha512-ad/3bsalbbWhmBo0D6FZ4RNMwsLsPpL6gnvhuSaU5Vm7b06Kr5ubSltQQ0T7YKsiJQO+g22zJ4dJKNTXIyOXtA==} - engines: {node: '>=8'} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - pdf-lib@1.17.1: - resolution: {integrity: sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==} - - pdfjs-dist@3.11.174: - resolution: {integrity: sha512-TdTZPf1trZ8/UFu5Cx/GXB7GZM30LT+wWUNfsi6Bq8ePLnb+woNKtDymI2mxZYBpMbonNFqKmiz684DIfnd8dA==} - engines: {node: '>=18'} - - peberminta@0.9.0: - resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - - pg-boss@9.0.3: - resolution: {integrity: sha512-cUWUiv3sr563yNy0nCZ25Tv5U0m59Y9MhX/flm0vTR012yeVCrqpfboaZP4xFOQPdWipMJpuu4g94HR0SncTgw==} - engines: {node: '>=16'} - - pg-cloudflare@1.1.1: - resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} - - pg-connection-string@2.6.4: - resolution: {integrity: sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==} - - pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} - - pg-pool@3.6.2: - resolution: {integrity: sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==} - peerDependencies: - pg: '>=8.0' - - pg-protocol@1.6.1: - resolution: {integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==} - - pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} - - pg@8.11.5: - resolution: {integrity: sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==} - engines: {node: '>= 8.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.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pino-abstract-transport@1.2.0: - resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} - - pino-pretty@11.2.2: - resolution: {integrity: sha512-2FnyGir8nAJAqD3srROdrF1J5BIcMT4nwj7hHSc60El6Uxlym00UbCCd8pYIterstVBFlMyF1yFV8XdGIPbj4A==} - hasBin: true - - pino-std-serializers@7.0.0: - resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - - pino@9.3.1: - resolution: {integrity: sha512-afSfrq/hUiW/MFmQcLEwV9Zh8Ry6MrMTOyBU53o/fc0gEl+1OZ/Fks/xQCM2nOC0C/OfDtQMnT2d8c3kpcfSzA==} - hasBin: true - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - pkg-types@1.1.3: - resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} - engines: {node: '>=4'} - - postcss-selector-parser@6.0.16: - resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.40: - resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} - engines: {node: ^10 || ^12 || >=14} - - postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} - - postgres-bytea@1.0.0: - resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} - 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'} - - preact-render-to-string@5.2.6: - resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==} - peerDependencies: - preact: '>=10' - - preact@10.22.0: - resolution: {integrity: sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - pretty-bytes@6.1.1: - resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} - engines: {node: ^14.13.1 || >=16.0.0} - - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - pretty-format@3.8.0: - resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} - - pretty-ms@8.0.0: - resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} - engines: {node: '>=14.16'} - - pretty-ms@9.0.0: - resolution: {integrity: sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==} - engines: {node: '>=18'} - - prism-react-renderer@2.1.0: - resolution: {integrity: sha512-I5cvXHjA1PVGbGm1MsWCpvBCRrYyxEri0MC7/JbfIfYfcXAxHyO5PaUjs3A8H5GW6kJcLhTHxxMaOZZpRZD2iQ==} - peerDependencies: - react: '>=16.0.0' - - prisma-extension-pagination@0.7.4: - resolution: {integrity: sha512-MmfyinDbcTucvttlO8UOrLqKW7DxlXe3ToiUZcLbvhGHHPewHKKWvucVnLHsYSzEIbEE1YfK/hsYdmpoRzkAAg==} - peerDependencies: - '@prisma/client': ^4.9.0 || ^5.0.0 - - prisma-json-types-generator@3.0.4: - resolution: {integrity: sha512-W53OpjBdGZxCsYv7MlUX69d7TPA9lEsQbDf9ddF0J93FX5EvaIRDMexdFPe0KTxiuquGvZTDJgeNXb3gIqEhJw==} - engines: {node: '>=14.0'} - hasBin: true - peerDependencies: - prisma: ^5.1 - typescript: ^5.1 - - prisma@5.14.0: - resolution: {integrity: sha512-gCNZco7y5XtjrnQYeDJTiVZmT/ncqCr5RY1/Cf8X2wgLRmyh9ayPAGBNziI4qEE4S6SxCH5omQLVo9lmURaJ/Q==} - engines: {node: '>=16.13'} - hasBin: true - - prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - - process-warning@3.0.0: - resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - - prosemirror-changeset@2.2.1: - resolution: {integrity: sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==} - - prosemirror-collab@1.3.1: - resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==} - - prosemirror-commands@1.5.2: - resolution: {integrity: sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==} - - prosemirror-dropcursor@1.8.1: - resolution: {integrity: sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==} - - prosemirror-gapcursor@1.3.2: - resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==} - - prosemirror-history@1.4.0: - resolution: {integrity: sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==} - - prosemirror-inputrules@1.4.0: - resolution: {integrity: sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==} - - prosemirror-keymap@1.2.2: - resolution: {integrity: sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==} - - prosemirror-markdown@1.12.0: - resolution: {integrity: sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==} - - prosemirror-menu@1.2.4: - resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==} - - prosemirror-model@1.21.0: - resolution: {integrity: sha512-zLpS1mVCZLA7VTp82P+BfMiYVPcX1/z0Mf3gsjKZtzMWubwn2pN7CceMV0DycjlgE5JeXPR7UF4hJPbBV98oWA==} - - prosemirror-schema-basic@1.2.2: - resolution: {integrity: sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==} - - prosemirror-schema-list@1.3.0: - resolution: {integrity: sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==} - - prosemirror-state@1.4.3: - resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==} - - prosemirror-tables@1.3.7: - resolution: {integrity: sha512-oEwX1wrziuxMtwFvdDWSFHVUWrFJWt929kVVfHvtTi8yvw+5ppxjXZkMG/fuTdFo+3DXyIPSKfid+Be1npKXDA==} - - prosemirror-trailing-node@2.0.8: - resolution: {integrity: sha512-ujRYhSuhQb1Jsarh1IHqb2KoSnRiD7wAMDGucP35DN7j5af6X7B18PfdPIrbwsPTqIAj0fyOvxbuPsWhNvylmA==} - peerDependencies: - prosemirror-model: ^1.19.0 - prosemirror-state: ^1.4.2 - prosemirror-view: ^1.31.2 - - prosemirror-transform@1.9.0: - resolution: {integrity: sha512-5UXkr1LIRx3jmpXXNKDhv8OyAOeLTGuXNwdVfg8x27uASna/wQkr9p6fD3eupGOi4PLJfbezxTyi/7fSJypXHg==} - - prosemirror-view@1.33.6: - resolution: {integrity: sha512-zRLUNgLIQfd8IfGprsXxWTjdA8xEAFJe8cDNrOptj6Mop9sj+BMeVbJvceyAYCm5G2dOdT2prctH7K9dfnpIMw==} - - proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - - proxy-compare@2.6.0: - resolution: {integrity: sha512-8xuCeM3l8yqdmbPoYeLbrAXCBWu19XEYc5/F28f5qOaoAIMyfmBUkl5axiK+x9olUvRlcekvnm98AP9RDngOIw==} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - - punycode.js@2.3.1: - resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} - engines: {node: '>=6'} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - pushmodal@1.0.4: - resolution: {integrity: sha512-HzqhHHdwuQxb7BJ3gkOKXRlRvIRq0oWJlG3LtrWxtgMIOehkRma6uAv89ZkvJem6fdEsPZkPkqXZ9gWUJ3IlVQ==} - peerDependencies: - '@radix-ui/react-dialog': ^1.0.0 - react: ^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 - react-dom: ^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 - - pvtsutils@1.3.5: - resolution: {integrity: sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==} - - pvutils@1.1.3: - resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} - engines: {node: '>=6.0.0'} - - qs@6.12.1: - resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} - engines: {node: '>=0.6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} - - quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - - radix-vue@1.8.5: - resolution: {integrity: sha512-aWRa/tc5EHS2U4h8YTovRtwSMt+Sbk4QRekNTpkshCWlq353mpGBsp0ME/4seOxWn7JKze8NA3pDx/AQuH2tMw==} - peerDependencies: - vue: '>= 3.2.0' - - ramda@0.29.0: - resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - react-day-picker@8.10.1: - resolution: {integrity: sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==} - peerDependencies: - date-fns: ^2.28.0 || ^3.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - react-dom@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - - react-dropzone@14.2.3: - resolution: {integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==} - engines: {node: '>= 10.13'} - peerDependencies: - react: '>= 16.8 || 18.0.0' - - react-email@2.1.6: - resolution: {integrity: sha512-BtR9VI1CMq4953wfiBmzupKlWcRThaWG2dDgl1vWAllK3tNNmJNerwY4VlmASRDQZE3LpLXU3+lf8N/VAKdbZQ==} - engines: {node: '>=18.0.0'} - hasBin: true - - react-hook-form@7.52.1: - resolution: {integrity: sha512-uNKIhaoICJ5KQALYZ4TOaOLElyM+xipord+Ha3crEFhTntdLvWZqVY49Wqd/0GiVCA/f9NjemLeiNPjG7Hpurg==} - engines: {node: '>=12.22.0'} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 || ^19 - - react-icons@4.12.0: - resolution: {integrity: sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==} - peerDependencies: - react: '*' - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - - react-number-format@5.3.4: - resolution: {integrity: sha512-2hHN5mbLuCDUx19bv0Q8wet67QqYK6xmtLQeY5xx+h7UXiMmRtaCwqko4mMPoKXLc6xAzwRrutg8XbTRlsfjRg==} - peerDependencies: - react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - - react-pdf@8.0.2: - resolution: {integrity: sha512-C0PFC+j9vmEIZ82Iq0c85xUWkgsZTUS05syqOk8NC+7PAanyWlVi/ImYkGQe27zYAlBA6IidRYEt1DAAXKq1Ow==} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - 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 - peerDependenciesMeta: - '@types/react': - optional: true - - react-promise-suspense@0.3.4: - resolution: {integrity: sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==} - - react-remove-scroll-bar@2.3.6: - resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.10: - resolution: {integrity: sha512-m3zvBRANPBw3qxVVjEIPEQinkcwlFZ4qyomuWVpNJdv4c6MvHfXV0C3L9Jx5rr3HeBHKNRX+1jreB5QloDIJjA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.7: - resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-smooth@4.0.1: - resolution: {integrity: sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - react-style-singleton@2.2.1: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-textarea-autosize@8.5.3: - resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==} - engines: {node: '>=10'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - react-transition-group@4.4.5: - resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} - peerDependencies: - react: '>=16.6.0' - react-dom: '>=16.6.0' - - react-transition-state@2.1.1: - resolution: {integrity: sha512-kQx5g1FVu9knoz1T1WkapjUgFz08qQ/g1OmuWGi3/AoEFfS0kStxrPlZx81urjCXdz2d+1DqLpU6TyLW/Ro04Q==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readable-stream@4.5.2: - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - real-require@0.2.0: - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} - engines: {node: '>= 12.13.0'} - - recharts-scale@0.4.5: - resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} - - recharts@2.12.7: - resolution: {integrity: sha512-hlLJMhPQfv4/3NBSAyq3gzGg4h2v69RJh6KU7b3pXYNNAELs9kEoXOjbkxdXpALqKBoVmVptGfLpxdaVYqjmXQ==} - engines: {node: '>=14'} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 - - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - rehype-external-links@3.0.0: - resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} - - rehype-format@5.0.0: - resolution: {integrity: sha512-kM4II8krCHmUhxrlvzFSptvaWh280Fr7UGNJU5DCMuvmAwGCNmGfi9CvFAQK6JDjsNoRMWQStglK3zKJH685Wg==} - - rehype-highlight@7.0.0: - resolution: {integrity: sha512-QtobgRgYoQaK6p1eSr2SD1i61f7bjF2kZHAQHxeCHAuJf7ZUDMvQ7owDq9YTkmar5m5TSUol+2D3bp3KfJf/oA==} - - rehype-minify-whitespace@5.0.1: - resolution: {integrity: sha512-PPp4lWJiBPlePI/dv1BeYktbwkfgXkrK59MUa+tYbMPgleod+4DvFK2PLU0O0O60/xuhHfiR9GUIUlXTU8sRIQ==} - - rehype-minify-whitespace@6.0.0: - resolution: {integrity: sha512-i9It4YHR0Sf3GsnlR5jFUKXRr9oayvEk9GKQUkwZv6hs70OH9q3OCZrq9PpLvIGKt3W+JxBOxCidNVpH/6rWdA==} - - rehype-parse@8.0.5: - resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==} - - rehype-parse@9.0.0: - resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} - - rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - - rehype-remark@9.1.2: - resolution: {integrity: sha512-c0fG3/CrJ95zAQ07xqHSkdpZybwdsY7X5dNWvgL2XqLKZuqmG3+vk6kP/4miCnp+R+x/0uKKRSpfXb9aGR8Z5w==} - - rehype-sanitize@6.0.0: - resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} - - rehype-stringify@10.0.0: - resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} - - rehype-stringify@9.0.4: - resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==} - - remark-gfm@3.0.1: - resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} - - remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} - - remark-parse@10.0.2: - resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-rehype@10.1.0: - resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} - - remark-rehype@11.1.0: - resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} - - remark-stringify@10.0.3: - resolution: {integrity: sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==} - - 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'} - - require-in-the-middle@7.3.0: - resolution: {integrity: sha512-nQFEv9gRw6SJAwWD2LrL0NmQvAcO7FBwJbwmr2ttPAacfy0xuiOjE5zt+zM4xDyuyvUaxBi/9gb2SoCyNEVJcw==} - engines: {node: '>=8.6.0'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - - restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - restructure@3.0.1: - resolution: {integrity: sha512-6neDpI/yE9eogQo22qmWwKIA9wFPRyYjQleDEh6zaNAf2ZPqLJYUvNBJBWEWNoBlCeQMQkvIOe2YI/K2GOag+g==} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - reverse-arguments@1.0.0: - resolution: {integrity: sha512-/x8uIPdTafBqakK0TmPNJzgkLP+3H+yxpUJhCQHsLBg1rYEVNR2D8BRYNWQhVBjyOd7oo1dZRVzIkwMY2oqfYQ==} - - rfdc@1.3.1: - resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - - rollup@4.18.0: - resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - rope-sequence@1.3.4: - resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} - - run-async@3.0.0: - resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} - engines: {node: '>=0.12.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} - engines: {node: '>=10'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - scheduler@0.17.0: - resolution: {integrity: sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA==} - - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - - secure-json-parse@2.7.0: - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - - selderee@0.11.0: - resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} - engines: {node: '>=10'} - hasBin: true - - serialize-error@8.1.0: - resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==} - engines: {node: '>=10'} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - sharp@0.33.4: - resolution: {integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==} - engines: {libvips: '>=8.15.2', 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-word@1.0.1: - resolution: {integrity: sha512-lT297f1WLAdq0A4O+AknIFRP6kkiI3s8C913eJ0XqBxJbZPGWUNkRQk2u8zk4bEAjUJ5i+fSLwB6z1HzeT+DEg==} - - shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - - shimmer@1.2.1: - resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} - - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - - 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'} - - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - - simple-get@3.1.1: - resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} - - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} - - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - - slice-ansi@7.1.0: - resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} - engines: {node: '>=18'} - - smol-toml@1.1.4: - resolution: {integrity: sha512-Y0OT8HezWsTNeEOSVxDnKOW/AyNXHQ4BwJNbAXlLTF5wWsBvrcHhIkE5Rf8kQMLmgf7nDX3PVOlgC6/Aiggu3Q==} - engines: {node: '>= 18', pnpm: '>= 8'} - - socket.io-adapter@2.5.5: - resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} - - socket.io-client@4.7.3: - resolution: {integrity: sha512-nU+ywttCyBitXIl9Xe0RSEfek4LneYkJxCeNnKCuhwoH4jGXO1ipIUw/VA/+Vvv2G1MTym11fzFC0SxkrcfXDw==} - engines: {node: '>=10.0.0'} - - socket.io-parser@4.2.4: - resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} - engines: {node: '>=10.0.0'} - - socket.io@4.7.3: - resolution: {integrity: sha512-SE+UIQXBQE+GPG2oszWMlsEmWtHVqw/h1VrYJGK5/MC7CH5p58N448HwIrtREcvR4jfdOJAY4ieQfxMr55qbbw==} - engines: {node: '>=10.2.0'} - - sonic-boom@4.0.1: - resolution: {integrity: sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==} - - sonner@1.3.1: - resolution: {integrity: sha512-+rOAO56b2eI3q5BtgljERSn2umRk63KFIvgb2ohbZ5X+Eb5u+a/7/0ZgswYqgBMg8dyl7n6OXd9KasA8QF9ToA==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - sonner@1.5.0: - resolution: {integrity: sha512-FBjhG/gnnbN6FY0jaNnqZOMmB73R+5IiyYAw8yBj7L54ER7HB3fOSE5OFiQiE2iXWxeXKvg6fIP4LtVppHEdJA==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - 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'} - - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string-width@7.1.0: - resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} - engines: {node: '>=18'} - - string.fromcodepoint@0.2.1: - resolution: {integrity: sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==} - - 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@3.3.0: - resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} - engines: {node: '>=4'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - strip-json-comments@5.0.1: - resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} - engines: {node: '>=14.16'} - - strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - - stripe@15.8.0: - resolution: {integrity: sha512-7eEPMgehd1I16cXeP7Rcn/JKkPWIadB9vGIeE+vbCzQXaY5R95AoNmkZx0vmlu1H4QIDs7j1pYIKPRm9Dr4LKg==} - engines: {node: '>=12.*'} - - strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - - style-mod@4.1.2: - resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} - - styled-jsx@5.1.1: - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - summary@2.1.0: - resolution: {integrity: sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==} - - superjson@2.2.1: - resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} - engines: {node: '>=16'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - 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'} - - svg-arc-to-cubic-bezier@3.2.0: - resolution: {integrity: sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==} - - tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - - tailwind-merge@1.14.0: - resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==} - - tailwind-merge@2.2.0: - resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} - - tailwind-merge@2.4.0: - resolution: {integrity: sha512-49AwoOQNKdqKPd9CViyH5wJoSKsCDjUlzL8DxuGp3P1FsGY36NJDAa18jLZcaHAUUuTj+JB8IAo8zWgBNvBF7A==} - - tailwindcss-animate@1.0.7: - resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' - - tailwindcss@3.4.0: - resolution: {integrity: sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==} - engines: {node: '>=14.0.0'} - hasBin: true - - tailwindcss@3.4.3: - resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} - engines: {node: '>=14.0.0'} - hasBin: true - - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - - telejson@7.2.0: - resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} - - terser-webpack-plugin@5.3.10: - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - 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.31.1: - resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==} - 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==} - - thread-stream@3.0.2: - resolution: {integrity: sha512-cBL4xF2A3lSINV4rD5tyqnKH4z/TgWPvT+NaVhJDSwK962oo/Ye7cHSMbDzwcu7tAE1SfU6Q4XtV6Hucmi6Hlw==} - - tiny-inflate@1.0.3: - resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} - - tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - - tinybench@2.8.0: - resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} - - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} - - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - - tippy.js@6.3.7: - resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - to-no-case@1.0.2: - resolution: {integrity: sha512-Z3g735FxuZY8rodxV4gH7LxClE4H0hTIyHNIHdk+vpQxjLm0cwnKXq/OFVZ76SOQmto7txVcwSCwkU5kqp+FKg==} - - to-pascal-case@1.0.0: - resolution: {integrity: sha512-QGMWHqM6xPrcQW57S23c5/3BbYb0Tbe9p+ur98ckRnGDwD4wbbtDiYI38CfmMKNB5Iv0REjs5SNDntTwvDxzZA==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - to-space-case@1.0.0: - resolution: {integrity: sha512-rLdvwXZ39VOn1IxGL3V6ZstoTbwLRckQmn/U8ZDLuWwIXNpuZDhQ3AiRUlhTbOXFVE9C+dR51wM0CBDhk31VcA==} - - totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - trim-trailing-lines@2.1.0: - resolution: {integrity: sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==} - - trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - - ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} - engines: {node: '>=6.10'} - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - ts-pattern@5.3.1: - resolution: {integrity: sha512-1RUMKa8jYQdNfmnK4jyzBK3/PS/tnjcZ1CW0v1vWDeYe5RBklc/nquw03MEoB66hVBm4BnlCfmOqDVxHyT1DpA==} - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - tsx@4.10.4: - resolution: {integrity: sha512-Gtg9qnZWNqC/OtcgiXfoAUdAKx3/cgKOYvEocAsv+m21MV/eKpV/WUjRXe6/sDCaGBl2/v8S6v29BpUnGMCX5A==} - engines: {node: '>=18.0.0'} - hasBin: true - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - - type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - - type-fest@4.18.2: - resolution: {integrity: sha512-+suCYpfJLAe4OXS6+PPXjW3urOS4IoP9waSiLuXfLgqZODKw/aWwASvzqE886wA0kQgGy0mIWyhd87VpqIy6Xg==} - engines: {node: '>=16'} - - typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} - engines: {node: '>=14.17'} - hasBin: true - - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true - - ua-parser-js@1.0.37: - resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} - - uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - - ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - unescape-js@1.1.4: - resolution: {integrity: sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g==} - - unhead@1.9.14: - resolution: {integrity: sha512-npdYu6CfasX/IhB8OO27e3u4A1zhAY77T1FwWDIIUaJvugYTte5hjsolPX0/fG5jmjnWTFTuIkmbCSfj7bfIkg==} - - unicode-properties@1.4.1: - resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} - - unicode-trie@2.0.0: - resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} - - unified@10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} - - unified@11.0.4: - resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} - - unist-util-find-after@4.0.1: - resolution: {integrity: sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==} - - unist-util-find-after@5.0.0: - resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} - - unist-util-generated@2.0.1: - resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} - - unist-util-is@5.2.1: - resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} - - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - - unist-util-position@4.0.4: - resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-stringify-position@3.0.3: - resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@5.1.3: - resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} - - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - - unist-util-visit@4.1.2: - resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - unplugin@1.0.1: - resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==} - - update-browserslist-db@1.0.16: - resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - use-callback-ref@1.3.2: - resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-composed-ref@1.3.0: - resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - use-isomorphic-layout-effect@1.1.2: - resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-latest@1.2.1: - resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-prefers-color-scheme@1.1.3: - resolution: {integrity: sha512-ZRgDfb5BFLum/Sud4SpZ+d1YcV+lRbsupw0qQ/rGy5kGrpE3KMUQgEQOKiQQSa4Wslex46n5fKFO+9FGMTosUQ==} - engines: {node: '>=8', npm: '>=5'} - peerDependencies: - react: '>= 16.8.0' - - use-sidecar@1.1.2: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-sync-external-store@1.2.2: - resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - usehooks-ts@3.1.0: - resolution: {integrity: sha512-bBIa7yUyPhE1BCc0GmR96VU/15l/9gP1Ch5mYdLcFBaFGQsdmXkvjV0TtOqW1yUd6VjIwDunm+flSciCQXujiw==} - engines: {node: '>=16.15.0'} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - - uvu@0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} - hasBin: true - - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - vfile-location@4.1.0: - resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} - - vfile-location@5.0.2: - resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} - - vfile-message@3.1.4: - resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} - - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@5.3.7: - resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - - vfile@6.0.1: - resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - - victory-vendor@36.9.2: - resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} - - vite-compatible-readable-stream@3.6.1: - resolution: {integrity: sha512-t20zYkrSf868+j/p31cRIGN28Phrjm3nRSLR2fyc2tiWi4cZGVdv68yNlwnIINTkMTmPoMiSlc0OadaO7DXZaQ==} - engines: {node: '>= 6'} - - vite-node@1.6.0: - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite@5.3.3: - resolution: {integrity: sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vitest@1.6.0: - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - vlq@0.2.3: - resolution: {integrity: sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==} - - vue-demi@0.14.8: - resolution: {integrity: sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==} - engines: {node: '>=12'} - hasBin: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - - vue-router@4.4.0: - resolution: {integrity: sha512-HB+t2p611aIZraV2aPSRNXf0Z/oLZFrlygJm+sZbdJaW6lcFqEDQwnzUBXn+DApw+/QzDU/I9TeWx9izEjTmsA==} - peerDependencies: - vue: ^3.2.0 - - vue-sonner@1.1.3: - resolution: {integrity: sha512-6I+5GNobKvE2nR5MPhO+T59d4j2LXRQoc/ZCmGtCoBWKDQr5nzSqjFaOOdPysHFI2p42wNLhQMafd0N540UW9Q==} - - vue@3.4.30: - resolution: {integrity: sha512-NcxtKCwkdf1zPsr7Y8+QlDBCGqxvjLXF2EX+yi76rV5rrz90Y6gK1cq0olIhdWGgrlhs9ElHuhi9t3+W5sG5Xw==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - w3c-keyname@2.2.8: - resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} - - warning@4.0.3: - resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} - - watchpack@2.4.1: - resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} - engines: {node: '>=10.13.0'} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - - web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - - web-streams-polyfill@4.0.0-beta.3: - resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} - engines: {node: '>= 14'} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - webpack-bundle-analyzer@4.10.1: - resolution: {integrity: sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==} - engines: {node: '>= 10.13.0'} - hasBin: true - - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - - webpack-virtual-modules@0.5.0: - resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} - - webpack@5.92.0: - resolution: {integrity: sha512-Bsw2X39MYIgxouNATyVpCNVWBCuUwDgWtN78g6lSdPJRLaQ/PUVm/oXcaRAyY/sMFoKFQrsPeqvTizWtq7QPCA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - - 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'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} - engines: {node: '>=18'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - 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 - - xmlhttprequest-ssl@2.0.0: - resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} - engines: {node: '>=0.4.0'} - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - - y-codemirror.next@0.3.5: - resolution: {integrity: sha512-VluNu3e5HfEXybnypnsGwKAj+fKLd4iAnR7JuX1Sfyydmn1jCBS5wwEL/uS04Ch2ib0DnMAOF6ZRR/8kK3wyGw==} - peerDependencies: - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 - yjs: ^13.5.6 - - y-prosemirror@1.2.1: - resolution: {integrity: sha512-czMBfB1eL2awqmOSxQM8cS/fsUOGE6fjvyPLInrh4crPxFiw67wDpwIW+EGBYKRa04sYbS0ScGj7ZgvWuDrmBQ==} - peerDependencies: - prosemirror-model: ^1.7.1 - prosemirror-state: ^1.2.3 - prosemirror-view: ^1.9.10 - y-protocols: ^1.0.1 - yjs: ^13.5.38 - - y-protocols@1.0.6: - resolution: {integrity: sha512-vHRF2L6iT3rwj1jub/K5tYcTT/mEYDUppgNPXwp8fmLpui9f7Yeq3OEtTLVF012j39QnV+KEQpNqoN7CWU7Y9Q==} - engines: {node: '>=16.0.0', npm: '>=8.0.0'} - peerDependencies: - yjs: ^13.0.0 - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@2.3.4: - resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} - engines: {node: '>= 14'} - - yaml@2.4.2: - resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} - engines: {node: '>= 14'} - hasBin: true - - yaml@2.4.5: - resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} - engines: {node: '>= 14'} - hasBin: true - - 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'} - - yjs@13.6.15: - resolution: {integrity: sha512-moFv4uNYhp8BFxIk3AkpoAnnjts7gwdpiG8RtyFiKbMtxKCS0zVZ5wPaaGpwC3V2N/K8TK8MwtSI3+WO9CHWjQ==} - engines: {node: '>=16.0.0', npm: '>=8.0.0'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} - engines: {node: '>=12.20'} - - yoga-layout@2.0.1: - resolution: {integrity: sha512-tT/oChyDXelLo2A+UVnlW9GU7CsvFMaEnd9kVFsaiCQonFAXd3xrHhkLYu+suwwosrAEQ746xBU+HvYtm1Zs2Q==} - - zhead@2.2.4: - resolution: {integrity: sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==} - - zod-validation-error@3.3.0: - resolution: {integrity: sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw==} - engines: {node: '>=18.0.0'} - peerDependencies: - zod: ^3.18.0 - - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@adobe/css-tools@4.4.0': {} - - '@alloc/quick-lru@5.2.0': {} - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@ark-ui/anatomy@2.3.1(@internationalized/date@3.5.2)': - dependencies: - '@zag-js/accordion': 0.38.0 - '@zag-js/anatomy': 0.38.0 - '@zag-js/avatar': 0.38.0 - '@zag-js/carousel': 0.38.0 - '@zag-js/checkbox': 0.38.0 - '@zag-js/clipboard': 0.38.0 - '@zag-js/collapsible': 0.38.0 - '@zag-js/color-picker': 0.38.0 - '@zag-js/color-utils': 0.38.0 - '@zag-js/combobox': 0.38.0 - '@zag-js/date-picker': 0.38.0 - '@zag-js/date-utils': 0.38.0(@internationalized/date@3.5.2) - '@zag-js/dialog': 0.38.0 - '@zag-js/editable': 0.38.0 - '@zag-js/file-upload': 0.38.0 - '@zag-js/hover-card': 0.38.0 - '@zag-js/menu': 0.38.0 - '@zag-js/number-input': 0.38.0 - '@zag-js/pagination': 0.38.0 - '@zag-js/pin-input': 0.38.0 - '@zag-js/popover': 0.38.0 - '@zag-js/presence': 0.38.0 - '@zag-js/progress': 0.38.0 - '@zag-js/radio-group': 0.38.0 - '@zag-js/rating-group': 0.38.0 - '@zag-js/select': 0.38.0 - '@zag-js/slider': 0.38.0 - '@zag-js/splitter': 0.38.0 - '@zag-js/switch': 0.38.0 - '@zag-js/tabs': 0.38.0 - '@zag-js/tags-input': 0.38.0 - '@zag-js/toast': 0.38.0 - '@zag-js/toggle-group': 0.38.0 - '@zag-js/tooltip': 0.38.0 - '@zag-js/tree-view': 0.38.0 - transitivePeerDependencies: - - '@internationalized/date' - - '@ark-ui/react@2.2.3(@internationalized/date@3.5.2)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@ark-ui/anatomy': 2.3.1(@internationalized/date@3.5.2) - '@zag-js/accordion': 0.38.0 - '@zag-js/avatar': 0.38.0 - '@zag-js/carousel': 0.38.0 - '@zag-js/checkbox': 0.38.0 - '@zag-js/clipboard': 0.38.0 - '@zag-js/collapsible': 0.38.0 - '@zag-js/color-picker': 0.38.0 - '@zag-js/color-utils': 0.38.0 - '@zag-js/combobox': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/date-picker': 0.38.0 - '@zag-js/date-utils': 0.38.0(@internationalized/date@3.5.2) - '@zag-js/dialog': 0.38.0 - '@zag-js/editable': 0.38.0 - '@zag-js/file-upload': 0.38.0 - '@zag-js/hover-card': 0.38.0 - '@zag-js/i18n-utils': 0.38.0 - '@zag-js/menu': 0.38.0 - '@zag-js/number-input': 0.38.0 - '@zag-js/pagination': 0.38.0 - '@zag-js/pin-input': 0.38.0 - '@zag-js/popover': 0.38.0 - '@zag-js/presence': 0.38.0 - '@zag-js/progress': 0.38.0 - '@zag-js/radio-group': 0.38.0 - '@zag-js/rating-group': 0.38.0 - '@zag-js/react': 0.38.0(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@zag-js/select': 0.38.0 - '@zag-js/slider': 0.38.0 - '@zag-js/splitter': 0.38.0 - '@zag-js/switch': 0.38.0 - '@zag-js/tabs': 0.38.0 - '@zag-js/tags-input': 0.38.0 - '@zag-js/toast': 0.38.0 - '@zag-js/toggle-group': 0.38.0 - '@zag-js/tooltip': 0.38.0 - '@zag-js/tree-view': 0.38.0 - '@zag-js/types': 0.38.0 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - transitivePeerDependencies: - - '@internationalized/date' - - '@asteasolutions/zod-to-openapi@7.1.1(zod@3.23.8)': - dependencies: - openapi3-ts: 4.3.3 - zod: 3.23.8 - - '@aws-crypto/crc32@3.0.0': - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 - tslib: 1.14.1 - - '@aws-crypto/crc32c@3.0.0': - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 - tslib: 1.14.1 - - '@aws-crypto/ie11-detection@3.0.0': - dependencies: - tslib: 1.14.1 - - '@aws-crypto/sha1-browser@3.0.0': - dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-locate-window': 3.568.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - - '@aws-crypto/sha256-browser@3.0.0': - dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-locate-window': 3.568.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - - '@aws-crypto/sha256-js@3.0.0': - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.577.0 - tslib: 1.14.1 - - '@aws-crypto/supports-web-crypto@3.0.0': - dependencies: - tslib: 1.14.1 - - '@aws-crypto/util@3.0.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - - '@aws-sdk/client-s3@3.577.0': - dependencies: - '@aws-crypto/sha1-browser': 3.0.0 - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.577.0(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/client-sts': 3.577.0 - '@aws-sdk/core': 3.576.0 - '@aws-sdk/credential-provider-node': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0(@aws-sdk/client-sts@3.577.0))(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/middleware-bucket-endpoint': 3.577.0 - '@aws-sdk/middleware-expect-continue': 3.577.0 - '@aws-sdk/middleware-flexible-checksums': 3.577.0 - '@aws-sdk/middleware-host-header': 3.577.0 - '@aws-sdk/middleware-location-constraint': 3.577.0 - '@aws-sdk/middleware-logger': 3.577.0 - '@aws-sdk/middleware-recursion-detection': 3.577.0 - '@aws-sdk/middleware-sdk-s3': 3.577.0 - '@aws-sdk/middleware-signing': 3.577.0 - '@aws-sdk/middleware-ssec': 3.577.0 - '@aws-sdk/middleware-user-agent': 3.577.0 - '@aws-sdk/region-config-resolver': 3.577.0 - '@aws-sdk/signature-v4-multi-region': 3.577.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.577.0 - '@aws-sdk/util-user-agent-browser': 3.577.0 - '@aws-sdk/util-user-agent-node': 3.577.0 - '@aws-sdk/xml-builder': 3.575.0 - '@smithy/config-resolver': 3.0.0 - '@smithy/core': 2.0.1 - '@smithy/eventstream-serde-browser': 3.0.0 - '@smithy/eventstream-serde-config-resolver': 3.0.0 - '@smithy/eventstream-serde-node': 3.0.0 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/hash-blob-browser': 3.0.0 - '@smithy/hash-node': 3.0.0 - '@smithy/hash-stream-node': 3.0.0 - '@smithy/invalid-dependency': 3.0.0 - '@smithy/md5-js': 3.0.0 - '@smithy/middleware-content-length': 3.0.0 - '@smithy/middleware-endpoint': 3.0.0 - '@smithy/middleware-retry': 3.0.1 - '@smithy/middleware-serde': 3.0.0 - '@smithy/middleware-stack': 3.0.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/node-http-handler': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.1 - '@smithy/util-defaults-mode-node': 3.0.1 - '@smithy/util-endpoints': 2.0.0 - '@smithy/util-retry': 3.0.0 - '@smithy/util-stream': 3.0.1 - '@smithy/util-utf8': 3.0.0 - '@smithy/util-waiter': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sso-oidc@3.577.0(@aws-sdk/client-sts@3.577.0)': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.577.0 - '@aws-sdk/core': 3.576.0 - '@aws-sdk/credential-provider-node': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0(@aws-sdk/client-sts@3.577.0))(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/middleware-host-header': 3.577.0 - '@aws-sdk/middleware-logger': 3.577.0 - '@aws-sdk/middleware-recursion-detection': 3.577.0 - '@aws-sdk/middleware-user-agent': 3.577.0 - '@aws-sdk/region-config-resolver': 3.577.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.577.0 - '@aws-sdk/util-user-agent-browser': 3.577.0 - '@aws-sdk/util-user-agent-node': 3.577.0 - '@smithy/config-resolver': 3.0.0 - '@smithy/core': 2.0.1 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/hash-node': 3.0.0 - '@smithy/invalid-dependency': 3.0.0 - '@smithy/middleware-content-length': 3.0.0 - '@smithy/middleware-endpoint': 3.0.0 - '@smithy/middleware-retry': 3.0.1 - '@smithy/middleware-serde': 3.0.0 - '@smithy/middleware-stack': 3.0.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/node-http-handler': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.1 - '@smithy/util-defaults-mode-node': 3.0.1 - '@smithy/util-endpoints': 2.0.0 - '@smithy/util-middleware': 3.0.0 - '@smithy/util-retry': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/client-sts' - - aws-crt - - '@aws-sdk/client-sso@3.577.0': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.576.0 - '@aws-sdk/middleware-host-header': 3.577.0 - '@aws-sdk/middleware-logger': 3.577.0 - '@aws-sdk/middleware-recursion-detection': 3.577.0 - '@aws-sdk/middleware-user-agent': 3.577.0 - '@aws-sdk/region-config-resolver': 3.577.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.577.0 - '@aws-sdk/util-user-agent-browser': 3.577.0 - '@aws-sdk/util-user-agent-node': 3.577.0 - '@smithy/config-resolver': 3.0.0 - '@smithy/core': 2.0.1 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/hash-node': 3.0.0 - '@smithy/invalid-dependency': 3.0.0 - '@smithy/middleware-content-length': 3.0.0 - '@smithy/middleware-endpoint': 3.0.0 - '@smithy/middleware-retry': 3.0.1 - '@smithy/middleware-serde': 3.0.0 - '@smithy/middleware-stack': 3.0.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/node-http-handler': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.1 - '@smithy/util-defaults-mode-node': 3.0.1 - '@smithy/util-endpoints': 2.0.0 - '@smithy/util-middleware': 3.0.0 - '@smithy/util-retry': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sts@3.577.0': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.577.0(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/core': 3.576.0 - '@aws-sdk/credential-provider-node': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0(@aws-sdk/client-sts@3.577.0))(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/middleware-host-header': 3.577.0 - '@aws-sdk/middleware-logger': 3.577.0 - '@aws-sdk/middleware-recursion-detection': 3.577.0 - '@aws-sdk/middleware-user-agent': 3.577.0 - '@aws-sdk/region-config-resolver': 3.577.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.577.0 - '@aws-sdk/util-user-agent-browser': 3.577.0 - '@aws-sdk/util-user-agent-node': 3.577.0 - '@smithy/config-resolver': 3.0.0 - '@smithy/core': 2.0.1 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/hash-node': 3.0.0 - '@smithy/invalid-dependency': 3.0.0 - '@smithy/middleware-content-length': 3.0.0 - '@smithy/middleware-endpoint': 3.0.0 - '@smithy/middleware-retry': 3.0.1 - '@smithy/middleware-serde': 3.0.0 - '@smithy/middleware-stack': 3.0.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/node-http-handler': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.1 - '@smithy/util-defaults-mode-node': 3.0.1 - '@smithy/util-endpoints': 2.0.0 - '@smithy/util-middleware': 3.0.0 - '@smithy/util-retry': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/core@3.576.0': - dependencies: - '@smithy/core': 2.0.1 - '@smithy/protocol-http': 4.0.0 - '@smithy/signature-v4': 3.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - fast-xml-parser: 4.2.5 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-env@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-http@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/node-http-handler': 3.0.0 - '@smithy/property-provider': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/util-stream': 3.0.1 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-ini@3.577.0(@aws-sdk/client-sso-oidc@3.577.0(@aws-sdk/client-sts@3.577.0))(@aws-sdk/client-sts@3.577.0)': - dependencies: - '@aws-sdk/client-sts': 3.577.0 - '@aws-sdk/credential-provider-env': 3.577.0 - '@aws-sdk/credential-provider-process': 3.577.0 - '@aws-sdk/credential-provider-sso': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0(@aws-sdk/client-sts@3.577.0)) - '@aws-sdk/credential-provider-web-identity': 3.577.0(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/types': 3.577.0 - '@smithy/credential-provider-imds': 3.0.0 - '@smithy/property-provider': 3.0.0 - '@smithy/shared-ini-file-loader': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - - '@aws-sdk/credential-provider-node@3.577.0(@aws-sdk/client-sso-oidc@3.577.0(@aws-sdk/client-sts@3.577.0))(@aws-sdk/client-sts@3.577.0)': - dependencies: - '@aws-sdk/credential-provider-env': 3.577.0 - '@aws-sdk/credential-provider-http': 3.577.0 - '@aws-sdk/credential-provider-ini': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0(@aws-sdk/client-sts@3.577.0))(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/credential-provider-process': 3.577.0 - '@aws-sdk/credential-provider-sso': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0(@aws-sdk/client-sts@3.577.0)) - '@aws-sdk/credential-provider-web-identity': 3.577.0(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/types': 3.577.0 - '@smithy/credential-provider-imds': 3.0.0 - '@smithy/property-provider': 3.0.0 - '@smithy/shared-ini-file-loader': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - '@aws-sdk/client-sts' - - aws-crt - - '@aws-sdk/credential-provider-process@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.0.0 - '@smithy/shared-ini-file-loader': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-sso@3.577.0(@aws-sdk/client-sso-oidc@3.577.0(@aws-sdk/client-sts@3.577.0))': - dependencies: - '@aws-sdk/client-sso': 3.577.0 - '@aws-sdk/token-providers': 3.577.0(@aws-sdk/client-sso-oidc@3.577.0(@aws-sdk/client-sts@3.577.0)) - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.0.0 - '@smithy/shared-ini-file-loader': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - - '@aws-sdk/credential-provider-web-identity@3.577.0(@aws-sdk/client-sts@3.577.0)': - dependencies: - '@aws-sdk/client-sts': 3.577.0 - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-bucket-endpoint@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-arn-parser': 3.568.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-config-provider': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-expect-continue@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-flexible-checksums@3.577.0': - dependencies: - '@aws-crypto/crc32': 3.0.0 - '@aws-crypto/crc32c': 3.0.0 - '@aws-sdk/types': 3.577.0 - '@smithy/is-array-buffer': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-host-header@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-location-constraint@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-logger@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-recursion-detection@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-sdk-s3@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-arn-parser': 3.568.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/signature-v4': 3.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/util-config-provider': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-signing@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/signature-v4': 3.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-middleware': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-ssec@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-user-agent@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-endpoints': 3.577.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/region-config-resolver@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/s3-request-presigner@3.577.0': - dependencies: - '@aws-sdk/signature-v4-multi-region': 3.577.0 - '@aws-sdk/types': 3.577.0 - '@aws-sdk/util-format-url': 3.577.0 - '@smithy/middleware-endpoint': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/signature-v4-multi-region@3.577.0': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.577.0 - '@aws-sdk/types': 3.577.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/signature-v4': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/token-providers@3.577.0(@aws-sdk/client-sso-oidc@3.577.0(@aws-sdk/client-sts@3.577.0))': - dependencies: - '@aws-sdk/client-sso-oidc': 3.577.0(@aws-sdk/client-sts@3.577.0) - '@aws-sdk/types': 3.577.0 - '@smithy/property-provider': 3.0.0 - '@smithy/shared-ini-file-loader': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/types@3.577.0': - dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/util-arn-parser@3.568.0': - dependencies: - tslib: 2.6.2 - - '@aws-sdk/util-endpoints@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 - '@smithy/util-endpoints': 2.0.0 - tslib: 2.6.2 - - '@aws-sdk/util-format-url@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/querystring-builder': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/util-locate-window@3.568.0': - dependencies: - tslib: 2.6.2 - - '@aws-sdk/util-user-agent-browser@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/types': 3.0.0 - bowser: 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/util-user-agent-node@3.577.0': - dependencies: - '@aws-sdk/types': 3.577.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@aws-sdk/util-utf8-browser@3.259.0': - dependencies: - tslib: 2.6.2 - - '@aws-sdk/xml-builder@3.575.0': - dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@babel/code-frame@7.24.2': - dependencies: - '@babel/highlight': 7.24.5 - picocolors: 1.0.1 - - '@babel/compat-data@7.24.4': {} - - '@babel/core@7.24.5': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helpers': 7.24.5 - '@babel/parser': 7.24.7 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.24.5': - dependencies: - '@babel/types': 7.24.5 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - '@babel/helper-compilation-targets@7.23.6': - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-environment-visitor@7.22.20': {} - - '@babel/helper-function-name@7.23.0': - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 - - '@babel/helper-hoist-variables@7.22.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-module-imports@7.24.3': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.24.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 - - '@babel/helper-simple-access@7.24.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-split-export-declaration@7.24.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-string-parser@7.24.1': {} - - '@babel/helper-validator-identifier@7.24.5': {} - - '@babel/helper-validator-option@7.23.5': {} - - '@babel/helpers@7.24.5': - dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - transitivePeerDependencies: - - supports-color - - '@babel/highlight@7.24.5': - dependencies: - '@babel/helper-validator-identifier': 7.24.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.1 - - '@babel/parser@7.24.5': - dependencies: - '@babel/types': 7.24.5 - - '@babel/parser@7.24.7': - dependencies: - '@babel/types': 7.24.5 - - '@babel/runtime@7.24.5': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/template@7.24.0': - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.7 - '@babel/types': 7.24.5 - - '@babel/traverse@7.24.5': - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/parser': 7.24.7 - '@babel/types': 7.24.5 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.24.5': - dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.24.5 - to-fast-properties: 2.0.0 - - '@biomejs/biome@1.7.3': - optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.7.3 - '@biomejs/cli-darwin-x64': 1.7.3 - '@biomejs/cli-linux-arm64': 1.7.3 - '@biomejs/cli-linux-arm64-musl': 1.7.3 - '@biomejs/cli-linux-x64': 1.7.3 - '@biomejs/cli-linux-x64-musl': 1.7.3 - '@biomejs/cli-win32-arm64': 1.7.3 - '@biomejs/cli-win32-x64': 1.7.3 - - '@biomejs/cli-darwin-arm64@1.7.3': - optional: true - - '@biomejs/cli-darwin-x64@1.7.3': - optional: true - - '@biomejs/cli-linux-arm64-musl@1.7.3': - optional: true - - '@biomejs/cli-linux-arm64@1.7.3': - optional: true - - '@biomejs/cli-linux-x64-musl@1.7.3': - optional: true - - '@biomejs/cli-linux-x64@1.7.3': - optional: true - - '@biomejs/cli-win32-arm64@1.7.3': - optional: true - - '@biomejs/cli-win32-x64@1.7.3': - optional: true - - '@blocknote/core@0.12.4': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - '@tiptap/extension-bold': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-code': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-collaboration': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0)(y-prosemirror@1.2.1(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6)(y-protocols@1.0.6(yjs@13.6.15))(yjs@13.6.15)) - '@tiptap/extension-collaboration-cursor': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(y-prosemirror@1.2.1(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6)(y-protocols@1.0.6(yjs@13.6.15))(yjs@13.6.15)) - '@tiptap/extension-dropcursor': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0) - '@tiptap/extension-gapcursor': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0) - '@tiptap/extension-hard-break': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-history': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0) - '@tiptap/extension-horizontal-rule': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0) - '@tiptap/extension-italic': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-link': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0) - '@tiptap/extension-paragraph': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-strike': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-table-cell': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-table-header': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-table-row': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-text': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-underline': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/pm': 2.4.0 - hast-util-from-dom: 4.2.0 - prosemirror-model: 1.21.0 - prosemirror-state: 1.4.3 - prosemirror-tables: 1.3.7 - prosemirror-transform: 1.9.0 - prosemirror-view: 1.33.6 - rehype-format: 5.0.0 - rehype-parse: 8.0.5 - rehype-remark: 9.1.2 - rehype-stringify: 9.0.4 - remark-gfm: 3.0.1 - remark-parse: 10.0.2 - remark-rehype: 10.1.0 - remark-stringify: 10.0.3 - unified: 10.1.2 - uuid: 8.3.2 - y-prosemirror: 1.2.1(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6)(y-protocols@1.0.6(yjs@13.6.15))(yjs@13.6.15) - y-protocols: 1.0.6(yjs@13.6.15) - yjs: 13.6.15 - transitivePeerDependencies: - - supports-color - - '@blocknote/core@0.13.2': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - '@tiptap/extension-bold': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-code': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-collaboration': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0)(y-prosemirror@1.2.1(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6)(y-protocols@1.0.6(yjs@13.6.15))(yjs@13.6.15)) - '@tiptap/extension-collaboration-cursor': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(y-prosemirror@1.2.1(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6)(y-protocols@1.0.6(yjs@13.6.15))(yjs@13.6.15)) - '@tiptap/extension-dropcursor': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0) - '@tiptap/extension-gapcursor': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0) - '@tiptap/extension-hard-break': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-history': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0) - '@tiptap/extension-horizontal-rule': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0) - '@tiptap/extension-italic': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-link': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0) - '@tiptap/extension-paragraph': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-strike': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-table-cell': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-table-header': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-table-row': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-text': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/extension-underline': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0)) - '@tiptap/pm': 2.4.0 - hast-util-from-dom: 4.2.0 - prosemirror-model: 1.21.0 - prosemirror-state: 1.4.3 - prosemirror-tables: 1.3.7 - prosemirror-transform: 1.9.0 - prosemirror-view: 1.33.6 - rehype-format: 5.0.0 - rehype-parse: 8.0.5 - rehype-remark: 9.1.2 - rehype-stringify: 9.0.4 - remark-gfm: 3.0.1 - remark-parse: 10.0.2 - remark-rehype: 10.1.0 - remark-stringify: 10.0.3 - unified: 10.1.2 - uuid: 8.3.2 - y-prosemirror: 1.2.1(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6)(y-protocols@1.0.6(yjs@13.6.15))(yjs@13.6.15) - y-protocols: 1.0.6(yjs@13.6.15) - yjs: 13.6.15 - transitivePeerDependencies: - - supports-color - - '@blocknote/react@0.12.4(@tiptap/pm@2.4.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@blocknote/core': 0.12.4 - '@floating-ui/react': 0.26.15(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@mantine/core': 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.9.2(react@18.3.1) - '@mantine/utils': 6.0.21(react@18.3.1) - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - '@tiptap/react': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - lodash.merge: 4.6.2 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - react-icons: 4.12.0(react@18.3.1) - use-prefers-color-scheme: 1.1.3(react@18.3.1) - transitivePeerDependencies: - - '@tiptap/pm' - - '@types/react' - - supports-color - - '@codemirror/autocomplete@6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.2)(@lezer/common@1.2.1)': - dependencies: - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.2 - '@lezer/common': 1.2.1 - - '@codemirror/commands@6.6.0': - dependencies: - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.2 - '@lezer/common': 1.2.1 - - '@codemirror/lang-css@6.2.1(@codemirror/view@6.28.2)': - dependencies: - '@codemirror/autocomplete': 6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.2)(@lezer/common@1.2.1) - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@lezer/common': 1.2.1 - '@lezer/css': 1.1.8 - transitivePeerDependencies: - - '@codemirror/view' - - '@codemirror/lang-html@6.4.9': - dependencies: - '@codemirror/autocomplete': 6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.2)(@lezer/common@1.2.1) - '@codemirror/lang-css': 6.2.1(@codemirror/view@6.28.2) - '@codemirror/lang-javascript': 6.2.2 - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.2 - '@lezer/common': 1.2.1 - '@lezer/css': 1.1.8 - '@lezer/html': 1.3.10 - - '@codemirror/lang-javascript@6.2.2': - dependencies: - '@codemirror/autocomplete': 6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.2)(@lezer/common@1.2.1) - '@codemirror/language': 6.10.2 - '@codemirror/lint': 6.8.1 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.2 - '@lezer/common': 1.2.1 - '@lezer/javascript': 1.4.17 - - '@codemirror/lang-json@6.0.1': - dependencies: - '@codemirror/language': 6.10.2 - '@lezer/json': 1.0.2 - - '@codemirror/lang-yaml@6.1.1(@codemirror/view@6.28.2)': - dependencies: - '@codemirror/autocomplete': 6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.2)(@lezer/common@1.2.1) - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/yaml': 1.0.3 - transitivePeerDependencies: - - '@codemirror/view' - - '@codemirror/language@6.10.2': - dependencies: - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.2 - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.1 - style-mod: 4.1.2 - - '@codemirror/lint@6.8.1': - dependencies: - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.2 - crelt: 1.0.6 - - '@codemirror/search@6.5.6': - dependencies: - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.2 - crelt: 1.0.6 - - '@codemirror/state@6.4.1': {} - - '@codemirror/view@6.28.2': - dependencies: - '@codemirror/state': 6.4.1 - style-mod: 4.1.2 - w3c-keyname: 2.2.8 - - '@discoveryjs/json-ext@0.5.7': {} - - '@emnapi/runtime@1.1.1': - dependencies: - tslib: 2.6.2 - optional: true - - '@emotion/is-prop-valid@0.8.8': - dependencies: - '@emotion/memoize': 0.7.4 - optional: true - - '@emotion/memoize@0.7.4': - optional: true - - '@ericcornelissen/bash-parser@0.5.2': - dependencies: - array-last: 1.3.0 - babylon: 6.18.0 - compose-function: 3.0.3 - deep-freeze: 0.0.1 - filter-iterator: 0.0.1 - filter-obj: 1.1.0 - has-own-property: 0.1.0 - identity-function: 1.0.0 - is-iterable: 1.1.1 - iterable-lookahead: 1.0.0 - lodash.curry: 4.1.1 - magic-string: 0.16.0 - map-obj: 2.0.0 - object-pairs: 0.1.0 - object-values: 1.0.0 - reverse-arguments: 1.0.0 - shell-quote-word: 1.0.1 - to-pascal-case: 1.0.0 - unescape-js: 1.1.4 - - '@esbuild/aix-ppc64@0.19.11': - optional: true - - '@esbuild/aix-ppc64@0.20.2': - optional: true - - '@esbuild/aix-ppc64@0.21.5': - optional: true - - '@esbuild/android-arm64@0.19.11': - optional: true - - '@esbuild/android-arm64@0.20.2': - optional: true - - '@esbuild/android-arm64@0.21.5': - optional: true - - '@esbuild/android-arm@0.19.11': - optional: true - - '@esbuild/android-arm@0.20.2': - optional: true - - '@esbuild/android-arm@0.21.5': - optional: true - - '@esbuild/android-x64@0.19.11': - optional: true - - '@esbuild/android-x64@0.20.2': - optional: true - - '@esbuild/android-x64@0.21.5': - optional: true - - '@esbuild/darwin-arm64@0.19.11': - optional: true - - '@esbuild/darwin-arm64@0.20.2': - optional: true - - '@esbuild/darwin-arm64@0.21.5': - optional: true - - '@esbuild/darwin-x64@0.19.11': - optional: true - - '@esbuild/darwin-x64@0.20.2': - optional: true - - '@esbuild/darwin-x64@0.21.5': - optional: true - - '@esbuild/freebsd-arm64@0.19.11': - optional: true - - '@esbuild/freebsd-arm64@0.20.2': - optional: true - - '@esbuild/freebsd-arm64@0.21.5': - optional: true - - '@esbuild/freebsd-x64@0.19.11': - optional: true - - '@esbuild/freebsd-x64@0.20.2': - optional: true - - '@esbuild/freebsd-x64@0.21.5': - optional: true - - '@esbuild/linux-arm64@0.19.11': - optional: true - - '@esbuild/linux-arm64@0.20.2': - optional: true - - '@esbuild/linux-arm64@0.21.5': - optional: true - - '@esbuild/linux-arm@0.19.11': - optional: true - - '@esbuild/linux-arm@0.20.2': - optional: true - - '@esbuild/linux-arm@0.21.5': - optional: true - - '@esbuild/linux-ia32@0.19.11': - optional: true - - '@esbuild/linux-ia32@0.20.2': - optional: true - - '@esbuild/linux-ia32@0.21.5': - optional: true - - '@esbuild/linux-loong64@0.19.11': - optional: true - - '@esbuild/linux-loong64@0.20.2': - optional: true - - '@esbuild/linux-loong64@0.21.5': - optional: true - - '@esbuild/linux-mips64el@0.19.11': - optional: true - - '@esbuild/linux-mips64el@0.20.2': - optional: true - - '@esbuild/linux-mips64el@0.21.5': - optional: true - - '@esbuild/linux-ppc64@0.19.11': - optional: true - - '@esbuild/linux-ppc64@0.20.2': - optional: true - - '@esbuild/linux-ppc64@0.21.5': - optional: true - - '@esbuild/linux-riscv64@0.19.11': - optional: true - - '@esbuild/linux-riscv64@0.20.2': - optional: true - - '@esbuild/linux-riscv64@0.21.5': - optional: true - - '@esbuild/linux-s390x@0.19.11': - optional: true - - '@esbuild/linux-s390x@0.20.2': - optional: true - - '@esbuild/linux-s390x@0.21.5': - optional: true - - '@esbuild/linux-x64@0.19.11': - optional: true - - '@esbuild/linux-x64@0.20.2': - optional: true - - '@esbuild/linux-x64@0.21.5': - optional: true - - '@esbuild/netbsd-x64@0.19.11': - optional: true - - '@esbuild/netbsd-x64@0.20.2': - optional: true - - '@esbuild/netbsd-x64@0.21.5': - optional: true - - '@esbuild/openbsd-x64@0.19.11': - optional: true - - '@esbuild/openbsd-x64@0.20.2': - optional: true - - '@esbuild/openbsd-x64@0.21.5': - optional: true - - '@esbuild/sunos-x64@0.19.11': - optional: true - - '@esbuild/sunos-x64@0.20.2': - optional: true - - '@esbuild/sunos-x64@0.21.5': - optional: true - - '@esbuild/win32-arm64@0.19.11': - optional: true - - '@esbuild/win32-arm64@0.20.2': - optional: true - - '@esbuild/win32-arm64@0.21.5': - optional: true - - '@esbuild/win32-ia32@0.19.11': - optional: true - - '@esbuild/win32-ia32@0.20.2': - optional: true - - '@esbuild/win32-ia32@0.21.5': - optional: true - - '@esbuild/win32-x64@0.19.11': - optional: true - - '@esbuild/win32-x64@0.20.2': - optional: true - - '@esbuild/win32-x64@0.21.5': - optional: true - - '@eslint-community/eslint-utils@4.4.0(eslint@9.8.0)': - dependencies: - eslint: 9.8.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.11.0': {} - - '@eslint/config-array@0.17.1': - dependencies: - '@eslint/object-schema': 2.1.4 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/eslintrc@3.1.0': - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 10.1.0 - globals: 14.0.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.8.0': {} - - '@eslint/object-schema@2.1.4': {} - - '@faker-js/faker@8.4.1': {} - - '@floating-ui/core@1.6.2': - dependencies: - '@floating-ui/utils': 0.2.3 - - '@floating-ui/dom@1.6.3': - dependencies: - '@floating-ui/core': 1.6.2 - '@floating-ui/utils': 0.2.2 - - '@floating-ui/dom@1.6.5': - dependencies: - '@floating-ui/core': 1.6.2 - '@floating-ui/utils': 0.2.3 - - '@floating-ui/react-dom@1.3.0(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/dom': 1.6.5 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - '@floating-ui/react-dom@2.0.9(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/dom': 1.6.5 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - '@floating-ui/react@0.19.2(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react-dom': 1.3.0(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - tabbable: 6.2.0 - - '@floating-ui/react@0.26.15(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react-dom': 2.0.9(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@floating-ui/utils': 0.2.2 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - tabbable: 6.2.0 - - '@floating-ui/utils@0.2.2': {} - - '@floating-ui/utils@0.2.3': {} - - '@floating-ui/vue@1.0.7(vue@3.4.30(typescript@5.4.5))': - dependencies: - '@floating-ui/dom': 1.6.5 - '@floating-ui/utils': 0.2.3 - vue-demi: 0.14.8(vue@3.4.30(typescript@5.4.5)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@flydotio/dockerfile@0.5.8': - dependencies: - chalk: 5.3.0 - diff: 5.2.0 - ejs: 3.1.10 - shell-quote: 1.8.1 - yargs: 17.7.2 - - '@headlessui/react@1.7.19(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@tanstack/react-virtual': 3.5.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - client-only: 0.0.1 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - '@headlessui/tailwindcss@0.2.1(tailwindcss@3.4.3)': - dependencies: - tailwindcss: 3.4.3 - - '@headlessui/vue@1.7.22(vue@3.4.30(typescript@5.4.5))': - dependencies: - '@tanstack/vue-virtual': 3.7.0(vue@3.4.30(typescript@5.4.5)) - vue: 3.4.30(typescript@5.4.5) - - '@hexagon/base64@1.1.28': {} - - '@hono/swagger-ui@0.4.0(hono@4.5.8)': - dependencies: - hono: 4.5.8 - - '@hono/zod-openapi@0.15.1(hono@4.5.8)(zod@3.23.8)': - dependencies: - '@asteasolutions/zod-to-openapi': 7.1.1(zod@3.23.8) - '@hono/zod-validator': 0.2.2(hono@4.5.8)(zod@3.23.8) - hono: 4.5.8 - zod: 3.23.8 - - '@hono/zod-validator@0.2.2(hono@4.5.8)(zod@3.23.8)': - dependencies: - hono: 4.5.8 - zod: 3.23.8 - - '@hookform/resolvers@3.9.0(react-hook-form@7.52.1(react@18.3.1))': - dependencies: - react-hook-form: 7.52.1(react@18.3.1) - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.3.0': {} - - '@img/sharp-darwin-arm64@0.33.4': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.2 - optional: true - - '@img/sharp-darwin-x64@0.33.4': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.2 - optional: true - - '@img/sharp-libvips-darwin-arm64@1.0.2': - optional: true - - '@img/sharp-libvips-darwin-x64@1.0.2': - optional: true - - '@img/sharp-libvips-linux-arm64@1.0.2': - optional: true - - '@img/sharp-libvips-linux-arm@1.0.2': - optional: true - - '@img/sharp-libvips-linux-s390x@1.0.2': - optional: true - - '@img/sharp-libvips-linux-x64@1.0.2': - optional: true - - '@img/sharp-libvips-linuxmusl-arm64@1.0.2': - optional: true - - '@img/sharp-libvips-linuxmusl-x64@1.0.2': - optional: true - - '@img/sharp-linux-arm64@0.33.4': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.2 - optional: true - - '@img/sharp-linux-arm@0.33.4': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.2 - optional: true - - '@img/sharp-linux-s390x@0.33.4': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.2 - optional: true - - '@img/sharp-linux-x64@0.33.4': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.2 - optional: true - - '@img/sharp-linuxmusl-arm64@0.33.4': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 - optional: true - - '@img/sharp-linuxmusl-x64@0.33.4': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.2 - optional: true - - '@img/sharp-wasm32@0.33.4': - dependencies: - '@emnapi/runtime': 1.1.1 - optional: true - - '@img/sharp-win32-ia32@0.33.4': - optional: true - - '@img/sharp-win32-x64@0.33.4': - optional: true - - '@inquirer/figures@1.0.2': {} - - '@internationalized/date@3.5.2': - dependencies: - '@swc/helpers': 0.5.11 - - '@internationalized/date@3.5.4': - dependencies: - '@swc/helpers': 0.5.11 - - '@internationalized/number@3.5.1': - dependencies: - '@swc/helpers': 0.5.11 - - '@internationalized/number@3.5.3': - dependencies: - '@swc/helpers': 0.5.11 - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.6': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@levischuck/tiny-cbor@0.2.2': {} - - '@lezer/common@1.2.1': {} - - '@lezer/css@1.1.8': - dependencies: - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.1 - - '@lezer/highlight@1.2.0': - dependencies: - '@lezer/common': 1.2.1 - - '@lezer/html@1.3.10': - dependencies: - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.1 - - '@lezer/javascript@1.4.17': - dependencies: - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.1 - - '@lezer/json@1.0.2': - dependencies: - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.1 - - '@lezer/lr@1.4.1': - dependencies: - '@lezer/common': 1.2.1 - - '@lezer/yaml@1.0.3': - dependencies: - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.1 - - '@ljharb/through@2.3.13': - dependencies: - call-bind: 1.0.7 - - '@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react': 0.26.15(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@mantine/hooks': 7.9.2(react@18.3.1) - clsx: 2.1.0 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - react-number-format: 5.3.4(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react-remove-scroll: 2.5.10(@types/react@18.3.3)(react@18.3.1) - react-textarea-autosize: 8.5.3(@types/react@18.3.3)(react@18.3.1) - type-fest: 4.18.2 - transitivePeerDependencies: - - '@types/react' - - '@mantine/hooks@7.9.2(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@mantine/utils@6.0.21(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@mapbox/node-pre-gyp@1.0.11': - dependencies: - detect-libc: 2.0.3 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.6.2 - tar: 6.2.1 - transitivePeerDependencies: - - encoding - - supports-color - optional: true - - '@next-auth/prisma-adapter@1.0.7(@prisma/client@5.14.0(prisma@5.14.0))(next-auth@4.24.7(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))': - dependencies: - '@prisma/client': 5.14.0(prisma@5.14.0) - next-auth: 4.24.7(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - - '@next/bundle-analyzer@14.2.3': - dependencies: - webpack-bundle-analyzer: 4.10.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@next/env@14.1.4': {} - - '@next/env@14.2.4': {} - - '@next/swc-darwin-arm64@14.1.4': - optional: true - - '@next/swc-darwin-arm64@14.2.4': - optional: true - - '@next/swc-darwin-x64@14.1.4': - optional: true - - '@next/swc-darwin-x64@14.2.4': - optional: true - - '@next/swc-linux-arm64-gnu@14.1.4': - optional: true - - '@next/swc-linux-arm64-gnu@14.2.4': - optional: true - - '@next/swc-linux-arm64-musl@14.1.4': - optional: true - - '@next/swc-linux-arm64-musl@14.2.4': - optional: true - - '@next/swc-linux-x64-gnu@14.1.4': - optional: true - - '@next/swc-linux-x64-gnu@14.2.4': - optional: true - - '@next/swc-linux-x64-musl@14.1.4': - optional: true - - '@next/swc-linux-x64-musl@14.2.4': - optional: true - - '@next/swc-win32-arm64-msvc@14.1.4': - optional: true - - '@next/swc-win32-arm64-msvc@14.2.4': - optional: true - - '@next/swc-win32-ia32-msvc@14.1.4': - optional: true - - '@next/swc-win32-ia32-msvc@14.2.4': - optional: true - - '@next/swc-win32-x64-msvc@14.1.4': - optional: true - - '@next/swc-win32-x64-msvc@14.2.4': - optional: true - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.scandir@3.0.0': - dependencies: - '@nodelib/fs.stat': 3.0.0 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.stat@3.0.0': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@nodelib/fs.walk@2.0.0': - dependencies: - '@nodelib/fs.scandir': 3.0.0 - fastq: 1.17.1 - - '@one-ini/wasm@0.1.1': {} - - '@opentelemetry/api-logs@0.52.1': - dependencies: - '@opentelemetry/api': 1.9.0 - - '@opentelemetry/api@1.9.0': {} - - '@opentelemetry/context-async-hooks@1.25.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - - '@opentelemetry/core@1.25.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.25.0 - - '@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.25.1 - - '@opentelemetry/instrumentation-connect@0.38.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@types/connect': 3.4.36 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-express@0.41.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-fastify@0.38.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-graphql@0.42.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-hapi@0.40.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-http@0.52.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - semver: 7.6.2 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-ioredis@0.42.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/redis-common': 0.36.2 - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-koa@0.42.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-mongodb@0.46.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 1.25.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-mongoose@0.40.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-mysql2@0.40.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-mysql@0.40.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@types/mysql': 2.15.22 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-nestjs-core@0.39.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-pg@0.43.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) - '@types/pg': 8.6.1 - '@types/pg-pool': 2.0.4 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-redis-4@0.41.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/redis-common': 0.36.2 - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation@0.46.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@types/shimmer': 1.0.5 - import-in-the-middle: 1.7.1 - require-in-the-middle: 7.3.0 - semver: 7.6.2 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color - optional: true - - '@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.52.1 - '@types/shimmer': 1.0.5 - import-in-the-middle: 1.9.1 - require-in-the-middle: 7.3.0 - semver: 7.6.2 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/redis-common@0.36.2': {} - - '@opentelemetry/resources@1.25.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.0 - - '@opentelemetry/resources@1.25.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - - '@opentelemetry/sdk-metrics@1.25.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0) - lodash.merge: 4.6.2 - - '@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - - '@opentelemetry/semantic-conventions@1.25.0': {} - - '@opentelemetry/semantic-conventions@1.25.1': {} - - '@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - - '@panva/hkdf@1.1.1': {} - - '@pdf-lib/standard-fonts@1.0.0': - dependencies: - pako: 1.0.11 - - '@pdf-lib/upng@1.0.1': - dependencies: - pako: 1.0.11 - - '@peculiar/asn1-android@2.3.10': - dependencies: - '@peculiar/asn1-schema': 2.3.8 - asn1js: 3.0.5 - tslib: 2.6.2 - - '@peculiar/asn1-ecc@2.3.8': - dependencies: - '@peculiar/asn1-schema': 2.3.8 - '@peculiar/asn1-x509': 2.3.8 - asn1js: 3.0.5 - tslib: 2.6.2 - - '@peculiar/asn1-rsa@2.3.8': - dependencies: - '@peculiar/asn1-schema': 2.3.8 - '@peculiar/asn1-x509': 2.3.8 - asn1js: 3.0.5 - tslib: 2.6.2 - - '@peculiar/asn1-schema@2.3.8': - dependencies: - asn1js: 3.0.5 - pvtsutils: 1.3.5 - tslib: 2.6.2 - - '@peculiar/asn1-x509@2.3.8': - dependencies: - '@peculiar/asn1-schema': 2.3.8 - asn1js: 3.0.5 - ipaddr.js: 2.2.0 - pvtsutils: 1.3.5 - tslib: 2.6.2 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@polka/url@1.0.0-next.25': {} - - '@popperjs/core@2.11.8': {} - - '@prisma/client@5.14.0(prisma@5.14.0)': - optionalDependencies: - prisma: 5.14.0 - - '@prisma/debug@5.14.0': {} - - '@prisma/debug@5.17.0': {} - - '@prisma/debug@5.9.1': {} - - '@prisma/engines-version@5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48': {} - - '@prisma/engines@5.14.0': - dependencies: - '@prisma/debug': 5.14.0 - '@prisma/engines-version': 5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48 - '@prisma/fetch-engine': 5.14.0 - '@prisma/get-platform': 5.14.0 - - '@prisma/fetch-engine@5.14.0': - dependencies: - '@prisma/debug': 5.14.0 - '@prisma/engines-version': 5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48 - '@prisma/get-platform': 5.14.0 - - '@prisma/generator-helper@5.17.0': - dependencies: - '@prisma/debug': 5.17.0 - - '@prisma/generator-helper@5.9.1': - dependencies: - '@prisma/debug': 5.9.1 - - '@prisma/get-platform@5.14.0': - dependencies: - '@prisma/debug': 5.14.0 - - '@prisma/instrumentation@5.17.0': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@radix-ui/colors@1.0.1': {} - - '@radix-ui/number@1.0.1': - dependencies: - '@babel/runtime': 7.24.5 - - '@radix-ui/number@1.1.0': {} - - '@radix-ui/primitive@1.0.1': - dependencies: - '@babel/runtime': 7.24.5 - - '@radix-ui/primitive@1.1.0': {} - - '@radix-ui/react-accordion@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collapsible': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-avatar@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-checkbox@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-collapsible@1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-collapsible@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-compose-refs@1.1.0(@types/react@18.2.47)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.47 - - '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-context@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-context@1.1.0(@types/react@18.2.47)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.47 - - '@radix-ui/react-context@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-direction@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-direction@1.1.0(@types/react@18.2.47)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.47 - - '@radix-ui/react-direction@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-focus-guards@1.1.0(@types/react@18.2.47)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.47 - - '@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-id@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-id@1.1.0(@types/react@18.2.47)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.47 - - '@radix-ui/react-id@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-label@2.0.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-menu@2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-popover@1.1.1(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.2.47)(react@18.3.1) - aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - react-remove-scroll: 2.5.7(@types/react@18.2.47)(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-popover@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-popper@1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@floating-ui/react-dom': 2.0.9(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/rect': 1.0.1 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react-dom': 2.0.9(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-use-rect': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/rect': 1.1.0 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react-dom': 2.0.9(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/rect': 1.1.0 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-radio-group@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-scroll-area@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/number': 1.1.0 - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-select@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-separator@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-slot@1.0.2(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-slot@1.1.0(@types/react@18.2.47)(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.47 - - '@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-switch@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-tabs@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-toggle-group@1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-context': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-toggle@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-toggle@1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-tooltip@1.1.1(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-tooltip@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.2.47)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.47 - - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.2.47)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.47 - - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.2.47)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.47 - - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.2.47)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.47 - - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-previous@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-rect@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/rect': 1.0.1 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-rect@1.1.0(@types/react@18.2.47)(react@18.3.1)': - dependencies: - '@radix-ui/rect': 1.1.0 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.47 - - '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/rect': 1.1.0 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-size@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-size@1.1.0(@types/react@18.2.47)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.2.47)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.47 - - '@radix-ui/react-use-size@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/rect@1.0.1': - dependencies: - '@babel/runtime': 7.24.5 - - '@radix-ui/rect@1.1.0': {} - - '@react-email/body@0.0.9(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/button@0.0.16(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/code-block@0.0.6(react@18.3.1)': - dependencies: - prismjs: 1.29.0 - react: 18.3.1 - - '@react-email/code-inline@0.0.3(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/column@0.0.11(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/components@0.0.22(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@react-email/body': 0.0.9(react@18.3.1) - '@react-email/button': 0.0.16(react@18.3.1) - '@react-email/code-block': 0.0.6(react@18.3.1) - '@react-email/code-inline': 0.0.3(react@18.3.1) - '@react-email/column': 0.0.11(react@18.3.1) - '@react-email/container': 0.0.13(react@18.3.1) - '@react-email/font': 0.0.7(react@18.3.1) - '@react-email/head': 0.0.10(react@18.3.1) - '@react-email/heading': 0.0.13(@types/react@18.3.3)(react@18.3.1) - '@react-email/hr': 0.0.9(react@18.3.1) - '@react-email/html': 0.0.9(react@18.3.1) - '@react-email/img': 0.0.9(react@18.3.1) - '@react-email/link': 0.0.9(react@18.3.1) - '@react-email/markdown': 0.0.11(react@18.3.1) - '@react-email/preview': 0.0.10(react@18.3.1) - '@react-email/render': 0.0.17(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@react-email/row': 0.0.9(react@18.3.1) - '@react-email/section': 0.0.13(react@18.3.1) - '@react-email/tailwind': 0.0.19(react@18.3.1) - '@react-email/text': 0.0.9(react@18.3.1) - react: 18.3.1 - transitivePeerDependencies: - - '@types/react' - - react-dom - - '@react-email/container@0.0.13(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/font@0.0.7(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/head@0.0.10(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/heading@0.0.13(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - transitivePeerDependencies: - - '@types/react' - - '@react-email/hr@0.0.9(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/html@0.0.9(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/img@0.0.9(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/link@0.0.9(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/markdown@0.0.11(react@18.3.1)': - dependencies: - md-to-react-email: 5.0.2(react@18.3.1) - react: 18.3.1 - - '@react-email/preview@0.0.10(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/render@0.0.17(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - html-to-text: 9.0.5 - js-beautify: 1.15.1 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - react-promise-suspense: 0.3.4 - - '@react-email/row@0.0.9(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/section@0.0.13(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/tailwind@0.0.19(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-email/text@0.0.9(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@react-pdf/fns@2.2.1': - dependencies: - '@babel/runtime': 7.24.5 - - '@react-pdf/font@2.5.1': - dependencies: - '@babel/runtime': 7.24.5 - '@react-pdf/types': 2.5.0 - cross-fetch: 3.1.8 - fontkit: 2.0.2 - is-url: 1.2.4 - transitivePeerDependencies: - - encoding - - '@react-pdf/image@2.3.6': - dependencies: - '@babel/runtime': 7.24.5 - '@react-pdf/png-js': 2.3.1 - cross-fetch: 3.1.8 - jay-peg: 1.0.2 - transitivePeerDependencies: - - encoding - - '@react-pdf/layout@3.12.1': - dependencies: - '@babel/runtime': 7.24.5 - '@react-pdf/fns': 2.2.1 - '@react-pdf/image': 2.3.6 - '@react-pdf/pdfkit': 3.1.10 - '@react-pdf/primitives': 3.1.1 - '@react-pdf/stylesheet': 4.2.5 - '@react-pdf/textkit': 4.4.1 - '@react-pdf/types': 2.5.0 - cross-fetch: 3.1.8 - emoji-regex: 10.3.0 - queue: 6.0.2 - yoga-layout: 2.0.1 - transitivePeerDependencies: - - encoding - - '@react-pdf/pdfkit@3.1.10': - dependencies: - '@babel/runtime': 7.24.5 - '@react-pdf/png-js': 2.3.1 - browserify-zlib: 0.2.0 - crypto-js: 4.2.0 - fontkit: 2.0.2 - jay-peg: 1.0.2 - vite-compatible-readable-stream: 3.6.1 - - '@react-pdf/png-js@2.3.1': - dependencies: - browserify-zlib: 0.2.0 - - '@react-pdf/primitives@3.1.1': {} - - '@react-pdf/render@3.4.4': - dependencies: - '@babel/runtime': 7.24.5 - '@react-pdf/fns': 2.2.1 - '@react-pdf/primitives': 3.1.1 - '@react-pdf/textkit': 4.4.1 - '@react-pdf/types': 2.5.0 - abs-svg-path: 0.1.1 - color-string: 1.9.1 - normalize-svg-path: 1.1.0 - parse-svg-path: 0.1.2 - svg-arc-to-cubic-bezier: 3.2.0 - - '@react-pdf/renderer@3.4.4(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.5 - '@react-pdf/font': 2.5.1 - '@react-pdf/layout': 3.12.1 - '@react-pdf/pdfkit': 3.1.10 - '@react-pdf/primitives': 3.1.1 - '@react-pdf/render': 3.4.4 - '@react-pdf/types': 2.5.0 - events: 3.3.0 - object-assign: 4.1.1 - prop-types: 15.8.1 - queue: 6.0.2 - react: 18.3.1 - scheduler: 0.17.0 - transitivePeerDependencies: - - encoding - - '@react-pdf/stylesheet@4.2.5': - dependencies: - '@babel/runtime': 7.24.5 - '@react-pdf/fns': 2.2.1 - '@react-pdf/types': 2.5.0 - color-string: 1.9.1 - hsl-to-hex: 1.0.0 - media-engine: 1.0.3 - postcss-value-parser: 4.2.0 - - '@react-pdf/textkit@4.4.1': - dependencies: - '@babel/runtime': 7.24.5 - '@react-pdf/fns': 2.2.1 - bidi-js: 1.0.3 - hyphen: 1.10.4 - unicode-properties: 1.4.1 - - '@react-pdf/types@2.5.0': {} - - '@remirror/core-constants@2.0.2': {} - - '@remixicon/react@4.2.0(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@replit/codemirror-css-color-picker@6.1.1(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.2)': - dependencies: - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.2 - - '@rollup/plugin-commonjs@26.0.1(rollup@3.29.4)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 10.4.5 - is-reference: 1.2.1 - magic-string: 0.30.10 - optionalDependencies: - rollup: 3.29.4 - - '@rollup/pluginutils@5.1.0(rollup@3.29.4)': - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 3.29.4 - - '@rollup/rollup-android-arm-eabi@4.18.0': - optional: true - - '@rollup/rollup-android-arm64@4.18.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.18.0': - optional: true - - '@rollup/rollup-darwin-x64@4.18.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.18.0': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.18.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.18.0': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.18.0': - optional: true - - '@rollup/rollup-linux-x64-musl@4.18.0': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.18.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.18.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.18.0': - optional: true - - '@scalar/api-client-modal@0.0.16(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': - dependencies: - '@scalar/client-app': 0.1.14(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@scalar/components': 0.12.4(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@scalar/oas-utils': 0.2.5 - '@scalar/object-utils': 1.1.2 - vue: 3.4.30(typescript@5.4.5) - vue-router: 4.4.0(vue@3.4.30(typescript@5.4.5)) - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - '@vue/composition-api' - - debug - - jest - - supports-color - - tailwindcss - - typescript - - vitest - - '@scalar/api-client@1.3.19(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': - dependencies: - '@floating-ui/vue': 1.0.7(vue@3.4.30(typescript@5.4.5)) - '@headlessui/vue': 1.7.22(vue@3.4.30(typescript@5.4.5)) - '@scalar/components': 0.12.4(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@scalar/oas-utils': 0.2.5 - '@scalar/openapi-parser': 0.7.1 - '@scalar/themes': 0.9.8(typescript@5.4.5) - '@scalar/use-codemirror': 0.11.4(typescript@5.4.5) - '@scalar/use-toasts': 0.7.4(typescript@5.4.5) - '@scalar/use-tooltip': 1.0.1(typescript@5.4.5) - '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.4.5)) - axios: 1.7.2 - httpsnippet-lite: 3.0.5 - nanoid: 5.0.7 - pretty-bytes: 6.1.1 - pretty-ms: 8.0.0 - vue: 3.4.30(typescript@5.4.5) - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - '@vue/composition-api' - - debug - - jest - - supports-color - - typescript - - vitest - - '@scalar/api-reference@1.24.20(postcss@8.4.40)(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': - dependencies: - '@headlessui/vue': 1.7.22(vue@3.4.30(typescript@5.4.5)) - '@scalar/api-client': 1.3.19(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@scalar/api-client-modal': 0.0.16(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@scalar/components': 0.12.4(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@scalar/oas-utils': 0.2.5 - '@scalar/openapi-parser': 0.7.1 - '@scalar/snippetz': 0.1.6 - '@scalar/themes': 0.9.8(typescript@5.4.5) - '@scalar/use-toasts': 0.7.4(typescript@5.4.5) - '@scalar/use-tooltip': 1.0.1(typescript@5.4.5) - '@unhead/schema': 1.9.14 - '@unhead/vue': 1.9.14(vue@3.4.30(typescript@5.4.5)) - '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.4.5)) - axios: 1.7.2 - fuse.js: 7.0.0 - github-slugger: 2.0.0 - httpsnippet-lite: 3.0.5 - postcss-nested: 6.0.1(postcss@8.4.40) - unhead: 1.9.14 - unified: 11.0.4 - vue: 3.4.30(typescript@5.4.5) - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - '@vue/composition-api' - - debug - - jest - - postcss - - supports-color - - tailwindcss - - typescript - - vitest - - '@scalar/client-app@0.1.14(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': - dependencies: - '@headlessui/tailwindcss': 0.2.1(tailwindcss@3.4.3) - '@headlessui/vue': 1.7.22(vue@3.4.30(typescript@5.4.5)) - '@scalar/components': 0.12.4(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@scalar/draggable': 0.1.3(typescript@5.4.5) - '@scalar/oas-utils': 0.2.5 - '@scalar/object-utils': 1.1.2 - '@scalar/openapi-parser': 0.7.1 - '@scalar/use-toasts': 0.7.4(typescript@5.4.5) - '@scalar/use-tooltip': 1.0.1(typescript@5.4.5) - '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.4.5)) - axios: 1.7.2 - cva: 1.0.0-beta.1(typescript@5.4.5) - js-cookie: 3.0.5 - nanoid: 5.0.7 - pretty-bytes: 6.1.1 - pretty-ms: 8.0.0 - vue: 3.4.30(typescript@5.4.5) - vue-router: 4.4.0(vue@3.4.30(typescript@5.4.5)) - zod: 3.23.8 - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - '@vue/composition-api' - - debug - - jest - - supports-color - - tailwindcss - - typescript - - vitest - - '@scalar/code-highlight@0.0.5': - dependencies: - hast-util-to-text: 4.0.2 - highlight.js: 11.9.0 - highlightjs-curl: 1.3.0 - highlightjs-vue: 1.0.0 - lowlight: 3.1.0 - rehype-external-links: 3.0.0 - rehype-format: 5.0.0 - rehype-highlight: 7.0.0 - rehype-parse: 9.0.0 - rehype-raw: 7.0.0 - rehype-sanitize: 6.0.0 - rehype-stringify: 10.0.0 - remark-gfm: 4.0.0 - remark-parse: 11.0.0 - remark-rehype: 11.1.0 - unified: 11.0.4 - unist-util-visit: 5.0.0 - transitivePeerDependencies: - - supports-color - - '@scalar/components@0.12.4(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': - dependencies: - '@floating-ui/utils': 0.2.2 - '@floating-ui/vue': 1.0.7(vue@3.4.30(typescript@5.4.5)) - '@headlessui/vue': 1.7.22(vue@3.4.30(typescript@5.4.5)) - '@scalar/code-highlight': 0.0.5 - '@scalar/oas-utils': 0.2.5 - '@storybook/test': 8.1.11(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.4.5)) - cva: 1.0.0-beta.1(typescript@5.4.5) - nanoid: 5.0.7 - radix-vue: 1.8.5(vue@3.4.30(typescript@5.4.5)) - tailwind-merge: 2.4.0 - vue: 3.4.30(typescript@5.4.5) - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - '@vue/composition-api' - - debug - - jest - - supports-color - - typescript - - vitest - - '@scalar/draggable@0.1.3(typescript@5.4.5)': - dependencies: - vue: 3.4.30(typescript@5.4.5) - transitivePeerDependencies: - - typescript - - '@scalar/nextjs-api-reference@0.4.18(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(postcss@8.4.40)(react-dom@18.2.0(react@18.3.1))(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': - dependencies: - '@scalar/api-reference': 1.24.20(postcss@8.4.40)(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - next: 14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - transitivePeerDependencies: - - '@babel/core' - - '@jest/globals' - - '@opentelemetry/api' - - '@playwright/test' - - '@types/bun' - - '@types/jest' - - '@vue/composition-api' - - babel-plugin-macros - - debug - - jest - - postcss - - react-dom - - sass - - supports-color - - tailwindcss - - typescript - - vitest - - '@scalar/oas-utils@0.2.5': - dependencies: - axios: 1.7.2 - nanoid: 5.0.7 - yaml: 2.4.5 - zod: 3.23.8 - transitivePeerDependencies: - - debug - - '@scalar/object-utils@1.1.2': - dependencies: - just-clone: 6.2.0 - - '@scalar/openapi-parser@0.7.1': - dependencies: - ajv: 8.16.0 - ajv-draft-04: 1.0.0(ajv@8.16.0) - ajv-formats: 3.0.1(ajv@8.16.0) - jsonpointer: 5.0.1 - leven: 4.0.0 - yaml: 2.4.5 - - '@scalar/snippetz-core@0.1.4': - dependencies: - '@types/har-format': 1.2.15 - - '@scalar/snippetz-plugin-js-fetch@0.1.1': - dependencies: - '@scalar/snippetz-core': 0.1.4 - - '@scalar/snippetz-plugin-js-ofetch@0.1.1': - dependencies: - '@scalar/snippetz-core': 0.1.4 - - '@scalar/snippetz-plugin-node-fetch@0.1.2': - dependencies: - '@scalar/snippetz-core': 0.1.4 - - '@scalar/snippetz-plugin-node-ofetch@0.1.1': - dependencies: - '@scalar/snippetz-core': 0.1.4 - - '@scalar/snippetz-plugin-node-undici@0.1.6': - dependencies: - '@scalar/snippetz-core': 0.1.4 - - '@scalar/snippetz@0.1.6': - dependencies: - '@scalar/snippetz-core': 0.1.4 - '@scalar/snippetz-plugin-js-fetch': 0.1.1 - '@scalar/snippetz-plugin-js-ofetch': 0.1.1 - '@scalar/snippetz-plugin-node-fetch': 0.1.2 - '@scalar/snippetz-plugin-node-ofetch': 0.1.1 - '@scalar/snippetz-plugin-node-undici': 0.1.6 - - '@scalar/themes@0.9.8(typescript@5.4.5)': - dependencies: - vue: 3.4.30(typescript@5.4.5) - transitivePeerDependencies: - - typescript - - '@scalar/use-codemirror@0.11.4(typescript@5.4.5)': - dependencies: - '@codemirror/autocomplete': 6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.2)(@lezer/common@1.2.1) - '@codemirror/commands': 6.6.0 - '@codemirror/lang-css': 6.2.1(@codemirror/view@6.28.2) - '@codemirror/lang-html': 6.4.9 - '@codemirror/lang-json': 6.0.1 - '@codemirror/lang-yaml': 6.1.1(@codemirror/view@6.28.2) - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.2 - '@lezer/common': 1.2.1 - '@lezer/highlight': 1.2.0 - '@lezer/lr': 1.4.1 - '@replit/codemirror-css-color-picker': 6.1.1(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.2) - '@uiw/codemirror-themes': 4.22.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.2) - codemirror: 6.0.1(@lezer/common@1.2.1) - vue: 3.4.30(typescript@5.4.5) - optionalDependencies: - y-codemirror.next: 0.3.5(@codemirror/state@6.4.1)(@codemirror/view@6.28.2)(yjs@13.6.15) - yjs: 13.6.15 - transitivePeerDependencies: - - typescript - - '@scalar/use-toasts@0.7.4(typescript@5.4.5)': - dependencies: - nanoid: 5.0.7 - vue: 3.4.30(typescript@5.4.5) - vue-sonner: 1.1.3 - transitivePeerDependencies: - - typescript - - '@scalar/use-tooltip@1.0.1(typescript@5.4.5)': - dependencies: - radix-vue: 1.8.5(vue@3.4.30(typescript@5.4.5)) - vue: 3.4.30(typescript@5.4.5) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - '@selderee/plugin-htmlparser2@0.11.0': - dependencies: - domhandler: 5.0.3 - selderee: 0.11.0 - - '@sentry-internal/browser-utils@8.19.0': - dependencies: - '@sentry/core': 8.19.0 - '@sentry/types': 8.19.0 - '@sentry/utils': 8.19.0 - - '@sentry-internal/feedback@8.19.0': - dependencies: - '@sentry/core': 8.19.0 - '@sentry/types': 8.19.0 - '@sentry/utils': 8.19.0 - - '@sentry-internal/replay-canvas@8.19.0': - dependencies: - '@sentry-internal/replay': 8.19.0 - '@sentry/core': 8.19.0 - '@sentry/types': 8.19.0 - '@sentry/utils': 8.19.0 - - '@sentry-internal/replay@8.19.0': - dependencies: - '@sentry-internal/browser-utils': 8.19.0 - '@sentry/core': 8.19.0 - '@sentry/types': 8.19.0 - '@sentry/utils': 8.19.0 - - '@sentry/babel-plugin-component-annotate@2.20.1': {} - - '@sentry/browser@8.19.0': - dependencies: - '@sentry-internal/browser-utils': 8.19.0 - '@sentry-internal/feedback': 8.19.0 - '@sentry-internal/replay': 8.19.0 - '@sentry-internal/replay-canvas': 8.19.0 - '@sentry/core': 8.19.0 - '@sentry/types': 8.19.0 - '@sentry/utils': 8.19.0 - - '@sentry/bundler-plugin-core@2.20.1': - dependencies: - '@babel/core': 7.24.5 - '@sentry/babel-plugin-component-annotate': 2.20.1 - '@sentry/cli': 2.32.1 - dotenv: 16.4.5 - find-up: 5.0.0 - glob: 9.3.5 - magic-string: 0.30.8 - unplugin: 1.0.1 - transitivePeerDependencies: - - encoding - - supports-color - - '@sentry/cli-darwin@2.32.1': - optional: true - - '@sentry/cli-linux-arm64@2.32.1': - optional: true - - '@sentry/cli-linux-arm@2.32.1': - optional: true - - '@sentry/cli-linux-i686@2.32.1': - optional: true - - '@sentry/cli-linux-x64@2.32.1': - optional: true - - '@sentry/cli-win32-i686@2.32.1': - optional: true - - '@sentry/cli-win32-x64@2.32.1': - optional: true - - '@sentry/cli@2.32.1': - dependencies: - https-proxy-agent: 5.0.1 - node-fetch: 2.7.0 - progress: 2.0.3 - proxy-from-env: 1.1.0 - which: 2.0.2 - optionalDependencies: - '@sentry/cli-darwin': 2.32.1 - '@sentry/cli-linux-arm': 2.32.1 - '@sentry/cli-linux-arm64': 2.32.1 - '@sentry/cli-linux-i686': 2.32.1 - '@sentry/cli-linux-x64': 2.32.1 - '@sentry/cli-win32-i686': 2.32.1 - '@sentry/cli-win32-x64': 2.32.1 - transitivePeerDependencies: - - encoding - - supports-color - - '@sentry/core@8.19.0': - dependencies: - '@sentry/types': 8.19.0 - '@sentry/utils': 8.19.0 - - '@sentry/nextjs@8.19.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.92.0)': - dependencies: - '@opentelemetry/instrumentation-http': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@rollup/plugin-commonjs': 26.0.1(rollup@3.29.4) - '@sentry/core': 8.19.0 - '@sentry/node': 8.19.0 - '@sentry/opentelemetry': 8.19.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.25.1) - '@sentry/react': 8.19.0(react@18.3.1) - '@sentry/types': 8.19.0 - '@sentry/utils': 8.19.0 - '@sentry/vercel-edge': 8.19.0 - '@sentry/webpack-plugin': 2.20.1(webpack@5.92.0) - chalk: 3.0.0 - next: 14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - resolve: 1.22.8 - rollup: 3.29.4 - stacktrace-parser: 0.1.10 - optionalDependencies: - webpack: 5.92.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11) - transitivePeerDependencies: - - '@opentelemetry/api' - - '@opentelemetry/core' - - '@opentelemetry/instrumentation' - - '@opentelemetry/sdk-trace-base' - - encoding - - react - - supports-color - - '@sentry/node@8.19.0': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-connect': 0.38.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-express': 0.41.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-fastify': 0.38.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-graphql': 0.42.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-hapi': 0.40.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-http': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-ioredis': 0.42.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-koa': 0.42.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mongodb': 0.46.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mongoose': 0.40.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mysql': 0.40.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mysql2': 0.40.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-nestjs-core': 0.39.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-pg': 0.43.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-redis-4': 0.41.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@prisma/instrumentation': 5.17.0 - '@sentry/core': 8.19.0 - '@sentry/opentelemetry': 8.19.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.25.1) - '@sentry/types': 8.19.0 - '@sentry/utils': 8.19.0 - optionalDependencies: - opentelemetry-instrumentation-fetch-node: 1.2.3(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@sentry/opentelemetry@8.19.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.25.1)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@sentry/core': 8.19.0 - '@sentry/types': 8.19.0 - '@sentry/utils': 8.19.0 - - '@sentry/react@8.19.0(react@18.3.1)': - dependencies: - '@sentry/browser': 8.19.0 - '@sentry/core': 8.19.0 - '@sentry/types': 8.19.0 - '@sentry/utils': 8.19.0 - hoist-non-react-statics: 3.3.2 - react: 18.3.1 - - '@sentry/types@8.19.0': {} - - '@sentry/utils@8.19.0': - dependencies: - '@sentry/types': 8.19.0 - - '@sentry/vercel-edge@8.19.0': - dependencies: - '@sentry/core': 8.19.0 - '@sentry/types': 8.19.0 - '@sentry/utils': 8.19.0 - - '@sentry/webpack-plugin@2.20.1(webpack@5.92.0)': - dependencies: - '@sentry/bundler-plugin-core': 2.20.1 - unplugin: 1.0.1 - uuid: 9.0.1 - webpack: 5.92.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11) - transitivePeerDependencies: - - encoding - - supports-color - - '@simplewebauthn/browser@10.0.0': - dependencies: - '@simplewebauthn/types': 10.0.0 - - '@simplewebauthn/server@10.0.0': - dependencies: - '@hexagon/base64': 1.1.28 - '@levischuck/tiny-cbor': 0.2.2 - '@peculiar/asn1-android': 2.3.10 - '@peculiar/asn1-ecc': 2.3.8 - '@peculiar/asn1-rsa': 2.3.8 - '@peculiar/asn1-schema': 2.3.8 - '@peculiar/asn1-x509': 2.3.8 - '@simplewebauthn/types': 10.0.0 - cross-fetch: 4.0.0 - transitivePeerDependencies: - - encoding - - '@simplewebauthn/types@10.0.0': {} - - '@sinclair/typebox@0.27.8': {} - - '@sindresorhus/slugify@2.2.1': - dependencies: - '@sindresorhus/transliterate': 1.6.0 - escape-string-regexp: 5.0.0 - - '@sindresorhus/transliterate@1.6.0': - dependencies: - escape-string-regexp: 5.0.0 - - '@smithy/abort-controller@3.0.0': - dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/chunked-blob-reader-native@3.0.0': - dependencies: - '@smithy/util-base64': 3.0.0 - tslib: 2.6.2 - - '@smithy/chunked-blob-reader@3.0.0': - dependencies: - tslib: 2.6.2 - - '@smithy/config-resolver@3.0.0': - dependencies: - '@smithy/node-config-provider': 3.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-config-provider': 3.0.0 - '@smithy/util-middleware': 3.0.0 - tslib: 2.6.2 - - '@smithy/core@2.0.1': - dependencies: - '@smithy/middleware-endpoint': 3.0.0 - '@smithy/middleware-retry': 3.0.1 - '@smithy/middleware-serde': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/util-middleware': 3.0.0 - tslib: 2.6.2 - - '@smithy/credential-provider-imds@3.0.0': - dependencies: - '@smithy/node-config-provider': 3.0.0 - '@smithy/property-provider': 3.0.0 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 - tslib: 2.6.2 - - '@smithy/eventstream-codec@3.0.0': - dependencies: - '@aws-crypto/crc32': 3.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-hex-encoding': 3.0.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-browser@3.0.0': - dependencies: - '@smithy/eventstream-serde-universal': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-config-resolver@3.0.0': - dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-node@3.0.0': - dependencies: - '@smithy/eventstream-serde-universal': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-universal@3.0.0': - dependencies: - '@smithy/eventstream-codec': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/fetch-http-handler@3.0.1': - dependencies: - '@smithy/protocol-http': 4.0.0 - '@smithy/querystring-builder': 3.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-base64': 3.0.0 - tslib: 2.6.2 - - '@smithy/hash-blob-browser@3.0.0': - dependencies: - '@smithy/chunked-blob-reader': 3.0.0 - '@smithy/chunked-blob-reader-native': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/hash-node@3.0.0': - dependencies: - '@smithy/types': 3.0.0 - '@smithy/util-buffer-from': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - - '@smithy/hash-stream-node@3.0.0': - dependencies: - '@smithy/types': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - - '@smithy/invalid-dependency@3.0.0': - dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/is-array-buffer@3.0.0': - dependencies: - tslib: 2.6.2 - - '@smithy/md5-js@3.0.0': - dependencies: - '@smithy/types': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - - '@smithy/middleware-content-length@3.0.0': - dependencies: - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/middleware-endpoint@3.0.0': - dependencies: - '@smithy/middleware-serde': 3.0.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/shared-ini-file-loader': 3.0.0 - '@smithy/types': 3.0.0 - '@smithy/url-parser': 3.0.0 - '@smithy/util-middleware': 3.0.0 - tslib: 2.6.2 - - '@smithy/middleware-retry@3.0.1': - dependencies: - '@smithy/node-config-provider': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/service-error-classification': 3.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - '@smithy/util-middleware': 3.0.0 - '@smithy/util-retry': 3.0.0 - tslib: 2.6.2 - uuid: 9.0.1 - - '@smithy/middleware-serde@3.0.0': - dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/middleware-stack@3.0.0': - dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/node-config-provider@3.0.0': - dependencies: - '@smithy/property-provider': 3.0.0 - '@smithy/shared-ini-file-loader': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/node-http-handler@3.0.0': - dependencies: - '@smithy/abort-controller': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/querystring-builder': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/property-provider@3.0.0': - dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/protocol-http@4.0.0': - dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/querystring-builder@3.0.0': - dependencies: - '@smithy/types': 3.0.0 - '@smithy/util-uri-escape': 3.0.0 - tslib: 2.6.2 - - '@smithy/querystring-parser@3.0.0': - dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/service-error-classification@3.0.0': - dependencies: - '@smithy/types': 3.0.0 - - '@smithy/shared-ini-file-loader@3.0.0': - dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/signature-v4@3.0.0': - dependencies: - '@smithy/is-array-buffer': 3.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-hex-encoding': 3.0.0 - '@smithy/util-middleware': 3.0.0 - '@smithy/util-uri-escape': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - - '@smithy/smithy-client@3.0.1': - dependencies: - '@smithy/middleware-endpoint': 3.0.0 - '@smithy/middleware-stack': 3.0.0 - '@smithy/protocol-http': 4.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-stream': 3.0.1 - tslib: 2.6.2 - - '@smithy/types@3.0.0': - dependencies: - tslib: 2.6.2 - - '@smithy/url-parser@3.0.0': - dependencies: - '@smithy/querystring-parser': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/util-base64@3.0.0': - dependencies: - '@smithy/util-buffer-from': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - - '@smithy/util-body-length-browser@3.0.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-body-length-node@3.0.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-buffer-from@3.0.0': - dependencies: - '@smithy/is-array-buffer': 3.0.0 - tslib: 2.6.2 - - '@smithy/util-config-provider@3.0.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-defaults-mode-browser@3.0.1': - dependencies: - '@smithy/property-provider': 3.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - bowser: 2.11.0 - tslib: 2.6.2 - - '@smithy/util-defaults-mode-node@3.0.1': - dependencies: - '@smithy/config-resolver': 3.0.0 - '@smithy/credential-provider-imds': 3.0.0 - '@smithy/node-config-provider': 3.0.0 - '@smithy/property-provider': 3.0.0 - '@smithy/smithy-client': 3.0.1 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/util-endpoints@2.0.0': - dependencies: - '@smithy/node-config-provider': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/util-hex-encoding@3.0.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-middleware@3.0.0': - dependencies: - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/util-retry@3.0.0': - dependencies: - '@smithy/service-error-classification': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@smithy/util-stream@3.0.1': - dependencies: - '@smithy/fetch-http-handler': 3.0.1 - '@smithy/node-http-handler': 3.0.0 - '@smithy/types': 3.0.0 - '@smithy/util-base64': 3.0.0 - '@smithy/util-buffer-from': 3.0.0 - '@smithy/util-hex-encoding': 3.0.0 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 - - '@smithy/util-uri-escape@3.0.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-utf8@3.0.0': - dependencies: - '@smithy/util-buffer-from': 3.0.0 - tslib: 2.6.2 - - '@smithy/util-waiter@3.0.0': - dependencies: - '@smithy/abort-controller': 3.0.0 - '@smithy/types': 3.0.0 - tslib: 2.6.2 - - '@snyk/github-codeowners@1.1.0': - dependencies: - commander: 4.1.1 - ignore: 5.3.1 - p-map: 4.0.0 - - '@socket.io/component-emitter@3.1.2': {} - - '@storybook/channels@8.1.11': - dependencies: - '@storybook/client-logger': 8.1.11 - '@storybook/core-events': 8.1.11 - '@storybook/global': 5.0.0 - telejson: 7.2.0 - tiny-invariant: 1.3.3 - - '@storybook/client-logger@8.1.11': - dependencies: - '@storybook/global': 5.0.0 - - '@storybook/core-events@8.1.11': - dependencies: - '@storybook/csf': 0.1.9 - ts-dedent: 2.2.0 - - '@storybook/csf@0.1.9': - dependencies: - type-fest: 2.19.0 - - '@storybook/global@5.0.0': {} - - '@storybook/instrumenter@8.1.11': - dependencies: - '@storybook/channels': 8.1.11 - '@storybook/client-logger': 8.1.11 - '@storybook/core-events': 8.1.11 - '@storybook/global': 5.0.0 - '@storybook/preview-api': 8.1.11 - '@vitest/utils': 1.6.0 - util: 0.12.5 - - '@storybook/preview-api@8.1.11': - dependencies: - '@storybook/channels': 8.1.11 - '@storybook/client-logger': 8.1.11 - '@storybook/core-events': 8.1.11 - '@storybook/csf': 0.1.9 - '@storybook/global': 5.0.0 - '@storybook/types': 8.1.11 - '@types/qs': 6.9.15 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.12.1 - tiny-invariant: 1.3.3 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/test@8.1.11(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': - dependencies: - '@storybook/client-logger': 8.1.11 - '@storybook/core-events': 8.1.11 - '@storybook/instrumenter': 8.1.11 - '@storybook/preview-api': 8.1.11 - '@testing-library/dom': 10.1.0 - '@testing-library/jest-dom': 6.4.5(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) - '@vitest/expect': 1.6.0 - '@vitest/spy': 1.6.0 - util: 0.12.5 - transitivePeerDependencies: - - '@jest/globals' - - '@types/bun' - - '@types/jest' - - jest - - vitest - - '@storybook/types@8.1.11': - dependencies: - '@storybook/channels': 8.1.11 - '@types/express': 4.17.21 - file-system-cache: 2.3.0 - - '@stripe/stripe-js@4.1.0': {} - - '@swc/core-darwin-arm64@1.3.101': - optional: true - - '@swc/core-darwin-x64@1.3.101': - optional: true - - '@swc/core-linux-arm-gnueabihf@1.3.101': - optional: true - - '@swc/core-linux-arm64-gnu@1.3.101': - optional: true - - '@swc/core-linux-arm64-musl@1.3.101': - optional: true - - '@swc/core-linux-x64-gnu@1.3.101': - optional: true - - '@swc/core-linux-x64-musl@1.3.101': - optional: true - - '@swc/core-win32-arm64-msvc@1.3.101': - optional: true - - '@swc/core-win32-ia32-msvc@1.3.101': - optional: true - - '@swc/core-win32-x64-msvc@1.3.101': - optional: true - - '@swc/core@1.3.101(@swc/helpers@0.5.11)': - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.12 - optionalDependencies: - '@swc/core-darwin-arm64': 1.3.101 - '@swc/core-darwin-x64': 1.3.101 - '@swc/core-linux-arm-gnueabihf': 1.3.101 - '@swc/core-linux-arm64-gnu': 1.3.101 - '@swc/core-linux-arm64-musl': 1.3.101 - '@swc/core-linux-x64-gnu': 1.3.101 - '@swc/core-linux-x64-musl': 1.3.101 - '@swc/core-win32-arm64-msvc': 1.3.101 - '@swc/core-win32-ia32-msvc': 1.3.101 - '@swc/core-win32-x64-msvc': 1.3.101 - '@swc/helpers': 0.5.11 - - '@swc/counter@0.1.3': {} - - '@swc/helpers@0.4.14': - dependencies: - tslib: 2.6.2 - - '@swc/helpers@0.4.36': - dependencies: - legacy-swc-helpers: '@swc/helpers@0.4.14' - tslib: 2.6.2 - - '@swc/helpers@0.5.11': - dependencies: - tslib: 2.6.2 - - '@swc/helpers@0.5.2': - dependencies: - tslib: 2.6.2 - - '@swc/helpers@0.5.5': - dependencies: - '@swc/counter': 0.1.3 - tslib: 2.6.2 - - '@swc/types@0.1.12': - dependencies: - '@swc/counter': 0.1.3 - - '@t3-oss/env-core@0.10.1(typescript@5.4.5)(zod@3.23.8)': - dependencies: - zod: 3.23.8 - optionalDependencies: - typescript: 5.4.5 - - '@t3-oss/env-nextjs@0.10.1(typescript@5.4.5)(zod@3.23.8)': - dependencies: - '@t3-oss/env-core': 0.10.1(typescript@5.4.5)(zod@3.23.8) - zod: 3.23.8 - optionalDependencies: - typescript: 5.4.5 - - '@tailwindcss/typography@0.5.13(tailwindcss@3.4.3)': - dependencies: - lodash.castarray: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.3 - - '@tanstack/query-core@4.36.1': {} - - '@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@tanstack/query-core': 4.36.1 - react: 18.3.1 - use-sync-external-store: 1.2.2(react@18.3.1) - optionalDependencies: - react-dom: 18.2.0(react@18.3.1) - - '@tanstack/react-table@8.20.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@tanstack/table-core': 8.20.1 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - '@tanstack/react-virtual@3.5.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@tanstack/virtual-core': 3.5.1 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - '@tanstack/table-core@8.20.1': {} - - '@tanstack/virtual-core@3.5.1': {} - - '@tanstack/virtual-core@3.7.0': {} - - '@tanstack/vue-virtual@3.7.0(vue@3.4.30(typescript@5.4.5))': - dependencies: - '@tanstack/virtual-core': 3.7.0 - vue: 3.4.30(typescript@5.4.5) - - '@testing-library/dom@10.1.0': - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/runtime': 7.24.5 - '@types/aria-query': 5.0.4 - aria-query: 5.3.0 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 - - '@testing-library/jest-dom@6.4.5(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': - dependencies: - '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.24.5 - aria-query: 5.3.0 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.6.3 - lodash: 4.17.21 - redent: 3.0.0 - optionalDependencies: - vitest: 1.6.0(@types/node@20.12.12)(terser@5.31.1) - - '@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0)': - dependencies: - '@testing-library/dom': 10.1.0 - - '@tiptap/core@2.4.0(@tiptap/pm@2.4.0)': - dependencies: - '@tiptap/pm': 2.4.0 - - '@tiptap/extension-bold@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - - '@tiptap/extension-bubble-menu@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0)': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - '@tiptap/pm': 2.4.0 - tippy.js: 6.3.7 - - '@tiptap/extension-code@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - - '@tiptap/extension-collaboration-cursor@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(y-prosemirror@1.2.1(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6)(y-protocols@1.0.6(yjs@13.6.15))(yjs@13.6.15))': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - y-prosemirror: 1.2.1(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6)(y-protocols@1.0.6(yjs@13.6.15))(yjs@13.6.15) - - '@tiptap/extension-collaboration@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0)(y-prosemirror@1.2.1(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6)(y-protocols@1.0.6(yjs@13.6.15))(yjs@13.6.15))': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - '@tiptap/pm': 2.4.0 - y-prosemirror: 1.2.1(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6)(y-protocols@1.0.6(yjs@13.6.15))(yjs@13.6.15) - - '@tiptap/extension-dropcursor@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0)': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - '@tiptap/pm': 2.4.0 - - '@tiptap/extension-floating-menu@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0)': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - '@tiptap/pm': 2.4.0 - tippy.js: 6.3.7 - - '@tiptap/extension-gapcursor@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0)': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - '@tiptap/pm': 2.4.0 - - '@tiptap/extension-hard-break@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - - '@tiptap/extension-history@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0)': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - '@tiptap/pm': 2.4.0 - - '@tiptap/extension-horizontal-rule@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0)': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - '@tiptap/pm': 2.4.0 - - '@tiptap/extension-italic@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - - '@tiptap/extension-link@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0)': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - '@tiptap/pm': 2.4.0 - linkifyjs: 4.1.3 - - '@tiptap/extension-paragraph@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - - '@tiptap/extension-strike@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - - '@tiptap/extension-table-cell@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - - '@tiptap/extension-table-header@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - - '@tiptap/extension-table-row@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - - '@tiptap/extension-text@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - - '@tiptap/extension-underline@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - - '@tiptap/pm@2.4.0': - dependencies: - prosemirror-changeset: 2.2.1 - prosemirror-collab: 1.3.1 - prosemirror-commands: 1.5.2 - prosemirror-dropcursor: 1.8.1 - prosemirror-gapcursor: 1.3.2 - prosemirror-history: 1.4.0 - prosemirror-inputrules: 1.4.0 - prosemirror-keymap: 1.2.2 - prosemirror-markdown: 1.12.0 - prosemirror-menu: 1.2.4 - prosemirror-model: 1.21.0 - prosemirror-schema-basic: 1.2.2 - prosemirror-schema-list: 1.3.0 - prosemirror-state: 1.4.3 - prosemirror-tables: 1.3.7 - prosemirror-trailing-node: 2.0.8(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6) - prosemirror-transform: 1.9.0 - prosemirror-view: 1.33.6 - - '@tiptap/react@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@tiptap/core': 2.4.0(@tiptap/pm@2.4.0) - '@tiptap/extension-bubble-menu': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0) - '@tiptap/extension-floating-menu': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.4.0))(@tiptap/pm@2.4.0) - '@tiptap/pm': 2.4.0 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - '@tremor/react@3.17.4(react-dom@18.2.0(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.3)': - dependencies: - '@floating-ui/react': 0.19.2(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@headlessui/react': 1.7.19(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@headlessui/tailwindcss': 0.2.1(tailwindcss@3.4.3) - date-fns: 3.6.0 - react: 18.3.1 - react-day-picker: 8.10.1(date-fns@3.6.0)(react@18.3.1) - react-dom: 18.2.0(react@18.3.1) - react-transition-state: 2.1.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - recharts: 2.12.7(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - tailwind-merge: 1.14.0 - transitivePeerDependencies: - - tailwindcss - - '@trpc/client@10.45.2(@trpc/server@10.45.2)': - dependencies: - '@trpc/server': 10.45.2 - - '@trpc/next@10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/react-query@10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/server@10.45.2)(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@tanstack/react-query': 4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@trpc/client': 10.45.2(@trpc/server@10.45.2) - '@trpc/react-query': 10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@trpc/server': 10.45.2 - next: 14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - '@trpc/react-query@10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@tanstack/react-query': 4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@trpc/client': 10.45.2(@trpc/server@10.45.2) - '@trpc/server': 10.45.2 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - '@trpc/server@10.45.2': {} - - '@types/aria-query@5.0.4': {} - - '@types/bcryptjs@2.4.6': {} - - '@types/body-parser@1.19.5': - dependencies: - '@types/connect': 3.4.38 - '@types/node': 20.12.12 - - '@types/connect@3.4.36': - dependencies: - '@types/node': 20.12.12 - - '@types/connect@3.4.38': - dependencies: - '@types/node': 20.12.12 - - '@types/cookie@0.4.1': {} - - '@types/cookie@0.6.0': {} - - '@types/cors@2.8.17': - dependencies: - '@types/node': 20.12.12 - - '@types/d3-array@3.2.1': {} - - '@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.0': {} - - '@types/d3-scale@4.0.8': - dependencies: - '@types/d3-time': 3.0.3 - - '@types/d3-shape@3.1.6': - dependencies: - '@types/d3-path': 3.1.0 - - '@types/d3-time@3.0.3': {} - - '@types/d3-timer@3.0.2': {} - - '@types/debug@4.1.12': - dependencies: - '@types/ms': 0.7.34 - - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 8.56.10 - '@types/estree': 1.0.5 - - '@types/eslint@8.56.10': - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - - '@types/estree@1.0.5': {} - - '@types/express-serve-static-core@4.19.3': - dependencies: - '@types/node': 20.12.12 - '@types/qs': 6.9.15 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 - - '@types/express@4.17.21': - dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.19.3 - '@types/qs': 6.9.15 - '@types/serve-static': 1.15.7 - - '@types/extend@3.0.4': {} - - '@types/har-format@1.2.15': {} - - '@types/hast@2.3.10': - dependencies: - '@types/unist': 2.0.10 - - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.2 - - '@types/http-errors@2.0.4': {} - - '@types/inquirer@9.0.7': - dependencies: - '@types/through': 0.0.33 - rxjs: 7.8.1 - - '@types/json-schema@7.0.15': {} - - '@types/lodash-es@4.17.12': - dependencies: - '@types/lodash': 4.17.4 - - '@types/lodash@4.17.4': {} - - '@types/mdast@3.0.15': - dependencies: - '@types/unist': 2.0.10 - - '@types/mdast@4.0.4': - dependencies: - '@types/unist': 3.0.2 - - '@types/mime@1.3.5': {} - - '@types/ms@0.7.34': {} - - '@types/mysql@2.15.22': - dependencies: - '@types/node': 20.12.12 - - '@types/node@20.12.12': - dependencies: - undici-types: 5.26.5 - - '@types/nodemailer@6.4.15': - dependencies: - '@types/node': 20.12.12 - - '@types/papaparse@5.3.14': - dependencies: - '@types/node': 20.12.12 - - '@types/parse5@6.0.3': {} - - '@types/pg-pool@2.0.4': - dependencies: - '@types/pg': 8.6.1 - - '@types/pg@8.6.1': - dependencies: - '@types/node': 20.12.12 - pg-protocol: 1.6.1 - pg-types: 2.2.0 - - '@types/prismjs@1.26.4': {} - - '@types/prop-types@15.7.12': {} - - '@types/qs@6.9.15': {} - - '@types/range-parser@1.2.7': {} - - '@types/react-dom@18.3.0': - dependencies: - '@types/react': 18.3.3 - - '@types/react@18.2.47': - dependencies: - '@types/prop-types': 15.7.12 - '@types/scheduler': 0.23.0 - csstype: 3.1.3 - - '@types/react@18.3.3': - dependencies: - '@types/prop-types': 15.7.12 - csstype: 3.1.3 - - '@types/scheduler@0.23.0': {} - - '@types/send@0.17.4': - dependencies: - '@types/mime': 1.3.5 - '@types/node': 20.12.12 - - '@types/serve-static@1.15.7': - dependencies: - '@types/http-errors': 2.0.4 - '@types/node': 20.12.12 - '@types/send': 0.17.4 - - '@types/shimmer@1.0.5': {} - - '@types/through@0.0.33': - dependencies: - '@types/node': 20.12.12 - - '@types/ua-parser-js@0.7.39': {} - - '@types/unist@2.0.10': {} - - '@types/unist@3.0.2': {} - - '@types/web-bluetooth@0.0.20': {} - - '@types/webpack@5.28.5(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)': - dependencies: - '@types/node': 20.12.12 - tapable: 2.2.1 - webpack: 5.92.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - - '@uiw/codemirror-themes@4.22.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.2)': - dependencies: - '@codemirror/language': 6.10.2 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.2 - - '@ungap/structured-clone@1.2.0': {} - - '@unhead/dom@1.9.14': - dependencies: - '@unhead/schema': 1.9.14 - '@unhead/shared': 1.9.14 - - '@unhead/schema@1.9.14': - dependencies: - hookable: 5.5.3 - zhead: 2.2.4 - - '@unhead/shared@1.9.14': - dependencies: - '@unhead/schema': 1.9.14 - - '@unhead/vue@1.9.14(vue@3.4.30(typescript@5.4.5))': - dependencies: - '@unhead/schema': 1.9.14 - '@unhead/shared': 1.9.14 - hookable: 5.5.3 - unhead: 1.9.14 - vue: 3.4.30(typescript@5.4.5) - - '@vitest/expect@1.6.0': - dependencies: - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - chai: 4.4.1 - - '@vitest/runner@1.6.0': - dependencies: - '@vitest/utils': 1.6.0 - p-limit: 5.0.0 - pathe: 1.1.2 - - '@vitest/snapshot@1.6.0': - dependencies: - magic-string: 0.30.10 - pathe: 1.1.2 - pretty-format: 29.7.0 - - '@vitest/spy@1.6.0': - dependencies: - tinyspy: 2.2.1 - - '@vitest/utils@1.6.0': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - - '@vue/compiler-core@3.4.30': - dependencies: - '@babel/parser': 7.24.7 - '@vue/shared': 3.4.30 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.0 - - '@vue/compiler-dom@3.4.30': - dependencies: - '@vue/compiler-core': 3.4.30 - '@vue/shared': 3.4.30 - - '@vue/compiler-sfc@3.4.30': - dependencies: - '@babel/parser': 7.24.7 - '@vue/compiler-core': 3.4.30 - '@vue/compiler-dom': 3.4.30 - '@vue/compiler-ssr': 3.4.30 - '@vue/shared': 3.4.30 - estree-walker: 2.0.2 - magic-string: 0.30.10 - postcss: 8.4.40 - source-map-js: 1.2.0 - - '@vue/compiler-ssr@3.4.30': - dependencies: - '@vue/compiler-dom': 3.4.30 - '@vue/shared': 3.4.30 - - '@vue/devtools-api@6.6.3': {} - - '@vue/reactivity@3.4.30': - dependencies: - '@vue/shared': 3.4.30 - - '@vue/runtime-core@3.4.30': - dependencies: - '@vue/reactivity': 3.4.30 - '@vue/shared': 3.4.30 - - '@vue/runtime-dom@3.4.30': - dependencies: - '@vue/reactivity': 3.4.30 - '@vue/runtime-core': 3.4.30 - '@vue/shared': 3.4.30 - csstype: 3.1.3 - - '@vue/server-renderer@3.4.30(vue@3.4.30(typescript@5.4.5))': - dependencies: - '@vue/compiler-ssr': 3.4.30 - '@vue/shared': 3.4.30 - vue: 3.4.30(typescript@5.4.5) - - '@vue/shared@3.4.30': {} - - '@vueuse/core@10.11.0(vue@3.4.30(typescript@5.4.5))': - dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 10.11.0 - '@vueuse/shared': 10.11.0(vue@3.4.30(typescript@5.4.5)) - vue-demi: 0.14.8(vue@3.4.30(typescript@5.4.5)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/metadata@10.11.0': {} - - '@vueuse/shared@10.11.0(vue@3.4.30(typescript@5.4.5))': - dependencies: - vue-demi: 0.14.8(vue@3.4.30(typescript@5.4.5)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@webassemblyjs/ast@1.12.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - - '@webassemblyjs/floating-point-hex-parser@1.11.6': {} - - '@webassemblyjs/helper-api-error@1.11.6': {} - - '@webassemblyjs/helper-buffer@1.12.1': {} - - '@webassemblyjs/helper-numbers@1.11.6': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} - - '@webassemblyjs/helper-wasm-section@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.12.1 - - '@webassemblyjs/ieee754@1.11.6': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.11.6': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.11.6': {} - - '@webassemblyjs/wasm-edit@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-opt': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - '@webassemblyjs/wast-printer': 1.12.1 - - '@webassemblyjs/wasm-gen@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - - '@webassemblyjs/wasm-opt@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - - '@webassemblyjs/wasm-parser@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - - '@webassemblyjs/wast-printer@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@xtuc/long': 4.2.2 - - '@wojtekmaj/react-hooks@1.20.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - - '@zag-js/accordion@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/anatomy@0.38.0': {} - - '@zag-js/aria-hidden@0.38.0': - dependencies: - '@zag-js/dom-query': 0.38.0 - - '@zag-js/auto-resize@0.38.0': - dependencies: - '@zag-js/dom-query': 0.38.0 - - '@zag-js/avatar@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/mutation-observer': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/carousel@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/checkbox@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/form-utils': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - '@zag-js/visually-hidden': 0.38.0 - - '@zag-js/clipboard@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/collapsible@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/collection@0.38.0': {} - - '@zag-js/color-picker@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/color-utils': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dismissable': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/form-utils': 0.38.0 - '@zag-js/popper': 0.38.0 - '@zag-js/tabbable': 0.38.0 - '@zag-js/text-selection': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - '@zag-js/visually-hidden': 0.38.0 - - '@zag-js/color-utils@0.38.0': - dependencies: - '@zag-js/numeric-range': 0.38.0 - - '@zag-js/combobox@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/aria-hidden': 0.38.0 - '@zag-js/collection': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dismissable': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/mutation-observer': 0.38.0 - '@zag-js/popper': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/core@0.38.0': - dependencies: - '@zag-js/store': 0.38.0 - klona: 2.0.6 - - '@zag-js/date-picker@0.38.0': - dependencies: - '@internationalized/date': 3.5.2 - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/date-utils': 0.38.0(@internationalized/date@3.5.2) - '@zag-js/dismissable': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/form-utils': 0.38.0 - '@zag-js/live-region': 0.38.0 - '@zag-js/popper': 0.38.0 - '@zag-js/text-selection': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/date-utils@0.38.0(@internationalized/date@3.5.2)': - dependencies: - '@internationalized/date': 3.5.2 - - '@zag-js/dialog@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/aria-hidden': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dismissable': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/remove-scroll': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - focus-trap: 7.5.4 - - '@zag-js/dismissable@0.38.0': - dependencies: - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/interact-outside': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/dom-event@0.38.0': - dependencies: - '@zag-js/text-selection': 0.38.0 - '@zag-js/types': 0.38.0 - - '@zag-js/dom-query@0.38.0': {} - - '@zag-js/editable@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/form-utils': 0.38.0 - '@zag-js/interact-outside': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/element-rect@0.38.0': {} - - '@zag-js/element-size@0.38.0': {} - - '@zag-js/file-upload@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/file-utils': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - '@zag-js/visually-hidden': 0.38.0 - - '@zag-js/file-utils@0.38.0': - dependencies: - '@zag-js/i18n-utils': 0.38.0 - - '@zag-js/form-utils@0.38.0': - dependencies: - '@zag-js/mutation-observer': 0.38.0 - - '@zag-js/hover-card@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dismissable': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/popper': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/i18n-utils@0.38.0': - dependencies: - '@zag-js/dom-query': 0.38.0 - - '@zag-js/interact-outside@0.38.0': - dependencies: - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/tabbable': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/live-region@0.38.0': - dependencies: - '@zag-js/visually-hidden': 0.38.0 - - '@zag-js/menu@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dismissable': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/mutation-observer': 0.38.0 - '@zag-js/popper': 0.38.0 - '@zag-js/rect-utils': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/mutation-observer@0.38.0': {} - - '@zag-js/number-input@0.38.0': - dependencies: - '@internationalized/number': 3.5.1 - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/form-utils': 0.38.0 - '@zag-js/mutation-observer': 0.38.0 - '@zag-js/number-utils': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/number-utils@0.38.0': {} - - '@zag-js/numeric-range@0.38.0': {} - - '@zag-js/pagination@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/pin-input@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/form-utils': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - '@zag-js/visually-hidden': 0.38.0 - - '@zag-js/popover@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/aria-hidden': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dismissable': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/popper': 0.38.0 - '@zag-js/remove-scroll': 0.38.0 - '@zag-js/tabbable': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - focus-trap: 7.5.4 - - '@zag-js/popper@0.38.0': - dependencies: - '@floating-ui/dom': 1.6.3 - '@zag-js/dom-query': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/presence@0.38.0': - dependencies: - '@zag-js/core': 0.38.0 - '@zag-js/types': 0.38.0 - - '@zag-js/progress@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/radio-group@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/element-rect': 0.38.0 - '@zag-js/form-utils': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - '@zag-js/visually-hidden': 0.38.0 - - '@zag-js/rating-group@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/form-utils': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/react@0.38.0(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': - dependencies: - '@zag-js/core': 0.38.0 - '@zag-js/store': 0.38.0 - '@zag-js/types': 0.38.0 - proxy-compare: 2.6.0 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - '@zag-js/rect-utils@0.38.0': {} - - '@zag-js/remove-scroll@0.38.0': - dependencies: - '@zag-js/dom-query': 0.38.0 - - '@zag-js/select@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/collection': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dismissable': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/form-utils': 0.38.0 - '@zag-js/mutation-observer': 0.38.0 - '@zag-js/popper': 0.38.0 - '@zag-js/tabbable': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - '@zag-js/visually-hidden': 0.38.0 - - '@zag-js/slider@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/element-size': 0.38.0 - '@zag-js/form-utils': 0.38.0 - '@zag-js/numeric-range': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/splitter@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/number-utils': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/store@0.38.0': - dependencies: - proxy-compare: 2.6.0 - - '@zag-js/switch@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/form-utils': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - '@zag-js/visually-hidden': 0.38.0 - - '@zag-js/tabbable@0.38.0': - dependencies: - '@zag-js/dom-query': 0.38.0 - - '@zag-js/tabs@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/element-rect': 0.38.0 - '@zag-js/tabbable': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/tags-input@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/auto-resize': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/form-utils': 0.38.0 - '@zag-js/interact-outside': 0.38.0 - '@zag-js/live-region': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/text-selection@0.38.0': - dependencies: - '@zag-js/dom-query': 0.38.0 - - '@zag-js/toast@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/toggle-group@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/tooltip@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/popper': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/tree-view@0.38.0': - dependencies: - '@zag-js/anatomy': 0.38.0 - '@zag-js/core': 0.38.0 - '@zag-js/dom-event': 0.38.0 - '@zag-js/dom-query': 0.38.0 - '@zag-js/mutation-observer': 0.38.0 - '@zag-js/types': 0.38.0 - '@zag-js/utils': 0.38.0 - - '@zag-js/types@0.38.0': - dependencies: - csstype: 3.1.3 - - '@zag-js/utils@0.38.0': {} - - '@zag-js/visually-hidden@0.38.0': {} - - abbrev@1.1.1: - optional: true - - abbrev@2.0.0: {} - - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - - abs-svg-path@0.1.1: {} - - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - - acorn-import-assertions@1.9.0(acorn@8.11.3): - dependencies: - acorn: 8.11.3 - optional: true - - acorn-import-attributes@1.9.5(acorn@8.11.3): - dependencies: - acorn: 8.11.3 - - acorn-jsx@5.3.2(acorn@8.12.1): - dependencies: - acorn: 8.12.1 - - acorn-walk@8.3.2: {} - - acorn@8.11.3: {} - - acorn@8.12.1: {} - - agent-base@6.0.2: - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - - ajv-draft-04@1.0.0(ajv@8.16.0): - optionalDependencies: - ajv: 8.16.0 - - ajv-formats@3.0.1(ajv@8.16.0): - optionalDependencies: - ajv: 8.16.0 - - ajv-keywords@3.5.2(ajv@6.12.6): - dependencies: - ajv: 6.12.6 - - 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.16.0: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - - ansi-escapes@6.2.1: {} - - ansi-regex@5.0.1: {} - - ansi-regex@6.0.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@5.2.0: {} - - ansi-styles@6.2.1: {} - - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - aproba@2.0.0: - optional: true - - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - optional: true - - arg@5.0.2: {} - - argparse@2.0.1: {} - - aria-hidden@1.2.4: - dependencies: - tslib: 2.6.2 - - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 - - arity-n@1.0.4: {} - - array-last@1.3.0: - dependencies: - is-number: 4.0.0 - - asn1js@3.0.5: - dependencies: - pvtsutils: 1.3.5 - pvutils: 1.1.3 - tslib: 2.6.2 - - assertion-error@1.1.0: {} - - async@3.2.5: {} - - asynckit@0.4.0: {} - - atomic-sleep@1.0.0: {} - - attr-accept@2.2.2: {} - - autoprefixer@10.4.14(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001620 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - autoprefixer@10.4.19(postcss@8.4.40): - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001620 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.4.40 - postcss-value-parser: 4.2.0 - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - - axios@1.7.2: - dependencies: - follow-redirects: 1.15.6 - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - babylon@6.18.0: {} - - bail@2.0.2: {} - - balanced-match@1.0.2: {} - - base64-js@1.5.1: {} - - base64id@2.0.0: {} - - bcryptjs@2.4.3: {} - - bidi-js@1.0.3: - dependencies: - require-from-string: 2.0.2 - - binary-extensions@2.3.0: {} - - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - - bowser@2.11.0: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - - brotli@1.3.3: - dependencies: - base64-js: 1.5.1 - - browserify-zlib@0.2.0: - dependencies: - pako: 1.0.11 - - browserslist@4.23.0: - dependencies: - caniuse-lite: 1.0.30001620 - electron-to-chromium: 1.4.774 - node-releases: 2.0.14 - update-browserslist-db: 1.0.16(browserslist@4.23.0) - - buffer-from@1.1.2: {} - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - - cac@6.7.14: {} - - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - - callsites@3.1.0: {} - - camelcase-css@2.0.1: {} - - caniuse-lite@1.0.30001620: {} - - canvas@2.11.2: - dependencies: - '@mapbox/node-pre-gyp': 1.0.11 - nan: 2.19.0 - simple-get: 3.1.1 - transitivePeerDependencies: - - encoding - - supports-color - optional: true - - ccount@2.0.1: {} - - chai@4.4.1: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.0.8 - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@3.0.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.3.0: {} - - character-entities-html4@2.1.0: {} - - character-entities-legacy@3.0.0: {} - - character-entities@2.0.2: {} - - chardet@0.7.0: {} - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.5.3: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - 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@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - 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 - - chownr@2.0.0: - optional: true - - chrome-trace-event@1.0.4: {} - - cjs-module-lexer@1.3.1: {} - - class-variance-authority@0.7.0: - dependencies: - clsx: 2.0.0 - - clean-stack@2.2.0: {} - - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - - cli-cursor@4.0.0: - dependencies: - restore-cursor: 4.0.0 - - cli-spinners@2.9.2: {} - - cli-truncate@4.0.0: - dependencies: - slice-ansi: 5.0.0 - string-width: 7.1.0 - - 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 - - clone@1.0.4: {} - - clone@2.1.2: {} - - clsx@1.2.1: {} - - clsx@2.0.0: {} - - clsx@2.1.0: {} - - clsx@2.1.1: {} - - cmdk@1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - codemirror@6.0.1(@lezer/common@1.2.1): - dependencies: - '@codemirror/autocomplete': 6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.2)(@lezer/common@1.2.1) - '@codemirror/commands': 6.6.0 - '@codemirror/language': 6.10.2 - '@codemirror/lint': 6.8.1 - '@codemirror/search': 6.5.6 - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.2 - transitivePeerDependencies: - - '@lezer/common' - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - - color-support@1.1.3: - optional: true - - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - - colorette@2.0.20: {} - - colors@1.4.0: {} - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - comma-separated-tokens@2.0.3: {} - - commander@10.0.1: {} - - commander@11.1.0: {} - - commander@2.20.3: {} - - commander@4.1.1: {} - - commander@7.2.0: {} - - commondir@1.0.1: {} - - compose-function@3.0.3: - dependencies: - arity-n: 1.0.4 - - concat-map@0.0.1: {} - - confbox@0.1.7: {} - - config-chain@1.1.13: - dependencies: - ini: 1.3.8 - proto-list: 1.2.4 - - console-control-strings@1.1.0: - optional: true - - convert-source-map@2.0.0: {} - - cookie@0.4.2: {} - - cookie@0.5.0: {} - - cookie@0.6.0: {} - - copy-anything@3.0.5: - dependencies: - is-what: 4.1.16 - - cors@2.8.5: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - - crelt@1.0.6: {} - - cron-parser@4.9.0: - dependencies: - luxon: 3.4.4 - - cross-fetch@3.1.8: - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - - cross-fetch@4.0.0: - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - crypto-js@4.2.0: {} - - css.escape@1.5.1: {} - - cssesc@3.0.0: {} - - csstype@3.1.3: {} - - cva@1.0.0-beta.1(typescript@5.4.5): - dependencies: - clsx: 2.0.0 - optionalDependencies: - typescript: 5.4.5 - - d3-array@3.2.4: - dependencies: - internmap: 2.0.3 - - d3-color@3.1.0: {} - - d3-ease@3.0.1: {} - - d3-format@3.1.0: {} - - 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.0 - 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: {} - - date-fns@3.6.0: {} - - dateformat@4.6.3: {} - - dayjs@1.11.11: {} - - debounce@1.2.1: {} - - debounce@2.0.0: {} - - debug@4.3.4: - dependencies: - ms: 2.1.2 - - decimal.js-light@2.5.1: {} - - decode-named-character-reference@1.0.2: - dependencies: - character-entities: 2.0.2 - - decompress-response@4.2.1: - dependencies: - mimic-response: 2.1.0 - optional: true - - deep-eql@4.1.4: - dependencies: - type-detect: 4.0.8 - - deep-freeze@0.0.1: {} - - deep-is@0.1.4: {} - - deepmerge@4.3.1: {} - - defaults@1.0.4: - dependencies: - clone: 1.0.4 - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - - defu@6.1.4: {} - - delay@5.0.0: {} - - delayed-stream@1.0.0: {} - - delegates@1.0.0: - optional: true - - dequal@2.0.3: {} - - detect-libc@2.0.3: {} - - detect-node-es@1.1.0: {} - - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - - dfa@1.2.0: {} - - didyoumean@1.2.2: {} - - diff-sequences@29.6.3: {} - - diff@5.2.0: {} - - dlv@1.1.3: {} - - dom-accessibility-api@0.5.16: {} - - dom-accessibility-api@0.6.3: {} - - dom-helpers@5.2.1: - dependencies: - '@babel/runtime': 7.24.5 - csstype: 3.1.3 - - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domelementtype@2.3.0: {} - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - domutils@3.1.0: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - - dotenv@16.0.3: {} - - dotenv@16.4.5: {} - - duplexer@0.1.2: {} - - eastasianwidth@0.2.0: {} - - easy-table@1.2.0: - dependencies: - ansi-regex: 5.0.1 - optionalDependencies: - wcwidth: 1.0.1 - - editorconfig@1.0.4: - dependencies: - '@one-ini/wasm': 0.1.1 - commander: 10.0.1 - minimatch: 9.0.1 - semver: 7.6.2 - - ejs@3.1.10: - dependencies: - jake: 10.9.1 - - electron-to-chromium@1.4.774: {} - - emoji-regex@10.3.0: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - - engine.io-client@6.5.4: - dependencies: - '@socket.io/component-emitter': 3.1.2 - debug: 4.3.4 - engine.io-parser: 5.2.3 - ws: 8.17.1 - xmlhttprequest-ssl: 2.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - engine.io-parser@5.2.3: {} - - engine.io@6.5.5: - dependencies: - '@types/cookie': 0.4.1 - '@types/cors': 2.8.17 - '@types/node': 20.12.12 - accepts: 1.3.8 - base64id: 2.0.0 - cookie: 0.4.2 - cors: 2.8.5 - debug: 4.3.4 - engine.io-parser: 5.2.3 - ws: 8.17.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - enhanced-resolve@5.17.0: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - - entities@4.5.0: {} - - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - - es-errors@1.3.0: {} - - es-module-lexer@1.5.3: {} - - esbuild@0.19.11: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.11 - '@esbuild/android-arm': 0.19.11 - '@esbuild/android-arm64': 0.19.11 - '@esbuild/android-x64': 0.19.11 - '@esbuild/darwin-arm64': 0.19.11 - '@esbuild/darwin-x64': 0.19.11 - '@esbuild/freebsd-arm64': 0.19.11 - '@esbuild/freebsd-x64': 0.19.11 - '@esbuild/linux-arm': 0.19.11 - '@esbuild/linux-arm64': 0.19.11 - '@esbuild/linux-ia32': 0.19.11 - '@esbuild/linux-loong64': 0.19.11 - '@esbuild/linux-mips64el': 0.19.11 - '@esbuild/linux-ppc64': 0.19.11 - '@esbuild/linux-riscv64': 0.19.11 - '@esbuild/linux-s390x': 0.19.11 - '@esbuild/linux-x64': 0.19.11 - '@esbuild/netbsd-x64': 0.19.11 - '@esbuild/openbsd-x64': 0.19.11 - '@esbuild/sunos-x64': 0.19.11 - '@esbuild/win32-arm64': 0.19.11 - '@esbuild/win32-ia32': 0.19.11 - '@esbuild/win32-x64': 0.19.11 - - esbuild@0.20.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 - - esbuild@0.21.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - - escalade@3.1.2: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@4.0.0: {} - - escape-string-regexp@5.0.0: {} - - eslint-config-prettier@9.0.0(eslint@9.8.0): - dependencies: - eslint: 9.8.0 - - eslint-config-turbo@1.10.12(eslint@9.8.0): - dependencies: - eslint: 9.8.0 - eslint-plugin-turbo: 1.10.12(eslint@9.8.0) - - eslint-plugin-turbo@1.10.12(eslint@9.8.0): - dependencies: - dotenv: 16.0.3 - eslint: 9.8.0 - - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - eslint-scope@8.0.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.0.0: {} - - eslint@9.8.0: - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) - '@eslint-community/regexpp': 4.11.0 - '@eslint/config-array': 0.17.1 - '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.8.0 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.3.0 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - escape-string-regexp: 4.0.0 - eslint-scope: 8.0.2 - eslint-visitor-keys: 4.0.0 - espree: 10.1.0 - esquery: 1.6.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.1 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - espree@10.1.0: - dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 4.0.0 - - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@4.3.0: {} - - estraverse@5.3.0: {} - - estree-walker@2.0.2: {} - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.5 - - esutils@2.0.3: {} - - event-target-shim@5.0.1: {} - - eventemitter3@4.0.7: {} - - eventemitter3@5.0.1: {} - - events@3.3.0: {} - - execa@8.0.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - - extend@3.0.2: {} - - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - - fast-copy@3.0.2: {} - - fast-deep-equal@2.0.1: {} - - fast-deep-equal@3.1.3: {} - - fast-equals@5.0.1: {} - - fast-glob@3.3.2: - 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.5 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fast-redact@3.5.0: {} - - fast-safe-stringify@2.1.1: {} - - fast-xml-parser@4.2.5: - dependencies: - strnum: 1.0.5 - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - file-selector@0.6.0: - dependencies: - tslib: 2.6.2 - - file-system-cache@2.3.0: - dependencies: - fs-extra: 11.1.1 - ramda: 0.29.0 - - filelist@1.0.4: - dependencies: - minimatch: 5.1.6 - - fill-range@7.0.1: - dependencies: - to-regex-range: 5.0.1 - - filter-iterator@0.0.1: {} - - filter-obj@1.1.0: {} - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@4.0.1: - dependencies: - flatted: 3.3.1 - keyv: 4.5.4 - - flatted@3.3.1: {} - - focus-trap@7.5.4: - dependencies: - tabbable: 6.2.0 - - follow-redirects@1.15.6: {} - - fontkit@2.0.2: - dependencies: - '@swc/helpers': 0.4.36 - brotli: 1.3.3 - clone: 2.1.2 - dfa: 1.2.0 - fast-deep-equal: 3.1.3 - restructure: 3.0.1 - tiny-inflate: 1.0.3 - unicode-properties: 1.4.1 - unicode-trie: 2.0.0 - - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - - foreground-child@3.1.1: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - - form-data@4.0.0: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - formdata-node@4.4.1: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 4.0.0-beta.3 - - fraction.js@4.3.7: {} - - framer-motion@10.17.4(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - tslib: 2.6.2 - optionalDependencies: - '@emotion/is-prop-valid': 0.8.8 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - fs-extra@11.1.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - optional: true - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - fuse.js@7.0.0: {} - - gauge@3.0.2: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - optional: true - - gensync@1.0.0-beta.2: {} - - get-caller-file@2.0.5: {} - - get-east-asian-width@1.2.0: {} - - get-func-name@2.0.2: {} - - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - - get-nonce@1.0.1: {} - - get-own-enumerable-property-symbols@3.0.2: {} - - get-stream@8.0.1: {} - - get-tsconfig@4.7.5: - dependencies: - resolve-pkg-maps: 1.0.0 - - github-slugger@2.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@10.3.15: - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.4 - minipass: 7.1.1 - path-scurry: 1.11.1 - - glob@10.3.4: - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.4 - minipass: 7.1.2 - path-scurry: 1.11.1 - - glob@10.4.5: - dependencies: - foreground-child: 3.1.1 - jackspeak: 3.4.3 - minimatch: 9.0.4 - minipass: 7.1.2 - package-json-from-dist: 1.0.0 - path-scurry: 1.11.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 - optional: true - - glob@9.3.5: - dependencies: - fs.realpath: 1.0.0 - minimatch: 8.0.4 - minipass: 4.2.8 - path-scurry: 1.11.1 - - globals@11.12.0: {} - - globals@14.0.0: {} - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - - graceful-fs@4.2.11: {} - - gzip-size@6.0.0: - dependencies: - duplexer: 0.1.2 - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - has-own-property@0.1.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.0.3 - - has-unicode@2.0.1: - optional: true - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hast-util-embedded@2.0.1: - dependencies: - hast-util-is-element: 2.1.3 - - hast-util-embedded@3.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-is-element: 3.0.0 - - hast-util-from-dom@4.2.0: - dependencies: - hastscript: 7.2.0 - web-namespaces: 2.0.1 - - hast-util-from-html@2.0.1: - dependencies: - '@types/hast': 3.0.4 - devlop: 1.1.0 - hast-util-from-parse5: 8.0.1 - parse5: 7.1.2 - vfile: 6.0.1 - vfile-message: 4.0.2 - - hast-util-from-parse5@7.1.2: - dependencies: - '@types/hast': 2.3.10 - '@types/unist': 2.0.10 - hastscript: 7.2.0 - property-information: 6.5.0 - vfile: 5.3.7 - vfile-location: 4.1.0 - web-namespaces: 2.0.1 - - hast-util-from-parse5@8.0.1: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - devlop: 1.1.0 - hastscript: 8.0.0 - property-information: 6.5.0 - vfile: 6.0.1 - vfile-location: 5.0.2 - web-namespaces: 2.0.1 - - hast-util-has-property@2.0.1: {} - - hast-util-has-property@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-is-body-ok-link@2.0.0: - dependencies: - '@types/hast': 2.3.10 - hast-util-has-property: 2.0.1 - hast-util-is-element: 2.1.3 - - hast-util-is-body-ok-link@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-is-element@2.1.3: - dependencies: - '@types/hast': 2.3.10 - '@types/unist': 2.0.10 - - hast-util-is-element@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-parse-selector@3.1.1: - dependencies: - '@types/hast': 2.3.10 - - hast-util-parse-selector@4.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-phrasing@2.0.2: - dependencies: - '@types/hast': 2.3.10 - hast-util-embedded: 2.0.1 - hast-util-has-property: 2.0.1 - hast-util-is-body-ok-link: 2.0.0 - hast-util-is-element: 2.1.3 - - hast-util-phrasing@3.0.1: - dependencies: - '@types/hast': 3.0.4 - hast-util-embedded: 3.0.0 - hast-util-has-property: 3.0.0 - hast-util-is-body-ok-link: 3.0.0 - hast-util-is-element: 3.0.0 - - hast-util-raw@7.2.3: - dependencies: - '@types/hast': 2.3.10 - '@types/parse5': 6.0.3 - hast-util-from-parse5: 7.1.2 - hast-util-to-parse5: 7.1.0 - html-void-elements: 2.0.1 - parse5: 6.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - vfile: 5.3.7 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-raw@9.0.3: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - '@ungap/structured-clone': 1.2.0 - hast-util-from-parse5: 8.0.1 - hast-util-to-parse5: 8.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 - parse5: 7.1.2 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.1 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-sanitize@5.0.1: - dependencies: - '@types/hast': 3.0.4 - '@ungap/structured-clone': 1.2.0 - unist-util-position: 5.0.0 - - hast-util-to-html@8.0.4: - dependencies: - '@types/hast': 2.3.10 - '@types/unist': 2.0.10 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-raw: 7.2.3 - hast-util-whitespace: 2.0.1 - html-void-elements: 2.0.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.4 - zwitch: 2.0.4 - - hast-util-to-html@9.0.1: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-raw: 9.0.3 - hast-util-whitespace: 3.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.4 - zwitch: 2.0.4 - - hast-util-to-mdast@8.4.1: - dependencies: - '@types/extend': 3.0.4 - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - extend: 3.0.2 - hast-util-has-property: 2.0.1 - hast-util-is-element: 2.1.3 - hast-util-phrasing: 2.0.2 - hast-util-to-text: 3.1.2 - mdast-util-phrasing: 3.0.1 - mdast-util-to-string: 3.2.0 - rehype-minify-whitespace: 5.0.1 - trim-trailing-lines: 2.1.0 - unist-util-is: 5.2.1 - unist-util-visit: 4.1.2 - - hast-util-to-parse5@7.1.0: - dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 2.0.3 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-parse5@8.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-text@3.1.2: - dependencies: - '@types/hast': 2.3.10 - '@types/unist': 2.0.10 - hast-util-is-element: 2.1.3 - unist-util-find-after: 4.0.1 - - hast-util-to-text@4.0.2: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - hast-util-is-element: 3.0.0 - unist-util-find-after: 5.0.0 - - hast-util-whitespace@2.0.1: {} - - hast-util-whitespace@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hastscript@7.2.0: - dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 3.1.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - - hastscript@8.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 4.0.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - - help-me@5.0.0: {} - - highlight.js@11.9.0: {} - - highlightjs-curl@1.3.0: {} - - highlightjs-vue@1.0.0: {} - - hoist-non-react-statics@3.3.2: - dependencies: - react-is: 16.13.1 - - hono@4.5.8: {} - - hookable@5.5.3: {} - - hsl-to-hex@1.0.0: - dependencies: - hsl-to-rgb-for-reals: 1.1.1 - - hsl-to-rgb-for-reals@1.1.1: {} - - html-escaper@2.0.2: {} - - html-to-image@1.11.11: {} - - html-to-text@9.0.5: - dependencies: - '@selderee/plugin-htmlparser2': 0.11.0 - deepmerge: 4.3.1 - dom-serializer: 2.0.0 - htmlparser2: 8.0.2 - selderee: 0.11.0 - - html-void-elements@2.0.1: {} - - html-void-elements@3.0.0: {} - - html-whitespace-sensitive-tag-names@3.0.0: {} - - htmlparser2@8.0.2: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 - - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - - httpsnippet-lite@3.0.5: - dependencies: - '@types/har-format': 1.2.15 - formdata-node: 4.4.1 - stringify-object: 3.3.0 - - human-signals@5.0.0: {} - - husky@9.1.4: {} - - hyphen@1.10.4: {} - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - identity-function@1.0.0: {} - - ieee754@1.2.1: {} - - ignore@5.3.1: {} - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - import-in-the-middle@1.7.1: - dependencies: - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) - cjs-module-lexer: 1.3.1 - module-details-from-path: 1.0.3 - optional: true - - import-in-the-middle@1.9.1: - dependencies: - acorn: 8.11.3 - acorn-import-attributes: 1.9.5(acorn@8.11.3) - cjs-module-lexer: 1.3.1 - module-details-from-path: 1.0.3 - - imurmurhash@0.1.4: {} - - indent-string@4.0.0: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - optional: true - - inherits@2.0.4: {} - - ini@1.3.8: {} - - input-otp@1.2.4(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - inquirer@9.2.22: - dependencies: - '@inquirer/figures': 1.0.2 - '@ljharb/through': 2.3.13 - ansi-escapes: 4.3.2 - chalk: 5.3.0 - cli-cursor: 3.1.0 - cli-width: 4.1.0 - external-editor: 3.1.0 - lodash: 4.17.21 - mute-stream: 1.0.0 - ora: 5.4.1 - run-async: 3.0.0 - rxjs: 7.8.1 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - - internmap@2.0.3: {} - - invariant@2.2.4: - dependencies: - loose-envify: 1.4.0 - - ipaddr.js@2.2.0: {} - - is-absolute-url@4.0.1: {} - - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-arrayish@0.3.2: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-buffer@2.0.5: {} - - is-callable@1.2.7: {} - - is-core-module@2.13.1: - dependencies: - hasown: 2.0.2 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-fullwidth-code-point@4.0.0: {} - - is-fullwidth-code-point@5.0.0: - dependencies: - get-east-asian-width: 1.2.0 - - is-generator-function@1.0.10: - dependencies: - has-tostringtag: 1.0.2 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-interactive@1.0.0: {} - - is-iterable@1.1.1: {} - - is-number@4.0.0: {} - - is-number@7.0.0: {} - - is-obj@1.0.1: {} - - is-path-inside@3.0.3: {} - - is-plain-obj@4.1.0: {} - - is-plain-object@5.0.0: {} - - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.5 - - is-regexp@1.0.0: {} - - is-stream@3.0.0: {} - - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - - is-unicode-supported@0.1.0: {} - - is-url@1.2.4: {} - - is-what@4.1.16: {} - - isexe@2.0.0: {} - - isomorphic.js@0.2.5: {} - - iterable-lookahead@1.0.0: {} - - jackspeak@2.3.6: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jake@10.9.1: - dependencies: - async: 3.2.5 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - - jay-peg@1.0.2: - dependencies: - restructure: 3.0.1 - - jest-worker@27.5.1: - dependencies: - '@types/node': 20.12.12 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jiti@1.21.0: {} - - jose@4.15.5: {} - - jose@5.3.0: {} - - joycon@3.1.1: {} - - js-beautify@1.15.1: - dependencies: - config-chain: 1.1.13 - editorconfig: 1.0.4 - glob: 10.4.5 - js-cookie: 3.0.5 - nopt: 7.2.1 - - js-cookie@3.0.5: {} - - js-tokens@4.0.0: {} - - js-tokens@9.0.0: {} - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - jsesc@2.5.2: {} - - 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-stable-stringify-without-jsonify@1.0.1: {} - - json5@2.2.3: {} - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonpointer@5.0.1: {} - - just-clone@6.2.0: {} - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - kleur@4.1.5: {} - - klona@2.0.6: {} - - knip@5.17.4(@types/node@20.12.12)(typescript@5.4.5): - dependencies: - '@ericcornelissen/bash-parser': 0.5.2 - '@nodelib/fs.walk': 2.0.0 - '@snyk/github-codeowners': 1.1.0 - '@types/node': 20.12.12 - easy-table: 1.2.0 - fast-glob: 3.3.2 - file-entry-cache: 8.0.0 - jiti: 1.21.0 - js-yaml: 4.1.0 - minimist: 1.2.8 - picocolors: 1.0.0 - picomatch: 4.0.2 - pretty-ms: 9.0.0 - resolve: 1.22.8 - smol-toml: 1.1.4 - strip-json-comments: 5.0.1 - summary: 2.1.0 - typescript: 5.4.5 - zod: 3.23.8 - zod-validation-error: 3.3.0(zod@3.23.8) - - leac@0.6.0: {} - - leven@4.0.0: {} - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lib0@0.2.94: - dependencies: - isomorphic.js: 0.2.5 - - lilconfig@2.1.0: {} - - lilconfig@3.0.0: {} - - lilconfig@3.1.1: {} - - lines-and-columns@1.2.4: {} - - linkify-it@5.0.0: - dependencies: - uc.micro: 2.1.0 - - linkifyjs@4.1.3: {} - - lint-staged@15.2.2: - dependencies: - chalk: 5.3.0 - commander: 11.1.0 - debug: 4.3.4 - execa: 8.0.1 - lilconfig: 3.0.0 - listr2: 8.0.1 - micromatch: 4.0.5 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.3.4 - transitivePeerDependencies: - - supports-color - - listr2@8.0.1: - dependencies: - cli-truncate: 4.0.0 - colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 6.0.0 - rfdc: 1.3.1 - wrap-ansi: 9.0.0 - - loader-runner@4.3.0: {} - - local-pkg@0.5.0: - dependencies: - mlly: 1.7.1 - pkg-types: 1.1.3 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash-es@4.17.21: {} - - lodash.castarray@4.4.0: {} - - lodash.curry@4.1.1: {} - - lodash.debounce@4.0.8: {} - - lodash.isplainobject@4.0.6: {} - - lodash.merge@4.6.2: {} - - lodash@4.17.21: {} - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - log-update@6.0.0: - dependencies: - ansi-escapes: 6.2.1 - cli-cursor: 4.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 - - longest-streak@3.1.0: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - lowlight@3.1.0: - dependencies: - '@types/hast': 3.0.4 - devlop: 1.1.0 - highlight.js: 11.9.0 - - lru-cache@10.2.2: {} - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - luxon@3.4.4: {} - - lz-string@1.5.0: {} - - magic-string@0.16.0: - dependencies: - vlq: 0.2.3 - - magic-string@0.30.10: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - magic-string@0.30.8: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - make-cancellable-promise@1.3.2: {} - - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - optional: true - - make-event-props@1.6.2: {} - - map-obj@2.0.0: {} - - map-or-similar@1.5.0: {} - - markdown-it@14.1.0: - dependencies: - argparse: 2.0.1 - entities: 4.5.0 - linkify-it: 5.0.0 - mdurl: 2.0.0 - punycode.js: 2.3.1 - uc.micro: 2.1.0 - - markdown-table@3.0.3: {} - - marked@7.0.4: {} - - md-to-react-email@5.0.2(react@18.3.1): - dependencies: - marked: 7.0.4 - react: 18.3.1 - - mdast-util-definitions@5.1.2: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - unist-util-visit: 4.1.2 - - mdast-util-find-and-replace@2.2.2: - dependencies: - '@types/mdast': 3.0.15 - escape-string-regexp: 5.0.0 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - - mdast-util-find-and-replace@3.0.1: - dependencies: - '@types/mdast': 4.0.4 - escape-string-regexp: 5.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - - mdast-util-from-markdown@1.3.1: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - decode-named-character-reference: 1.0.2 - mdast-util-to-string: 3.2.0 - micromark: 3.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-decode-string: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - unist-util-stringify-position: 3.0.3 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - - mdast-util-from-markdown@2.0.1: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.2 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-decode-string: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-autolink-literal@1.0.3: - dependencies: - '@types/mdast': 3.0.15 - ccount: 2.0.1 - mdast-util-find-and-replace: 2.2.2 - micromark-util-character: 1.2.0 - - mdast-util-gfm-autolink-literal@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.1 - micromark-util-character: 2.1.0 - - mdast-util-gfm-footnote@1.0.2: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - micromark-util-normalize-identifier: 1.1.0 - - mdast-util-gfm-footnote@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-strikethrough@1.0.3: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - - mdast-util-gfm-strikethrough@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-table@1.0.7: - dependencies: - '@types/mdast': 3.0.15 - markdown-table: 3.0.3 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-table@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-task-list-item@1.0.2: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - - 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.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm@2.0.2: - dependencies: - mdast-util-from-markdown: 1.3.1 - mdast-util-gfm-autolink-literal: 1.0.3 - mdast-util-gfm-footnote: 1.0.2 - mdast-util-gfm-strikethrough: 1.0.3 - mdast-util-gfm-table: 1.0.7 - mdast-util-gfm-task-list-item: 1.0.2 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm@3.0.0: - dependencies: - mdast-util-from-markdown: 2.0.1 - mdast-util-gfm-autolink-literal: 2.0.0 - mdast-util-gfm-footnote: 2.0.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.0 - transitivePeerDependencies: - - supports-color - - mdast-util-phrasing@3.0.1: - dependencies: - '@types/mdast': 3.0.15 - unist-util-is: 5.2.1 - - mdast-util-phrasing@4.1.0: - dependencies: - '@types/mdast': 4.0.4 - unist-util-is: 6.0.0 - - mdast-util-to-hast@12.3.0: - dependencies: - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-definitions: 5.1.2 - micromark-util-sanitize-uri: 1.2.0 - trim-lines: 3.0.1 - unist-util-generated: 2.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - - mdast-util-to-hast@13.1.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.2.0 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.0 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.1 - - mdast-util-to-markdown@1.5.0: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.10 - longest-streak: 3.1.0 - mdast-util-phrasing: 3.0.1 - mdast-util-to-string: 3.2.0 - micromark-util-decode-string: 1.1.0 - unist-util-visit: 4.1.2 - zwitch: 2.0.4 - - mdast-util-to-markdown@2.1.0: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.2 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-string: 4.0.0 - micromark-util-decode-string: 2.0.0 - unist-util-visit: 5.0.0 - zwitch: 2.0.4 - - mdast-util-to-string@3.2.0: - dependencies: - '@types/mdast': 3.0.15 - - mdast-util-to-string@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - - mdurl@2.0.0: {} - - media-engine@1.0.3: {} - - memoizerific@1.11.3: - dependencies: - map-or-similar: 1.5.0 - - merge-refs@1.3.0(@types/react@18.3.3): - optionalDependencies: - '@types/react': 18.3.3 - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - micromark-core-commonmark@1.1.0: - dependencies: - decode-named-character-reference: 1.0.2 - micromark-factory-destination: 1.1.0 - micromark-factory-label: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-factory-title: 1.1.0 - micromark-factory-whitespace: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-html-tag-name: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-core-commonmark@2.0.1: - dependencies: - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-factory-destination: 2.0.0 - micromark-factory-label: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-factory-title: 2.0.0 - micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-html-tag-name: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-subtokenize: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-autolink-literal@1.0.5: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-extension-gfm-autolink-literal@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-footnote@1.1.2: - dependencies: - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-extension-gfm-footnote@2.0.0: - dependencies: - devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-strikethrough@1.0.7: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-extension-gfm-strikethrough@2.0.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-table@1.0.7: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-extension-gfm-table@2.0.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-tagfilter@1.0.2: - dependencies: - micromark-util-types: 1.1.0 - - micromark-extension-gfm-tagfilter@2.0.0: - dependencies: - micromark-util-types: 2.0.0 - - micromark-extension-gfm-task-list-item@1.0.5: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-extension-gfm-task-list-item@2.0.1: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm@2.0.3: - dependencies: - micromark-extension-gfm-autolink-literal: 1.0.5 - micromark-extension-gfm-footnote: 1.1.2 - micromark-extension-gfm-strikethrough: 1.0.7 - micromark-extension-gfm-table: 1.0.7 - micromark-extension-gfm-tagfilter: 1.0.2 - micromark-extension-gfm-task-list-item: 1.0.5 - micromark-util-combine-extensions: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-extension-gfm@3.0.0: - dependencies: - micromark-extension-gfm-autolink-literal: 2.0.0 - micromark-extension-gfm-footnote: 2.0.0 - micromark-extension-gfm-strikethrough: 2.0.0 - micromark-extension-gfm-table: 2.0.0 - micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.0.1 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-destination@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-factory-destination@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-label@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-factory-label@2.0.0: - dependencies: - devlop: 1.1.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-space@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-types: 1.1.0 - - micromark-factory-space@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-types: 2.0.0 - - micromark-factory-title@1.1.0: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-factory-title@2.0.0: - dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-whitespace@1.1.0: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-factory-whitespace@2.0.0: - dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-character@1.2.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-util-character@2.1.0: - dependencies: - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-chunked@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - - micromark-util-chunked@2.0.0: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-classify-character@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-util-classify-character@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-combine-extensions@1.1.0: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-util-combine-extensions@2.0.0: - dependencies: - micromark-util-chunked: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-decode-numeric-character-reference@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - - micromark-util-decode-numeric-character-reference@2.0.1: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-decode-string@1.1.0: - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 1.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-symbol: 1.1.0 - - micromark-util-decode-string@2.0.0: - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 2.1.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-symbol: 2.0.0 - - micromark-util-encode@1.1.0: {} - - micromark-util-encode@2.0.0: {} - - micromark-util-html-tag-name@1.2.0: {} - - micromark-util-html-tag-name@2.0.0: {} - - micromark-util-normalize-identifier@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - - micromark-util-normalize-identifier@2.0.0: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-resolve-all@1.1.0: - dependencies: - micromark-util-types: 1.1.0 - - micromark-util-resolve-all@2.0.0: - dependencies: - micromark-util-types: 2.0.0 - - micromark-util-sanitize-uri@1.2.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-encode: 1.1.0 - micromark-util-symbol: 1.1.0 - - micromark-util-sanitize-uri@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-encode: 2.0.0 - micromark-util-symbol: 2.0.0 - - micromark-util-subtokenize@1.1.0: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-util-subtokenize@2.0.1: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-symbol@1.1.0: {} - - micromark-util-symbol@2.0.0: {} - - micromark-util-types@1.1.0: {} - - micromark-util-types@2.0.0: {} - - micromark@3.2.0: - dependencies: - '@types/debug': 4.1.12 - debug: 4.3.4 - decode-named-character-reference: 1.0.2 - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-combine-extensions: 1.1.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-encode: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - - micromark@4.0.0: - dependencies: - '@types/debug': 4.1.12 - debug: 4.3.4 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-encode: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-subtokenize: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.5: - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mime@4.0.3: {} - - mimic-fn@2.1.0: {} - - mimic-fn@4.0.0: {} - - mimic-response@2.1.0: - optional: true - - min-indent@1.0.1: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimatch@8.0.4: - dependencies: - brace-expansion: 2.0.1 - - minimatch@9.0.1: - dependencies: - brace-expansion: 2.0.1 - - minimatch@9.0.4: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - optional: true - - minipass@4.2.8: {} - - minipass@5.0.0: - optional: true - - minipass@7.1.1: {} - - minipass@7.1.2: {} - - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - optional: true - - mitt@3.0.1: {} - - mkdirp@1.0.4: - optional: true - - mlly@1.7.1: - dependencies: - acorn: 8.11.3 - pathe: 1.1.2 - pkg-types: 1.1.3 - ufo: 1.5.3 - - module-details-from-path@1.0.3: {} - - mri@1.2.0: {} - - mrmime@2.0.0: {} - - ms@2.1.2: {} - - mute-stream@1.0.0: {} - - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - nan@2.19.0: - optional: true - - nanoid@3.3.7: {} - - nanoid@5.0.7: {} - - natural-compare@1.4.0: {} - - negotiator@0.6.3: {} - - neo-async@2.6.2: {} - - next-auth@4.24.7(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - '@babel/runtime': 7.24.5 - '@panva/hkdf': 1.1.1 - cookie: 0.5.0 - jose: 4.15.5 - next: 14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - oauth: 0.9.15 - openid-client: 5.6.5 - preact: 10.22.0 - preact-render-to-string: 5.2.6(preact@10.22.0) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - uuid: 8.3.2 - optionalDependencies: - nodemailer: 6.9.14 - - next-nprogress-bar@2.3.13: - dependencies: - nprogress: 0.2.0 - - next@14.1.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - '@next/env': 14.1.4 - '@swc/helpers': 0.5.2 - busboy: 1.6.0 - caniuse-lite: 1.0.30001620 - graceful-fs: 4.2.11 - postcss: 8.4.31 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.24.5)(react@18.3.1) - optionalDependencies: - '@next/swc-darwin-arm64': 14.1.4 - '@next/swc-darwin-x64': 14.1.4 - '@next/swc-linux-arm64-gnu': 14.1.4 - '@next/swc-linux-arm64-musl': 14.1.4 - '@next/swc-linux-x64-gnu': 14.1.4 - '@next/swc-linux-x64-musl': 14.1.4 - '@next/swc-win32-arm64-msvc': 14.1.4 - '@next/swc-win32-ia32-msvc': 14.1.4 - '@next/swc-win32-x64-msvc': 14.1.4 - '@opentelemetry/api': 1.9.0 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - - next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - '@next/env': 14.2.4 - '@swc/helpers': 0.5.5 - busboy: 1.6.0 - caniuse-lite: 1.0.30001620 - graceful-fs: 4.2.11 - postcss: 8.4.31 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.24.5)(react@18.3.1) - optionalDependencies: - '@next/swc-darwin-arm64': 14.2.4 - '@next/swc-darwin-x64': 14.2.4 - '@next/swc-linux-arm64-gnu': 14.2.4 - '@next/swc-linux-arm64-musl': 14.2.4 - '@next/swc-linux-x64-gnu': 14.2.4 - '@next/swc-linux-x64-musl': 14.2.4 - '@next/swc-win32-arm64-msvc': 14.2.4 - '@next/swc-win32-ia32-msvc': 14.2.4 - '@next/swc-win32-x64-msvc': 14.2.4 - '@opentelemetry/api': 1.9.0 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - - node-domexception@1.0.0: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-releases@2.0.14: {} - - nodemailer@6.9.14: {} - - nopt@5.0.0: - dependencies: - abbrev: 1.1.1 - optional: true - - nopt@7.2.1: - dependencies: - abbrev: 2.0.0 - - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - - normalize-svg-path@1.1.0: - dependencies: - svg-arc-to-cubic-bezier: 3.2.0 - - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - optional: true - - nprogress@0.2.0: {} - - oauth@0.9.15: {} - - object-assign@4.1.1: {} - - object-hash@2.2.0: {} - - object-hash@3.0.0: {} - - object-inspect@1.13.1: {} - - object-pairs@0.1.0: {} - - object-values@1.0.0: {} - - oidc-token-hash@5.0.3: {} - - on-exit-leak-free@2.1.2: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - - openapi3-ts@4.3.3: - dependencies: - yaml: 2.4.5 - - opener@1.5.2: {} - - openid-client@5.6.5: - dependencies: - jose: 4.15.5 - lru-cache: 6.0.0 - object-hash: 2.2.0 - oidc-token-hash: 5.0.3 - - opentelemetry-instrumentation-fetch-node@1.2.3(@opentelemetry/api@1.9.0): - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.46.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color - optional: true - - 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@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - - orderedmap@2.1.1: {} - - os-tmpdir@1.0.2: {} - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-limit@5.0.0: - dependencies: - yocto-queue: 1.1.1 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - - package-json-from-dist@1.0.0: {} - - pako@0.2.9: {} - - pako@1.0.11: {} - - papaparse@5.4.1: {} - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-ms@3.0.0: {} - - parse-ms@4.0.0: {} - - parse-svg-path@0.1.2: {} - - parse5@6.0.1: {} - - parse5@7.1.2: - dependencies: - entities: 4.5.0 - - parseley@0.12.1: - dependencies: - leac: 0.6.0 - peberminta: 0.9.0 - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: - optional: true - - path-key@3.1.1: {} - - path-key@4.0.0: {} - - path-parse@1.0.7: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.2.2 - minipass: 7.1.2 - - path2d-polyfill@2.0.1: - optional: true - - pathe@1.1.2: {} - - pathval@1.1.1: {} - - pdf-lib@1.17.1: - dependencies: - '@pdf-lib/standard-fonts': 1.0.0 - '@pdf-lib/upng': 1.0.1 - pako: 1.0.11 - tslib: 1.14.1 - - pdfjs-dist@3.11.174: - optionalDependencies: - canvas: 2.11.2 - path2d-polyfill: 2.0.1 - transitivePeerDependencies: - - encoding - - supports-color - - peberminta@0.9.0: {} - - pg-boss@9.0.3: - dependencies: - cron-parser: 4.9.0 - delay: 5.0.0 - lodash.debounce: 4.0.8 - p-map: 4.0.0 - pg: 8.11.5 - serialize-error: 8.1.0 - uuid: 9.0.1 - transitivePeerDependencies: - - pg-native - - pg-cloudflare@1.1.1: - optional: true - - pg-connection-string@2.6.4: {} - - pg-int8@1.0.1: {} - - pg-pool@3.6.2(pg@8.11.5): - dependencies: - pg: 8.11.5 - - pg-protocol@1.6.1: {} - - pg-types@2.2.0: - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.0 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 - - pg@8.11.5: - dependencies: - pg-connection-string: 2.6.4 - pg-pool: 3.6.2(pg@8.11.5) - pg-protocol: 1.6.1 - pg-types: 2.2.0 - pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.1.1 - - pgpass@1.0.5: - dependencies: - split2: 4.2.0 - - picocolors@1.0.0: {} - - picocolors@1.0.1: {} - - picomatch@2.3.1: {} - - picomatch@4.0.2: {} - - pidtree@0.6.0: {} - - pify@2.3.0: {} - - pino-abstract-transport@1.2.0: - dependencies: - readable-stream: 4.5.2 - split2: 4.2.0 - - pino-pretty@11.2.2: - dependencies: - colorette: 2.0.20 - dateformat: 4.6.3 - fast-copy: 3.0.2 - fast-safe-stringify: 2.1.1 - help-me: 5.0.0 - joycon: 3.1.1 - minimist: 1.2.8 - on-exit-leak-free: 2.1.2 - pino-abstract-transport: 1.2.0 - pump: 3.0.0 - readable-stream: 4.5.2 - secure-json-parse: 2.7.0 - sonic-boom: 4.0.1 - strip-json-comments: 3.1.1 - - pino-std-serializers@7.0.0: {} - - pino@9.3.1: - dependencies: - atomic-sleep: 1.0.0 - fast-redact: 3.5.0 - on-exit-leak-free: 2.1.2 - pino-abstract-transport: 1.2.0 - pino-std-serializers: 7.0.0 - process-warning: 3.0.0 - quick-format-unescaped: 4.0.4 - real-require: 0.2.0 - safe-stable-stringify: 2.4.3 - sonic-boom: 4.0.1 - thread-stream: 3.0.2 - - pirates@4.0.6: {} - - pkg-types@1.1.3: - dependencies: - confbox: 0.1.7 - mlly: 1.7.1 - pathe: 1.1.2 - - possible-typed-array-names@1.0.0: {} - - postcss-import@15.1.0(postcss@8.4.40): - dependencies: - postcss: 8.4.40 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - - postcss-js@4.0.1(postcss@8.4.40): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.40 - - postcss-load-config@4.0.2(postcss@8.4.40): - dependencies: - lilconfig: 3.1.1 - yaml: 2.4.2 - optionalDependencies: - postcss: 8.4.40 - - postcss-nested@6.0.1(postcss@8.4.40): - dependencies: - postcss: 8.4.40 - postcss-selector-parser: 6.0.16 - - postcss-selector-parser@6.0.10: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@6.0.16: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.4.31: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - - postcss@8.4.38: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - - postcss@8.4.40: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - - postgres-array@2.0.0: {} - - postgres-bytea@1.0.0: {} - - postgres-date@1.0.7: {} - - postgres-interval@1.2.0: - dependencies: - xtend: 4.0.2 - - preact-render-to-string@5.2.6(preact@10.22.0): - dependencies: - preact: 10.22.0 - pretty-format: 3.8.0 - - preact@10.22.0: {} - - prelude-ls@1.2.1: {} - - pretty-bytes@6.1.1: {} - - pretty-format@27.5.1: - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - - pretty-format@3.8.0: {} - - pretty-ms@8.0.0: - dependencies: - parse-ms: 3.0.0 - - pretty-ms@9.0.0: - dependencies: - parse-ms: 4.0.0 - - prism-react-renderer@2.1.0(react@18.3.1): - dependencies: - '@types/prismjs': 1.26.4 - clsx: 1.2.1 - react: 18.3.1 - - prisma-extension-pagination@0.7.4(@prisma/client@5.14.0(prisma@5.14.0)): - dependencies: - '@prisma/client': 5.14.0(prisma@5.14.0) - - prisma-json-types-generator@3.0.4(prisma@5.14.0)(typescript@5.4.5): - dependencies: - '@prisma/generator-helper': 5.9.1 - prisma: 5.14.0 - tslib: 2.6.2 - typescript: 5.4.5 - - prisma@5.14.0: - dependencies: - '@prisma/engines': 5.14.0 - - prismjs@1.29.0: {} - - process-warning@3.0.0: {} - - process@0.11.10: {} - - progress@2.0.3: {} - - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - property-information@6.5.0: {} - - prosemirror-changeset@2.2.1: - dependencies: - prosemirror-transform: 1.9.0 - - prosemirror-collab@1.3.1: - dependencies: - prosemirror-state: 1.4.3 - - prosemirror-commands@1.5.2: - dependencies: - prosemirror-model: 1.21.0 - prosemirror-state: 1.4.3 - prosemirror-transform: 1.9.0 - - prosemirror-dropcursor@1.8.1: - dependencies: - prosemirror-state: 1.4.3 - prosemirror-transform: 1.9.0 - prosemirror-view: 1.33.6 - - prosemirror-gapcursor@1.3.2: - dependencies: - prosemirror-keymap: 1.2.2 - prosemirror-model: 1.21.0 - prosemirror-state: 1.4.3 - prosemirror-view: 1.33.6 - - prosemirror-history@1.4.0: - dependencies: - prosemirror-state: 1.4.3 - prosemirror-transform: 1.9.0 - prosemirror-view: 1.33.6 - rope-sequence: 1.3.4 - - prosemirror-inputrules@1.4.0: - dependencies: - prosemirror-state: 1.4.3 - prosemirror-transform: 1.9.0 - - prosemirror-keymap@1.2.2: - dependencies: - prosemirror-state: 1.4.3 - w3c-keyname: 2.2.8 - - prosemirror-markdown@1.12.0: - dependencies: - markdown-it: 14.1.0 - prosemirror-model: 1.21.0 - - prosemirror-menu@1.2.4: - dependencies: - crelt: 1.0.6 - prosemirror-commands: 1.5.2 - prosemirror-history: 1.4.0 - prosemirror-state: 1.4.3 - - prosemirror-model@1.21.0: - dependencies: - orderedmap: 2.1.1 - - prosemirror-schema-basic@1.2.2: - dependencies: - prosemirror-model: 1.21.0 - - prosemirror-schema-list@1.3.0: - dependencies: - prosemirror-model: 1.21.0 - prosemirror-state: 1.4.3 - prosemirror-transform: 1.9.0 - - prosemirror-state@1.4.3: - dependencies: - prosemirror-model: 1.21.0 - prosemirror-transform: 1.9.0 - prosemirror-view: 1.33.6 - - prosemirror-tables@1.3.7: - dependencies: - prosemirror-keymap: 1.2.2 - prosemirror-model: 1.21.0 - prosemirror-state: 1.4.3 - prosemirror-transform: 1.9.0 - prosemirror-view: 1.33.6 - - prosemirror-trailing-node@2.0.8(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6): - dependencies: - '@remirror/core-constants': 2.0.2 - escape-string-regexp: 4.0.0 - prosemirror-model: 1.21.0 - prosemirror-state: 1.4.3 - prosemirror-view: 1.33.6 - - prosemirror-transform@1.9.0: - dependencies: - prosemirror-model: 1.21.0 - - prosemirror-view@1.33.6: - dependencies: - prosemirror-model: 1.21.0 - prosemirror-state: 1.4.3 - prosemirror-transform: 1.9.0 - - proto-list@1.2.4: {} - - proxy-compare@2.6.0: {} - - proxy-from-env@1.1.0: {} - - pump@3.0.0: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - punycode.js@2.3.1: {} - - punycode@2.3.1: {} - - pushmodal@1.0.4(@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - mitt: 3.0.1 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - pvtsutils@1.3.5: - dependencies: - tslib: 2.6.2 - - pvutils@1.1.3: {} - - qs@6.12.1: - dependencies: - side-channel: 1.0.6 - - queue-microtask@1.2.3: {} - - queue@6.0.2: - dependencies: - inherits: 2.0.4 - - quick-format-unescaped@4.0.4: {} - - radix-vue@1.8.5(vue@3.4.30(typescript@5.4.5)): - dependencies: - '@floating-ui/dom': 1.6.5 - '@floating-ui/vue': 1.0.7(vue@3.4.30(typescript@5.4.5)) - '@internationalized/date': 3.5.4 - '@internationalized/number': 3.5.3 - '@tanstack/vue-virtual': 3.7.0(vue@3.4.30(typescript@5.4.5)) - '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.4.5)) - '@vueuse/shared': 10.11.0(vue@3.4.30(typescript@5.4.5)) - aria-hidden: 1.2.4 - defu: 6.1.4 - fast-deep-equal: 3.1.3 - nanoid: 5.0.7 - vue: 3.4.30(typescript@5.4.5) - transitivePeerDependencies: - - '@vue/composition-api' - - ramda@0.29.0: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - react-day-picker@8.10.1(date-fns@3.6.0)(react@18.3.1): - dependencies: - date-fns: 3.6.0 - react: 18.3.1 - - react-dom@18.2.0(react@18.3.1): - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - react-dropzone@14.2.3(react@18.3.1): - dependencies: - attr-accept: 2.2.2 - file-selector: 0.6.0 - prop-types: 15.8.1 - react: 18.3.1 - - react-email@2.1.6(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.11)(eslint@9.8.0): - dependencies: - '@babel/core': 7.24.5 - '@babel/parser': 7.24.5 - '@radix-ui/colors': 1.0.1 - '@radix-ui/react-collapsible': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-popover': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.2.47)(react@18.3.1) - '@radix-ui/react-toggle-group': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@radix-ui/react-tooltip': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.2.47)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - '@swc/core': 1.3.101(@swc/helpers@0.5.11) - '@types/react': 18.2.47 - '@types/react-dom': 18.3.0 - '@types/webpack': 5.28.5(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11) - autoprefixer: 10.4.14(postcss@8.4.38) - chalk: 4.1.2 - chokidar: 3.5.3 - clsx: 2.1.0 - commander: 11.1.0 - debounce: 2.0.0 - esbuild: 0.19.11 - eslint-config-prettier: 9.0.0(eslint@9.8.0) - eslint-config-turbo: 1.10.12(eslint@9.8.0) - framer-motion: 10.17.4(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - glob: 10.3.4 - log-symbols: 4.1.0 - mime-types: 2.1.35 - next: 14.1.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - normalize-path: 3.0.0 - ora: 5.4.1 - postcss: 8.4.38 - prism-react-renderer: 2.1.0(react@18.3.1) - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - socket.io: 4.7.3 - socket.io-client: 4.7.3 - sonner: 1.3.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - source-map-js: 1.0.2 - stacktrace-parser: 0.1.10 - tailwind-merge: 2.2.0 - tailwindcss: 3.4.0 - typescript: 5.1.6 - transitivePeerDependencies: - - '@opentelemetry/api' - - '@swc/helpers' - - babel-plugin-macros - - bufferutil - - eslint - - sass - - supports-color - - ts-node - - uglify-js - - utf-8-validate - - webpack-cli - - react-hook-form@7.52.1(react@18.3.1): - dependencies: - react: 18.3.1 - - react-icons@4.12.0(react@18.3.1): - dependencies: - react: 18.3.1 - - react-is@16.13.1: {} - - react-is@17.0.2: {} - - react-is@18.3.1: {} - - react-number-format@5.3.4(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - react-pdf@8.0.2(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - clsx: 2.1.1 - dequal: 2.0.3 - make-cancellable-promise: 1.3.2 - make-event-props: 1.6.2 - merge-refs: 1.3.0(@types/react@18.3.3) - pdfjs-dist: 3.11.174 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - tiny-invariant: 1.3.3 - warning: 4.0.3 - optionalDependencies: - '@types/react': 18.3.3 - transitivePeerDependencies: - - encoding - - supports-color - - react-promise-suspense@0.3.4: - dependencies: - fast-deep-equal: 2.0.1 - - react-remove-scroll-bar@2.3.6(@types/react@18.2.47)(react@18.3.1): - dependencies: - react: 18.3.1 - react-style-singleton: 2.2.1(@types/react@18.2.47)(react@18.3.1) - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.47 - - react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.3.3 - - react-remove-scroll@2.5.10(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.2 - use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - - react-remove-scroll@2.5.5(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.2 - use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - - react-remove-scroll@2.5.7(@types/react@18.2.47)(react@18.3.1): - dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.6(@types/react@18.2.47)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.2.47)(react@18.3.1) - tslib: 2.6.2 - use-callback-ref: 1.3.2(@types/react@18.2.47)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.2.47)(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.47 - - react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.2 - use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - - react-smooth@4.0.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - fast-equals: 5.0.1 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - react-transition-group: 4.4.5(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - - react-style-singleton@2.2.1(@types/react@18.2.47)(react@18.3.1): - dependencies: - get-nonce: 1.0.1 - invariant: 2.2.4 - react: 18.3.1 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.47 - - react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1): - dependencies: - get-nonce: 1.0.1 - invariant: 2.2.4 - react: 18.3.1 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.3.3 - - react-textarea-autosize@8.5.3(@types/react@18.3.3)(react@18.3.1): - dependencies: - '@babel/runtime': 7.24.5 - react: 18.3.1 - use-composed-ref: 1.3.0(react@18.3.1) - use-latest: 1.2.1(@types/react@18.3.3)(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - react-transition-group@4.4.5(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - '@babel/runtime': 7.24.5 - dom-helpers: 5.2.1 - loose-envify: 1.4.0 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - react-transition-state@2.1.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readable-stream@4.5.2: - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - string_decoder: 1.3.0 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - real-require@0.2.0: {} - - recharts-scale@0.4.5: - dependencies: - decimal.js-light: 2.5.1 - - recharts@2.12.7(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - clsx: 2.1.1 - eventemitter3: 4.0.7 - lodash: 4.17.21 - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - react-is: 16.13.1 - react-smooth: 4.0.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1) - recharts-scale: 0.4.5 - tiny-invariant: 1.3.3 - victory-vendor: 36.9.2 - - redent@3.0.0: - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - - regenerator-runtime@0.14.1: {} - - rehype-external-links@3.0.0: - dependencies: - '@types/hast': 3.0.4 - '@ungap/structured-clone': 1.2.0 - hast-util-is-element: 3.0.0 - is-absolute-url: 4.0.1 - space-separated-tokens: 2.0.2 - unist-util-visit: 5.0.0 - - rehype-format@5.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-embedded: 3.0.0 - hast-util-is-element: 3.0.0 - hast-util-phrasing: 3.0.1 - hast-util-whitespace: 3.0.0 - html-whitespace-sensitive-tag-names: 3.0.0 - rehype-minify-whitespace: 6.0.0 - unist-util-visit-parents: 6.0.1 - - rehype-highlight@7.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-to-text: 4.0.2 - lowlight: 3.1.0 - unist-util-visit: 5.0.0 - vfile: 6.0.1 - - rehype-minify-whitespace@5.0.1: - dependencies: - '@types/hast': 2.3.10 - hast-util-embedded: 2.0.1 - hast-util-is-element: 2.1.3 - hast-util-whitespace: 2.0.1 - unified: 10.1.2 - unist-util-is: 5.2.1 - - rehype-minify-whitespace@6.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-embedded: 3.0.0 - hast-util-is-element: 3.0.0 - hast-util-whitespace: 3.0.0 - unist-util-is: 6.0.0 - - rehype-parse@8.0.5: - dependencies: - '@types/hast': 2.3.10 - hast-util-from-parse5: 7.1.2 - parse5: 6.0.1 - unified: 10.1.2 - - rehype-parse@9.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-from-html: 2.0.1 - unified: 11.0.4 - - rehype-raw@7.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-raw: 9.0.3 - vfile: 6.0.1 - - rehype-remark@9.1.2: - dependencies: - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - hast-util-to-mdast: 8.4.1 - unified: 10.1.2 - - rehype-sanitize@6.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-sanitize: 5.0.1 - - rehype-stringify@10.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.1 - unified: 11.0.4 - - rehype-stringify@9.0.4: - dependencies: - '@types/hast': 2.3.10 - hast-util-to-html: 8.0.4 - unified: 10.1.2 - - remark-gfm@3.0.1: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-gfm: 2.0.2 - micromark-extension-gfm: 2.0.3 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - - remark-gfm@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-gfm: 3.0.0 - micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - unified: 11.0.4 - transitivePeerDependencies: - - supports-color - - remark-parse@10.0.2: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - - remark-parse@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.1 - micromark-util-types: 2.0.0 - unified: 11.0.4 - transitivePeerDependencies: - - supports-color - - remark-rehype@10.1.0: - dependencies: - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-to-hast: 12.3.0 - unified: 10.1.2 - - remark-rehype@11.1.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.1.0 - unified: 11.0.4 - vfile: 6.0.1 - - remark-stringify@10.0.3: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - unified: 10.1.2 - - remark-stringify@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-to-markdown: 2.1.0 - unified: 11.0.4 - - require-directory@2.1.1: {} - - require-from-string@2.0.2: {} - - require-in-the-middle@7.3.0: - dependencies: - debug: 4.3.4 - module-details-from-path: 1.0.3 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - resolve-from@4.0.0: {} - - resolve-pkg-maps@1.0.0: {} - - resolve@1.22.8: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - restore-cursor@4.0.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - restructure@3.0.1: {} - - reusify@1.0.4: {} - - reverse-arguments@1.0.0: {} - - rfdc@1.3.1: {} - - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - optional: true - - rollup@3.29.4: - optionalDependencies: - fsevents: 2.3.3 - - rollup@4.18.0: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.18.0 - '@rollup/rollup-android-arm64': 4.18.0 - '@rollup/rollup-darwin-arm64': 4.18.0 - '@rollup/rollup-darwin-x64': 4.18.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 - '@rollup/rollup-linux-arm-musleabihf': 4.18.0 - '@rollup/rollup-linux-arm64-gnu': 4.18.0 - '@rollup/rollup-linux-arm64-musl': 4.18.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 - '@rollup/rollup-linux-riscv64-gnu': 4.18.0 - '@rollup/rollup-linux-s390x-gnu': 4.18.0 - '@rollup/rollup-linux-x64-gnu': 4.18.0 - '@rollup/rollup-linux-x64-musl': 4.18.0 - '@rollup/rollup-win32-arm64-msvc': 4.18.0 - '@rollup/rollup-win32-ia32-msvc': 4.18.0 - '@rollup/rollup-win32-x64-msvc': 4.18.0 - fsevents: 2.3.3 - - rope-sequence@1.3.4: {} - - run-async@3.0.0: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - rxjs@7.8.1: - dependencies: - tslib: 2.6.2 - - sade@1.8.1: - dependencies: - mri: 1.2.0 - - safe-buffer@5.2.1: {} - - safe-stable-stringify@2.4.3: {} - - safer-buffer@2.1.2: {} - - scheduler@0.17.0: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - - schema-utils@3.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - secure-json-parse@2.7.0: {} - - selderee@0.11.0: - dependencies: - parseley: 0.12.1 - - semver@6.3.1: {} - - semver@7.6.2: {} - - serialize-error@8.1.0: - dependencies: - type-fest: 0.20.2 - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - set-blocking@2.0.0: - optional: true - - 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.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - - sharp@0.33.4: - dependencies: - color: 4.2.3 - detect-libc: 2.0.3 - semver: 7.6.2 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.4 - '@img/sharp-darwin-x64': 0.33.4 - '@img/sharp-libvips-darwin-arm64': 1.0.2 - '@img/sharp-libvips-darwin-x64': 1.0.2 - '@img/sharp-libvips-linux-arm': 1.0.2 - '@img/sharp-libvips-linux-arm64': 1.0.2 - '@img/sharp-libvips-linux-s390x': 1.0.2 - '@img/sharp-libvips-linux-x64': 1.0.2 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 - '@img/sharp-libvips-linuxmusl-x64': 1.0.2 - '@img/sharp-linux-arm': 0.33.4 - '@img/sharp-linux-arm64': 0.33.4 - '@img/sharp-linux-s390x': 0.33.4 - '@img/sharp-linux-x64': 0.33.4 - '@img/sharp-linuxmusl-arm64': 0.33.4 - '@img/sharp-linuxmusl-x64': 0.33.4 - '@img/sharp-wasm32': 0.33.4 - '@img/sharp-win32-ia32': 0.33.4 - '@img/sharp-win32-x64': 0.33.4 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - shell-quote-word@1.0.1: {} - - shell-quote@1.8.1: {} - - shimmer@1.2.1: {} - - side-channel@1.0.6: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.1 - - siginfo@2.0.0: {} - - signal-exit@3.0.7: {} - - signal-exit@4.1.0: {} - - simple-concat@1.0.1: - optional: true - - simple-get@3.1.1: - dependencies: - decompress-response: 4.2.1 - once: 1.4.0 - simple-concat: 1.0.1 - optional: true - - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - - sirv@2.0.4: - dependencies: - '@polka/url': 1.0.0-next.25 - mrmime: 2.0.0 - totalist: 3.0.1 - - slice-ansi@5.0.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - - slice-ansi@7.1.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 - - smol-toml@1.1.4: {} - - socket.io-adapter@2.5.5: - dependencies: - debug: 4.3.4 - ws: 8.17.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - socket.io-client@4.7.3: - dependencies: - '@socket.io/component-emitter': 3.1.2 - debug: 4.3.4 - engine.io-client: 6.5.4 - socket.io-parser: 4.2.4 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - socket.io-parser@4.2.4: - dependencies: - '@socket.io/component-emitter': 3.1.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - - socket.io@4.7.3: - dependencies: - accepts: 1.3.8 - base64id: 2.0.0 - cors: 2.8.5 - debug: 4.3.4 - engine.io: 6.5.5 - socket.io-adapter: 2.5.5 - socket.io-parser: 4.2.4 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - sonic-boom@4.0.1: - dependencies: - atomic-sleep: 1.0.0 - - sonner@1.3.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - sonner@1.5.0(react-dom@18.2.0(react@18.3.1))(react@18.3.1): - dependencies: - react: 18.3.1 - react-dom: 18.2.0(react@18.3.1) - - source-map-js@1.0.2: {} - - source-map-js@1.2.0: {} - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - space-separated-tokens@2.0.2: {} - - split2@4.2.0: {} - - stackback@0.0.2: {} - - stacktrace-parser@0.1.10: - dependencies: - type-fest: 0.7.1 - - std-env@3.7.0: {} - - streamsearch@1.1.0: {} - - string-argv@0.3.2: {} - - 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@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - string-width@7.1.0: - dependencies: - emoji-regex: 10.3.0 - get-east-asian-width: 1.2.0 - strip-ansi: 7.1.0 - - string.fromcodepoint@0.2.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@3.3.0: - dependencies: - get-own-enumerable-property-symbols: 3.0.2 - is-obj: 1.0.1 - is-regexp: 1.0.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.0.1 - - strip-final-newline@3.0.0: {} - - strip-indent@3.0.0: - dependencies: - min-indent: 1.0.1 - - strip-json-comments@3.1.1: {} - - strip-json-comments@5.0.1: {} - - strip-literal@2.1.0: - dependencies: - js-tokens: 9.0.0 - - stripe@15.8.0: - dependencies: - '@types/node': 20.12.12 - qs: 6.12.1 - - strnum@1.0.5: {} - - style-mod@4.1.2: {} - - styled-jsx@5.1.1(@babel/core@7.24.5)(react@18.3.1): - dependencies: - client-only: 0.0.1 - react: 18.3.1 - optionalDependencies: - '@babel/core': 7.24.5 - - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.3.15 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - - summary@2.1.0: {} - - superjson@2.2.1: - dependencies: - copy-anything: 3.0.5 - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - 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: {} - - svg-arc-to-cubic-bezier@3.2.0: {} - - tabbable@6.2.0: {} - - tailwind-merge@1.14.0: {} - - tailwind-merge@2.2.0: - dependencies: - '@babel/runtime': 7.24.5 - - tailwind-merge@2.4.0: {} - - tailwindcss-animate@1.0.7(tailwindcss@3.4.3): - dependencies: - tailwindcss: 3.4.3 - - tailwindcss@3.4.0: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.1 - postcss: 8.4.40 - postcss-import: 15.1.0(postcss@8.4.40) - postcss-js: 4.0.1(postcss@8.4.40) - postcss-load-config: 4.0.2(postcss@8.4.40) - postcss-nested: 6.0.1(postcss@8.4.40) - postcss-selector-parser: 6.0.16 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - tailwindcss@3.4.3: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.1 - postcss: 8.4.40 - postcss-import: 15.1.0(postcss@8.4.40) - postcss-js: 4.0.1(postcss@8.4.40) - postcss-load-config: 4.0.2(postcss@8.4.40) - postcss-nested: 6.0.1(postcss@8.4.40) - postcss-selector-parser: 6.0.16 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - tapable@2.2.1: {} - - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - optional: true - - telejson@7.2.0: - dependencies: - memoizerific: 1.11.3 - - terser-webpack-plugin@5.3.10(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)(webpack@5.92.0): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.31.1 - webpack: 5.92.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11) - optionalDependencies: - '@swc/core': 1.3.101(@swc/helpers@0.5.11) - esbuild: 0.19.11 - - terser@5.31.1: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 - 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 - - thread-stream@3.0.2: - dependencies: - real-require: 0.2.0 - - tiny-inflate@1.0.3: {} - - tiny-invariant@1.3.3: {} - - tinybench@2.8.0: {} - - tinypool@0.8.4: {} - - tinyspy@2.2.1: {} - - tippy.js@6.3.7: - dependencies: - '@popperjs/core': 2.11.8 - - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - - to-fast-properties@2.0.0: {} - - to-no-case@1.0.2: {} - - to-pascal-case@1.0.0: - dependencies: - to-space-case: 1.0.0 - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - to-space-case@1.0.0: - dependencies: - to-no-case: 1.0.2 - - totalist@3.0.1: {} - - tr46@0.0.3: {} - - trim-lines@3.0.1: {} - - trim-trailing-lines@2.1.0: {} - - trough@2.2.0: {} - - ts-dedent@2.2.0: {} - - ts-interface-checker@0.1.13: {} - - ts-pattern@5.3.1: {} - - tslib@1.14.1: {} - - tslib@2.6.2: {} - - tsx@4.10.4: - dependencies: - esbuild: 0.20.2 - get-tsconfig: 4.7.5 - optionalDependencies: - fsevents: 2.3.3 - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-detect@4.0.8: {} - - type-fest@0.20.2: {} - - type-fest@0.21.3: {} - - type-fest@0.7.1: {} - - type-fest@2.19.0: {} - - type-fest@4.18.2: {} - - typescript@5.1.6: {} - - typescript@5.4.5: {} - - ua-parser-js@1.0.37: {} - - uc.micro@2.1.0: {} - - ufo@1.5.3: {} - - undici-types@5.26.5: {} - - unescape-js@1.1.4: - dependencies: - string.fromcodepoint: 0.2.1 - - unhead@1.9.14: - dependencies: - '@unhead/dom': 1.9.14 - '@unhead/schema': 1.9.14 - '@unhead/shared': 1.9.14 - hookable: 5.5.3 - - unicode-properties@1.4.1: - dependencies: - base64-js: 1.5.1 - unicode-trie: 2.0.0 - - unicode-trie@2.0.0: - dependencies: - pako: 0.2.9 - tiny-inflate: 1.0.3 - - unified@10.1.2: - dependencies: - '@types/unist': 2.0.10 - bail: 2.0.2 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 5.3.7 - - unified@11.0.4: - dependencies: - '@types/unist': 3.0.2 - 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.1 - - unist-util-find-after@4.0.1: - dependencies: - '@types/unist': 2.0.10 - unist-util-is: 5.2.1 - - unist-util-find-after@5.0.0: - dependencies: - '@types/unist': 3.0.2 - unist-util-is: 6.0.0 - - unist-util-generated@2.0.1: {} - - unist-util-is@5.2.1: - dependencies: - '@types/unist': 2.0.10 - - unist-util-is@6.0.0: - dependencies: - '@types/unist': 3.0.2 - - unist-util-position@4.0.4: - dependencies: - '@types/unist': 2.0.10 - - unist-util-position@5.0.0: - dependencies: - '@types/unist': 3.0.2 - - unist-util-stringify-position@3.0.3: - dependencies: - '@types/unist': 2.0.10 - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.2 - - unist-util-visit-parents@5.1.3: - dependencies: - '@types/unist': 2.0.10 - unist-util-is: 5.2.1 - - unist-util-visit-parents@6.0.1: - dependencies: - '@types/unist': 3.0.2 - unist-util-is: 6.0.0 - - unist-util-visit@4.1.2: - dependencies: - '@types/unist': 2.0.10 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - - unist-util-visit@5.0.0: - dependencies: - '@types/unist': 3.0.2 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - - universalify@2.0.1: {} - - unplugin@1.0.1: - dependencies: - acorn: 8.11.3 - chokidar: 3.6.0 - webpack-sources: 3.2.3 - webpack-virtual-modules: 0.5.0 - - update-browserslist-db@1.0.16(browserslist@4.23.0): - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.1 - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - use-callback-ref@1.3.2(@types/react@18.2.47)(react@18.3.1): - dependencies: - react: 18.3.1 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.47 - - use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.3.3 - - use-composed-ref@1.3.0(react@18.3.1): - dependencies: - react: 18.3.1 - - use-isomorphic-layout-effect@1.1.2(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - use-latest@1.2.1(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - - use-prefers-color-scheme@1.1.3(react@18.3.1): - dependencies: - react: 18.3.1 - - use-sidecar@1.1.2(@types/react@18.2.47)(react@18.3.1): - dependencies: - detect-node-es: 1.1.0 - react: 18.3.1 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.47 - - use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): - dependencies: - detect-node-es: 1.1.0 - react: 18.3.1 - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.3.3 - - use-sync-external-store@1.2.2(react@18.3.1): - dependencies: - react: 18.3.1 - - usehooks-ts@3.1.0(react@18.3.1): - dependencies: - lodash.debounce: 4.0.8 - react: 18.3.1 - - util-deprecate@1.0.2: {} - - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 - - uuid@8.3.2: {} - - uuid@9.0.1: {} - - uvu@0.5.6: - dependencies: - dequal: 2.0.3 - diff: 5.2.0 - kleur: 4.1.5 - sade: 1.8.1 - - vary@1.1.2: {} - - vfile-location@4.1.0: - dependencies: - '@types/unist': 2.0.10 - vfile: 5.3.7 - - vfile-location@5.0.2: - dependencies: - '@types/unist': 3.0.2 - vfile: 6.0.1 - - vfile-message@3.1.4: - dependencies: - '@types/unist': 2.0.10 - unist-util-stringify-position: 3.0.3 - - vfile-message@4.0.2: - dependencies: - '@types/unist': 3.0.2 - unist-util-stringify-position: 4.0.0 - - vfile@5.3.7: - dependencies: - '@types/unist': 2.0.10 - is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - - vfile@6.0.1: - dependencies: - '@types/unist': 3.0.2 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 - - victory-vendor@36.9.2: - dependencies: - '@types/d3-array': 3.2.1 - '@types/d3-ease': 3.0.2 - '@types/d3-interpolate': 3.0.4 - '@types/d3-scale': 4.0.8 - '@types/d3-shape': 3.1.6 - '@types/d3-time': 3.0.3 - '@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 - - vite-compatible-readable-stream@3.6.1: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - vite-node@1.6.0(@types/node@20.12.12)(terser@5.31.1): - dependencies: - cac: 6.7.14 - debug: 4.3.4 - pathe: 1.1.2 - picocolors: 1.0.1 - vite: 5.3.3(@types/node@20.12.12)(terser@5.31.1) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vite@5.3.3(@types/node@20.12.12)(terser@5.31.1): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.40 - rollup: 4.18.0 - optionalDependencies: - '@types/node': 20.12.12 - fsevents: 2.3.3 - terser: 5.31.1 - - vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1): - dependencies: - '@vitest/expect': 1.6.0 - '@vitest/runner': 1.6.0 - '@vitest/snapshot': 1.6.0 - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - acorn-walk: 8.3.2 - chai: 4.4.1 - debug: 4.3.4 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.10 - pathe: 1.1.2 - picocolors: 1.0.1 - std-env: 3.7.0 - strip-literal: 2.1.0 - tinybench: 2.8.0 - tinypool: 0.8.4 - vite: 5.3.3(@types/node@20.12.12)(terser@5.31.1) - vite-node: 1.6.0(@types/node@20.12.12)(terser@5.31.1) - why-is-node-running: 2.2.2 - optionalDependencies: - '@types/node': 20.12.12 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - vlq@0.2.3: {} - - vue-demi@0.14.8(vue@3.4.30(typescript@5.4.5)): - dependencies: - vue: 3.4.30(typescript@5.4.5) - - vue-router@4.4.0(vue@3.4.30(typescript@5.4.5)): - dependencies: - '@vue/devtools-api': 6.6.3 - vue: 3.4.30(typescript@5.4.5) - - vue-sonner@1.1.3: {} - - vue@3.4.30(typescript@5.4.5): - dependencies: - '@vue/compiler-dom': 3.4.30 - '@vue/compiler-sfc': 3.4.30 - '@vue/runtime-dom': 3.4.30 - '@vue/server-renderer': 3.4.30(vue@3.4.30(typescript@5.4.5)) - '@vue/shared': 3.4.30 - optionalDependencies: - typescript: 5.4.5 - - w3c-keyname@2.2.8: {} - - warning@4.0.3: - dependencies: - loose-envify: 1.4.0 - - watchpack@2.4.1: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - - web-namespaces@2.0.1: {} - - web-streams-polyfill@4.0.0-beta.3: {} - - webidl-conversions@3.0.1: {} - - webpack-bundle-analyzer@4.10.1: - dependencies: - '@discoveryjs/json-ext': 0.5.7 - acorn: 8.11.3 - acorn-walk: 8.3.2 - commander: 7.2.0 - debounce: 1.2.1 - escape-string-regexp: 4.0.0 - gzip-size: 6.0.0 - html-escaper: 2.0.2 - is-plain-object: 5.0.0 - opener: 1.5.2 - picocolors: 1.0.1 - sirv: 2.0.4 - ws: 7.5.9 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - webpack-sources@3.2.3: {} - - webpack-virtual-modules@0.5.0: {} - - webpack@5.92.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.11.3 - acorn-import-attributes: 1.9.5(acorn@8.11.3) - browserslist: 4.23.0 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.0 - es-module-lexer: 1.5.3 - 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.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)(webpack@5.92.0) - watchpack: 2.4.1 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - why-is-node-running@2.2.2: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - optional: true - - 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 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - wrap-ansi@9.0.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 7.1.0 - strip-ansi: 7.1.0 - - wrappy@1.0.2: {} - - ws@7.5.9: {} - - ws@8.17.1: {} - - xmlhttprequest-ssl@2.0.0: {} - - xtend@4.0.2: {} - - y-codemirror.next@0.3.5(@codemirror/state@6.4.1)(@codemirror/view@6.28.2)(yjs@13.6.15): - dependencies: - '@codemirror/state': 6.4.1 - '@codemirror/view': 6.28.2 - lib0: 0.2.94 - yjs: 13.6.15 - optional: true - - y-prosemirror@1.2.1(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6)(y-protocols@1.0.6(yjs@13.6.15))(yjs@13.6.15): - dependencies: - lib0: 0.2.94 - prosemirror-model: 1.21.0 - prosemirror-state: 1.4.3 - prosemirror-view: 1.33.6 - y-protocols: 1.0.6(yjs@13.6.15) - yjs: 13.6.15 - - y-protocols@1.0.6(yjs@13.6.15): - dependencies: - lib0: 0.2.94 - yjs: 13.6.15 - - y18n@5.0.8: {} - - yallist@3.1.1: {} - - yallist@4.0.0: {} - - yaml@2.3.4: {} - - yaml@2.4.2: {} - - yaml@2.4.5: {} - - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.1.2 - 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 - - yjs@13.6.15: - dependencies: - lib0: 0.2.94 - - yocto-queue@0.1.0: {} - - yocto-queue@1.1.1: {} - - yoga-layout@2.0.1: {} - - zhead@2.2.4: {} - - zod-validation-error@3.3.0(zod@3.23.8): - dependencies: - zod: 3.23.8 - - zod@3.23.8: {} - - zwitch@2.0.4: {} diff --git a/prisma/enum-generator.cjs b/prisma/enum-generator.cjs deleted file mode 100644 index 103d9ee6c..000000000 --- a/prisma/enum-generator.cjs +++ /dev/null @@ -1,42 +0,0 @@ -/* eslint-disable */ -// @ts-nocheck - -/// credit : https://github.com/calcom/cal.com/blob/main/packages/prisma/enum-generator.ts - -const { generatorHandler } = require("@prisma/generator-helper"); -const fs = require("node:fs/promises"); -const path = require("node:path"); - -const header = `// This file was generated by a custom prisma generator, do not edit manually.\n`; - -generatorHandler({ - onManifest() { - return { - defaultOutput: "./enums.ts", - prettyName: "Prisma Enum Generator", - }; - }, - async onGenerate(options) { - const enums = options.dmmf.datamodel.enums; - - const output = enums.map((e) => { - let enumString = `export const ${e.name} = {\n`; - e.values.forEach(({ name: value }) => { - enumString += ` ${value}: "${value}",\n`; - }); - enumString += `} as const;\n\n`; - enumString += `export type ${e.name} = (typeof ${e.name})[keyof typeof ${e.name}];\n`; - - return enumString; - }); - - const outputFile = options.generator.output; - if (!outputFile?.value) { - throw new Error("No output file specified"); - } - - const outputPath = path.resolve(outputFile.value); - await fs.mkdir(path.dirname(outputPath), { recursive: true }); - await fs.writeFile(outputPath, header + output.join("\n"), "utf-8"); - }, -}); diff --git a/prisma/migrations/20240519093430_clean_migration/migration.sql b/prisma/migrations/20240519093430_clean_migration/migration.sql deleted file mode 100644 index 97500fc65..000000000 --- a/prisma/migrations/20240519093430_clean_migration/migration.sql +++ /dev/null @@ -1,827 +0,0 @@ --- CreateEnum -CREATE TYPE "CredentialDeviceTypeEnum" AS ENUM ('SINGLE_DEVICE', 'MULTI_DEVICE'); - --- CreateEnum -CREATE TYPE "MemberStatusEnum" AS ENUM ('ACTIVE', 'INACTIVE', 'PENDING'); - --- CreateEnum -CREATE TYPE "StakeholderTypeEnum" AS ENUM ('INDIVIDUAL', 'INSTITUTION'); - --- CreateEnum -CREATE TYPE "StakeholderRelationshipEnum" AS ENUM ('ADVISOR', 'BOARD_MEMBER', 'CONSULTANT', 'EMPLOYEE', 'EX_ADVISOR', 'EX_CONSULTANT', 'EX_EMPLOYEE', 'EXECUTIVE', 'FOUNDER', 'INVESTOR', 'NON_US_EMPLOYEE', 'OFFICER', 'OTHER'); - --- CreateEnum -CREATE TYPE "ShareTypeEnum" AS ENUM ('COMMON', 'PREFERRED'); - --- CreateEnum -CREATE TYPE "SharePrefixEnum" AS ENUM ('CS', 'PS'); - --- CreateEnum -CREATE TYPE "ConversionRightsEnum" AS ENUM ('CONVERTS_TO_FUTURE_ROUND', 'CONVERTS_TO_SHARE_CLASS_ID'); - --- CreateEnum -CREATE TYPE "CancellationBehaviorEnum" AS ENUM ('RETIRE', 'RETURN_TO_POOL', 'HOLD_AS_CAPITAL_STOCK', 'DEFINED_PER_PLAN_SECURITY'); - --- CreateEnum -CREATE TYPE "FieldTypes" AS ENUM ('TEXT', 'RADIO', 'EMAIL', 'DATE', 'DATETIME', 'TEXTAREA', 'CHECKBOX', 'SIGNATURE', 'SELECT'); - --- CreateEnum -CREATE TYPE "TemplateStatus" AS ENUM ('DRAFT', 'COMPLETE'); - --- CreateEnum -CREATE TYPE "EsignRecipientStatus" AS ENUM ('SENT', 'SIGNED', 'PENDING'); - --- CreateEnum -CREATE TYPE "SecuritiesStatusEnum" AS ENUM ('ACTIVE', 'DRAFT', 'SIGNED', 'PENDING'); - --- CreateEnum -CREATE TYPE "VestingScheduleEnum" AS ENUM ('VESTING_0_0_0', 'VESTING_0_0_1', 'VESTING_4_1_0', 'VESTING_4_1_1', 'VESTING_4_3_1', 'VESTING_4_6_1', 'VESTING_4_12_1'); - --- CreateEnum -CREATE TYPE "ShareLegendsEnum" AS ENUM ('US_SECURITIES_ACT', 'SALE_AND_ROFR', 'TRANSFER_RESTRICTIONS'); - --- CreateEnum -CREATE TYPE "OptionTypeEnum" AS ENUM ('ISO', 'NSO', 'RSU'); - --- CreateEnum -CREATE TYPE "OptionStatusEnum" AS ENUM ('DRAFT', 'ACTIVE', 'EXERCISED', 'EXPIRED', 'CANCELLED'); - --- CreateEnum -CREATE TYPE "SafeTypeEnum" AS ENUM ('PRE_MONEY', 'POST_MONEY'); - --- CreateEnum -CREATE TYPE "SafeStatusEnum" AS ENUM ('DRAFT', 'ACTIVE', 'PENDING', 'EXPIRED', 'CANCELLED'); - --- CreateEnum -CREATE TYPE "SafeTemplateEnum" AS ENUM ('Valuation Cap, no Discount', 'Discount, no Valuation Cap', 'MFN, no Valuation Cap, no Discount', 'Valuation Cap, no Discount, include Pro Rata Rights', 'Discount, no Valuation Cap, include Pro Rata Rights', 'MFN, no Valuation Cap, no Discount, include Pro Rata Rights', 'Custom'); - --- CreateEnum -CREATE TYPE "ConvertibleStatusEnum" AS ENUM ('DRAFT', 'ACTIVE', 'PENDING', 'EXPIRED', 'CANCELLED'); - --- CreateEnum -CREATE TYPE "ConvertibleTypeEnum" AS ENUM ('CCD', 'OCD', 'NOTE'); - --- CreateEnum -CREATE TYPE "ConvertibleInterestMethodEnum" AS ENUM ('SIMPLE', 'COMPOUND'); - --- CreateEnum -CREATE TYPE "ConvertibleInterestAccrualEnum" AS ENUM ('DAILY', 'MONTHLY', 'SEMI_ANNUALLY', 'ANNUALLY', 'YEARLY', 'CONTINUOUSLY'); - --- CreateEnum -CREATE TYPE "ConvertibleInterestPaymentScheduleEnum" AS ENUM ('DEFERRED', 'PAY_AT_MATURITY'); - --- CreateEnum -CREATE TYPE "UpdateStatusEnum" AS ENUM ('DRAFT', 'PUBLIC', 'PRIVATE'); - --- CreateTable -CREATE TABLE "Account" ( - "id" TEXT NOT NULL, - "userId" TEXT NOT NULL, - "type" TEXT NOT NULL, - "provider" TEXT NOT NULL, - "providerAccountId" TEXT NOT NULL, - "refresh_token" TEXT, - "access_token" TEXT, - "expires_at" INTEGER, - "token_type" TEXT, - "scope" TEXT, - "id_token" TEXT, - "session_state" TEXT, - - CONSTRAINT "Account_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Session" ( - "id" TEXT NOT NULL, - "sessionToken" TEXT NOT NULL, - "userId" TEXT NOT NULL, - "expires" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Session_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "User" ( - "id" TEXT NOT NULL, - "name" TEXT, - "email" TEXT, - "password" TEXT, - "emailVerified" TIMESTAMP(3), - "image" TEXT, - "lastSignedIn" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "identityProvider" TEXT, - - CONSTRAINT "User_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Passkey" ( - "id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "lastUsedAt" TIMESTAMP(3), - "credentialId" BYTEA NOT NULL, - "credentialPublicKey" BYTEA NOT NULL, - "counter" BIGINT NOT NULL, - "credentialDeviceType" "CredentialDeviceTypeEnum" NOT NULL, - "credentialBackedUp" BOOLEAN NOT NULL, - "transports" TEXT[], - "userId" TEXT NOT NULL, - - CONSTRAINT "Passkey_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "PasskeyVerificationToken" ( - "id" TEXT NOT NULL, - "token" TEXT NOT NULL, - "expiresAt" TIMESTAMP(3) NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - - CONSTRAINT "PasskeyVerificationToken_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "VerificationToken" ( - "id" SERIAL NOT NULL, - "secondaryId" TEXT NOT NULL, - "identifier" TEXT NOT NULL, - "token" TEXT NOT NULL, - "expires" TIMESTAMP(3) NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "userId" TEXT, - - CONSTRAINT "VerificationToken_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "PasswordResetToken" ( - "id" TEXT NOT NULL, - "email" TEXT NOT NULL, - "token" TEXT NOT NULL, - "expires" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "PasswordResetToken_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Company" ( - "id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "logo" TEXT, - "publicId" TEXT NOT NULL, - "website" TEXT, - "incorporationType" TEXT NOT NULL, - "incorporationDate" TIMESTAMP(3) NOT NULL, - "incorporationCountry" TEXT NOT NULL, - "incorporationState" TEXT NOT NULL, - "streetAddress" TEXT NOT NULL, - "city" TEXT NOT NULL, - "state" TEXT NOT NULL, - "zipcode" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Company_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Member" ( - "id" TEXT NOT NULL, - "title" TEXT, - "status" "MemberStatusEnum" NOT NULL DEFAULT 'PENDING', - "isOnboarded" BOOLEAN NOT NULL DEFAULT false, - "workEmail" TEXT, - "lastAccessed" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - "userId" TEXT NOT NULL, - "companyId" TEXT NOT NULL, - - CONSTRAINT "Member_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Stakeholder" ( - "id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "email" TEXT NOT NULL, - "institutionName" TEXT, - "stakeholderType" "StakeholderTypeEnum" NOT NULL DEFAULT 'INDIVIDUAL', - "currentRelationship" "StakeholderRelationshipEnum" NOT NULL DEFAULT 'EMPLOYEE', - "taxId" TEXT, - "streetAddress" TEXT, - "city" TEXT, - "state" TEXT, - "zipcode" TEXT, - "country" TEXT NOT NULL DEFAULT 'US', - "companyId" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Stakeholder_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Audit" ( - "id" TEXT NOT NULL, - "companyId" TEXT NOT NULL, - "summary" TEXT, - "action" TEXT NOT NULL, - "occurredAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "actor" JSONB NOT NULL, - "target" JSONB[], - "context" JSONB NOT NULL, - - CONSTRAINT "Audit_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "ShareClass" ( - "id" TEXT NOT NULL, - "idx" INTEGER NOT NULL, - "name" TEXT NOT NULL, - "classType" "ShareTypeEnum" NOT NULL DEFAULT 'COMMON', - "prefix" "SharePrefixEnum" NOT NULL DEFAULT 'CS', - "initialSharesAuthorized" BIGINT NOT NULL, - "boardApprovalDate" TIMESTAMP(3) NOT NULL, - "stockholderApprovalDate" TIMESTAMP(3) NOT NULL, - "votesPerShare" INTEGER NOT NULL, - "parValue" DOUBLE PRECISION NOT NULL, - "pricePerShare" DOUBLE PRECISION NOT NULL, - "seniority" INTEGER NOT NULL, - "conversionRights" "ConversionRightsEnum" NOT NULL DEFAULT 'CONVERTS_TO_FUTURE_ROUND', - "convertsToShareClassId" TEXT, - "liquidationPreferenceMultiple" DOUBLE PRECISION NOT NULL, - "participationCapMultiple" DOUBLE PRECISION NOT NULL, - "companyId" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "ShareClass_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "EquityPlan" ( - "id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "boardApprovalDate" TIMESTAMP(3) NOT NULL, - "planEffectiveDate" TIMESTAMP(3), - "initialSharesReserved" BIGINT NOT NULL, - "defaultCancellatonBehavior" "CancellationBehaviorEnum" NOT NULL, - "comments" TEXT, - "companyId" TEXT NOT NULL, - "shareClassId" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "EquityPlan_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Bucket" ( - "id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "key" TEXT NOT NULL, - "mimeType" TEXT NOT NULL, - "size" INTEGER NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Bucket_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Document" ( - "id" TEXT NOT NULL, - "publicId" TEXT NOT NULL, - "name" TEXT NOT NULL, - "bucketId" TEXT NOT NULL, - "uploaderId" TEXT, - "companyId" TEXT NOT NULL, - "shareId" TEXT, - "optionId" TEXT, - "safeId" TEXT, - "convertibleNoteId" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Document_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "DataRoom" ( - "id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "publicId" TEXT NOT NULL, - "public" BOOLEAN NOT NULL DEFAULT false, - "companyId" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "DataRoom_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "DataRoomDocument" ( - "id" TEXT NOT NULL, - "dataRoomId" TEXT NOT NULL, - "documentId" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - - CONSTRAINT "DataRoomDocument_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "DataRoomRecipient" ( - "id" TEXT NOT NULL, - "name" TEXT, - "email" TEXT NOT NULL, - "dataRoomId" TEXT NOT NULL, - "memberId" TEXT, - "stakeholderId" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "DataRoomRecipient_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "UpdateRecipient" ( - "id" TEXT NOT NULL, - "name" TEXT, - "email" TEXT NOT NULL, - "updateId" TEXT NOT NULL, - "memberId" TEXT, - "stakeholderId" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "UpdateRecipient_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "DocumentShare" ( - "id" TEXT NOT NULL, - "link" TEXT NOT NULL, - "publicId" TEXT NOT NULL, - "linkExpiresAt" TIMESTAMP(3) NOT NULL, - "recipients" TEXT[] DEFAULT ARRAY[]::TEXT[], - "emailProtected" BOOLEAN NOT NULL DEFAULT false, - "documentId" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "DocumentShare_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "TemplateField" ( - "id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "type" "FieldTypes" NOT NULL DEFAULT 'TEXT', - "defaultValue" TEXT NOT NULL DEFAULT '', - "readOnly" BOOLEAN NOT NULL DEFAULT false, - "required" BOOLEAN NOT NULL DEFAULT false, - "prefilledValue" TEXT, - "top" INTEGER NOT NULL, - "left" INTEGER NOT NULL, - "width" INTEGER NOT NULL, - "height" INTEGER NOT NULL, - "recipientId" TEXT NOT NULL, - "templateId" TEXT NOT NULL, - "viewportHeight" INTEGER NOT NULL, - "viewportWidth" INTEGER NOT NULL, - "page" INTEGER NOT NULL, - "meta" JSONB NOT NULL DEFAULT '{}', - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "TemplateField_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Template" ( - "id" TEXT NOT NULL, - "publicId" TEXT NOT NULL, - "name" TEXT NOT NULL, - "status" "TemplateStatus" NOT NULL DEFAULT 'DRAFT', - "orderedDelivery" BOOLEAN NOT NULL DEFAULT false, - "message" TEXT, - "bucketId" TEXT NOT NULL, - "uploaderId" TEXT NOT NULL, - "companyId" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - "completedOn" TIMESTAMP(3), - - CONSTRAINT "Template_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "EsignRecipient" ( - "id" TEXT NOT NULL, - "email" TEXT NOT NULL, - "name" TEXT, - "templateId" TEXT NOT NULL, - "status" "EsignRecipientStatus" NOT NULL DEFAULT 'PENDING', - "memberId" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "EsignRecipient_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Share" ( - "id" TEXT NOT NULL, - "status" "SecuritiesStatusEnum" NOT NULL DEFAULT 'DRAFT', - "certificateId" TEXT NOT NULL, - "quantity" INTEGER NOT NULL, - "pricePerShare" DOUBLE PRECISION, - "capitalContribution" DOUBLE PRECISION, - "ipContribution" DOUBLE PRECISION, - "debtCancelled" DOUBLE PRECISION, - "otherContributions" DOUBLE PRECISION, - "vestingSchedule" "VestingScheduleEnum" NOT NULL, - "companyLegends" "ShareLegendsEnum"[], - "issueDate" TIMESTAMP(3) NOT NULL, - "rule144Date" TIMESTAMP(3), - "vestingStartDate" TIMESTAMP(3), - "boardApprovalDate" TIMESTAMP(3) NOT NULL, - "stakeholderId" TEXT NOT NULL, - "companyId" TEXT NOT NULL, - "shareClassId" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Share_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Option" ( - "id" TEXT NOT NULL, - "grantId" TEXT NOT NULL, - "quantity" INTEGER NOT NULL, - "exercisePrice" DOUBLE PRECISION NOT NULL, - "type" "OptionTypeEnum" NOT NULL, - "status" "OptionStatusEnum" NOT NULL DEFAULT 'DRAFT', - "vestingSchedule" "VestingScheduleEnum" NOT NULL, - "issueDate" TIMESTAMP(3) NOT NULL, - "expirationDate" TIMESTAMP(3) NOT NULL, - "vestingStartDate" TIMESTAMP(3) NOT NULL, - "boardApprovalDate" TIMESTAMP(3) NOT NULL, - "rule144Date" TIMESTAMP(3) NOT NULL, - "stakeholderId" TEXT NOT NULL, - "companyId" TEXT NOT NULL, - "equityPlanId" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Option_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Investment" ( - "id" TEXT NOT NULL, - "amount" DOUBLE PRECISION NOT NULL, - "shares" BIGINT NOT NULL, - "date" TIMESTAMP(3) NOT NULL, - "comments" TEXT, - "shareClassId" TEXT NOT NULL, - "companyId" TEXT NOT NULL, - "stakeholderId" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Investment_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Safe" ( - "id" TEXT NOT NULL, - "publicId" TEXT NOT NULL, - "type" "SafeTypeEnum" NOT NULL DEFAULT 'POST_MONEY', - "status" "SafeStatusEnum" NOT NULL DEFAULT 'DRAFT', - "capital" DOUBLE PRECISION NOT NULL, - "safeTemplate" "SafeTemplateEnum", - "valuationCap" DOUBLE PRECISION, - "discountRate" DOUBLE PRECISION, - "mfn" BOOLEAN NOT NULL DEFAULT false, - "proRata" BOOLEAN NOT NULL DEFAULT false, - "additionalTerms" TEXT, - "stakeholderId" TEXT NOT NULL, - "companyId" TEXT NOT NULL, - "issueDate" TIMESTAMP(3) NOT NULL, - "boardApprovalDate" TIMESTAMP(3) NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Safe_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "ConvertibleNote" ( - "id" TEXT NOT NULL, - "publicId" TEXT NOT NULL, - "status" "ConvertibleStatusEnum" NOT NULL DEFAULT 'DRAFT', - "type" "ConvertibleTypeEnum" NOT NULL DEFAULT 'NOTE', - "capital" DOUBLE PRECISION NOT NULL, - "conversionCap" DOUBLE PRECISION, - "discountRate" DOUBLE PRECISION, - "mfn" BOOLEAN, - "additionalTerms" TEXT, - "interestRate" DOUBLE PRECISION, - "interestMethod" "ConvertibleInterestMethodEnum", - "interestAccrual" "ConvertibleInterestAccrualEnum", - "interestPaymentSchedule" "ConvertibleInterestPaymentScheduleEnum", - "stakeholderId" TEXT NOT NULL, - "companyId" TEXT NOT NULL, - "issueDate" TIMESTAMP(3) NOT NULL, - "boardApprovalDate" TIMESTAMP(3) NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "ConvertibleNote_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Update" ( - "id" TEXT NOT NULL, - "publicId" TEXT NOT NULL, - "title" TEXT NOT NULL, - "content" JSONB NOT NULL, - "html" TEXT NOT NULL, - "status" "UpdateStatusEnum" NOT NULL DEFAULT 'DRAFT', - "authorId" TEXT NOT NULL, - "companyId" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Update_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "EsignAudit" ( - "id" TEXT NOT NULL, - "companyId" TEXT NOT NULL, - "templateId" TEXT NOT NULL, - "recipientId" TEXT, - "action" TEXT NOT NULL, - "ip" TEXT NOT NULL, - "userAgent" TEXT NOT NULL, - "location" TEXT NOT NULL, - "summary" TEXT NOT NULL, - "occurredAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "EsignAudit_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE INDEX "Account_userId_idx" ON "Account"("userId"); - --- CreateIndex -CREATE UNIQUE INDEX "Account_provider_providerAccountId_key" ON "Account"("provider", "providerAccountId"); - --- CreateIndex -CREATE UNIQUE INDEX "Session_sessionToken_key" ON "Session"("sessionToken"); - --- CreateIndex -CREATE INDEX "Session_userId_idx" ON "Session"("userId"); - --- CreateIndex -CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); - --- CreateIndex -CREATE INDEX "Passkey_userId_idx" ON "Passkey"("userId"); - --- CreateIndex -CREATE UNIQUE INDEX "PasskeyVerificationToken_id_key" ON "PasskeyVerificationToken"("id"); - --- CreateIndex -CREATE UNIQUE INDEX "PasskeyVerificationToken_token_key" ON "PasskeyVerificationToken"("token"); - --- CreateIndex -CREATE UNIQUE INDEX "VerificationToken_secondaryId_key" ON "VerificationToken"("secondaryId"); - --- CreateIndex -CREATE UNIQUE INDEX "VerificationToken_token_key" ON "VerificationToken"("token"); - --- CreateIndex -CREATE INDEX "VerificationToken_userId_idx" ON "VerificationToken"("userId"); - --- CreateIndex -CREATE UNIQUE INDEX "VerificationToken_identifier_token_key" ON "VerificationToken"("identifier", "token"); - --- CreateIndex -CREATE UNIQUE INDEX "PasswordResetToken_token_key" ON "PasswordResetToken"("token"); - --- CreateIndex -CREATE UNIQUE INDEX "PasswordResetToken_email_token_key" ON "PasswordResetToken"("email", "token"); - --- CreateIndex -CREATE UNIQUE INDEX "Company_publicId_key" ON "Company"("publicId"); - --- CreateIndex -CREATE INDEX "Member_companyId_idx" ON "Member"("companyId"); - --- CreateIndex -CREATE INDEX "Member_status_idx" ON "Member"("status"); - --- CreateIndex -CREATE INDEX "Member_userId_idx" ON "Member"("userId"); - --- CreateIndex -CREATE UNIQUE INDEX "Member_companyId_userId_key" ON "Member"("companyId", "userId"); - --- CreateIndex -CREATE UNIQUE INDEX "Stakeholder_email_key" ON "Stakeholder"("email"); - --- CreateIndex -CREATE INDEX "Stakeholder_companyId_idx" ON "Stakeholder"("companyId"); - --- CreateIndex -CREATE INDEX "Audit_companyId_idx" ON "Audit"("companyId"); - --- CreateIndex -CREATE INDEX "ShareClass_companyId_idx" ON "ShareClass"("companyId"); - --- CreateIndex -CREATE UNIQUE INDEX "ShareClass_companyId_idx_key" ON "ShareClass"("companyId", "idx"); - --- CreateIndex -CREATE INDEX "EquityPlan_shareClassId_idx" ON "EquityPlan"("shareClassId"); - --- CreateIndex -CREATE INDEX "EquityPlan_companyId_idx" ON "EquityPlan"("companyId"); - --- CreateIndex -CREATE INDEX "Document_bucketId_idx" ON "Document"("bucketId"); - --- CreateIndex -CREATE INDEX "Document_uploaderId_idx" ON "Document"("uploaderId"); - --- CreateIndex -CREATE INDEX "Document_companyId_idx" ON "Document"("companyId"); - --- CreateIndex -CREATE INDEX "Document_shareId_idx" ON "Document"("shareId"); - --- CreateIndex -CREATE INDEX "Document_optionId_idx" ON "Document"("optionId"); - --- CreateIndex -CREATE INDEX "Document_safeId_idx" ON "Document"("safeId"); - --- CreateIndex -CREATE INDEX "Document_convertibleNoteId_idx" ON "Document"("convertibleNoteId"); - --- CreateIndex -CREATE UNIQUE INDEX "Document_publicId_key" ON "Document"("publicId"); - --- CreateIndex -CREATE INDEX "DataRoom_publicId_idx" ON "DataRoom"("publicId"); - --- CreateIndex -CREATE INDEX "DataRoom_companyId_idx" ON "DataRoom"("companyId"); - --- CreateIndex -CREATE UNIQUE INDEX "DataRoom_publicId_key" ON "DataRoom"("publicId"); - --- CreateIndex -CREATE UNIQUE INDEX "DataRoom_companyId_name_key" ON "DataRoom"("companyId", "name"); - --- CreateIndex -CREATE INDEX "DataRoomDocument_dataRoomId_idx" ON "DataRoomDocument"("dataRoomId"); - --- CreateIndex -CREATE INDEX "DataRoomDocument_documentId_idx" ON "DataRoomDocument"("documentId"); - --- CreateIndex -CREATE UNIQUE INDEX "DataRoomDocument_dataRoomId_documentId_key" ON "DataRoomDocument"("dataRoomId", "documentId"); - --- CreateIndex -CREATE INDEX "DataRoomRecipient_id_dataRoomId_idx" ON "DataRoomRecipient"("id", "dataRoomId"); - --- CreateIndex -CREATE INDEX "DataRoomRecipient_memberId_idx" ON "DataRoomRecipient"("memberId"); - --- CreateIndex -CREATE INDEX "DataRoomRecipient_dataRoomId_idx" ON "DataRoomRecipient"("dataRoomId"); - --- CreateIndex -CREATE INDEX "DataRoomRecipient_stakeholderId_idx" ON "DataRoomRecipient"("stakeholderId"); - --- CreateIndex -CREATE UNIQUE INDEX "DataRoomRecipient_dataRoomId_email_key" ON "DataRoomRecipient"("dataRoomId", "email"); - --- CreateIndex -CREATE INDEX "UpdateRecipient_id_updateId_idx" ON "UpdateRecipient"("id", "updateId"); - --- CreateIndex -CREATE INDEX "UpdateRecipient_memberId_idx" ON "UpdateRecipient"("memberId"); - --- CreateIndex -CREATE INDEX "UpdateRecipient_updateId_idx" ON "UpdateRecipient"("updateId"); - --- CreateIndex -CREATE INDEX "UpdateRecipient_stakeholderId_idx" ON "UpdateRecipient"("stakeholderId"); - --- CreateIndex -CREATE UNIQUE INDEX "UpdateRecipient_updateId_email_key" ON "UpdateRecipient"("updateId", "email"); - --- CreateIndex -CREATE INDEX "DocumentShare_documentId_idx" ON "DocumentShare"("documentId"); - --- CreateIndex -CREATE INDEX "TemplateField_templateId_idx" ON "TemplateField"("templateId"); - --- CreateIndex -CREATE INDEX "TemplateField_recipientId_idx" ON "TemplateField"("recipientId"); - --- CreateIndex -CREATE INDEX "Template_bucketId_idx" ON "Template"("bucketId"); - --- CreateIndex -CREATE INDEX "Template_uploaderId_idx" ON "Template"("uploaderId"); - --- CreateIndex -CREATE INDEX "Template_companyId_idx" ON "Template"("companyId"); - --- CreateIndex -CREATE INDEX "EsignRecipient_memberId_idx" ON "EsignRecipient"("memberId"); - --- CreateIndex -CREATE INDEX "EsignRecipient_templateId_idx" ON "EsignRecipient"("templateId"); - --- CreateIndex -CREATE INDEX "Share_companyId_idx" ON "Share"("companyId"); - --- CreateIndex -CREATE INDEX "Share_shareClassId_idx" ON "Share"("shareClassId"); - --- CreateIndex -CREATE INDEX "Share_stakeholderId_idx" ON "Share"("stakeholderId"); - --- CreateIndex -CREATE INDEX "Option_companyId_idx" ON "Option"("companyId"); - --- CreateIndex -CREATE INDEX "Option_equityPlanId_idx" ON "Option"("equityPlanId"); - --- CreateIndex -CREATE INDEX "Option_stakeholderId_idx" ON "Option"("stakeholderId"); - --- CreateIndex -CREATE UNIQUE INDEX "Option_companyId_grantId_key" ON "Option"("companyId", "grantId"); - --- CreateIndex -CREATE INDEX "Investment_companyId_idx" ON "Investment"("companyId"); - --- CreateIndex -CREATE INDEX "Investment_stakeholderId_idx" ON "Investment"("stakeholderId"); - --- CreateIndex -CREATE INDEX "Investment_shareClassId_idx" ON "Investment"("shareClassId"); - --- CreateIndex -CREATE INDEX "Safe_companyId_idx" ON "Safe"("companyId"); - --- CreateIndex -CREATE INDEX "Safe_stakeholderId_idx" ON "Safe"("stakeholderId"); - --- CreateIndex -CREATE UNIQUE INDEX "Safe_publicId_companyId_key" ON "Safe"("publicId", "companyId"); - --- CreateIndex -CREATE INDEX "ConvertibleNote_companyId_idx" ON "ConvertibleNote"("companyId"); - --- CreateIndex -CREATE INDEX "ConvertibleNote_stakeholderId_idx" ON "ConvertibleNote"("stakeholderId"); - --- CreateIndex -CREATE UNIQUE INDEX "ConvertibleNote_publicId_companyId_key" ON "ConvertibleNote"("publicId", "companyId"); - --- CreateIndex -CREATE INDEX "Update_publicId_idx" ON "Update"("publicId"); - --- CreateIndex -CREATE INDEX "Update_authorId_idx" ON "Update"("authorId"); - --- CreateIndex -CREATE INDEX "Update_companyId_idx" ON "Update"("companyId"); - --- CreateIndex -CREATE UNIQUE INDEX "Update_publicId_key" ON "Update"("publicId"); - --- CreateIndex -CREATE INDEX "EsignAudit_companyId_idx" ON "EsignAudit"("companyId"); - --- CreateIndex -CREATE INDEX "EsignAudit_templateId_idx" ON "EsignAudit"("templateId"); - --- CreateIndex -CREATE INDEX "EsignAudit_recipientId_idx" ON "EsignAudit"("recipientId"); diff --git a/prisma/migrations/20240520051518_add_country/migration.sql b/prisma/migrations/20240520051518_add_country/migration.sql deleted file mode 100644 index 76229a53a..000000000 --- a/prisma/migrations/20240520051518_add_country/migration.sql +++ /dev/null @@ -1,8 +0,0 @@ -/* - Warnings: - - - Added the required column `country` to the `Company` table without a default value. This is not possible if the table is not empty. - -*/ --- AlterTable -ALTER TABLE "Company" ADD COLUMN "country" TEXT NOT NULL; diff --git a/prisma/migrations/20240527024755_add_safe/migration.sql b/prisma/migrations/20240527024755_add_safe/migration.sql deleted file mode 100644 index b349db631..000000000 --- a/prisma/migrations/20240527024755_add_safe/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "Safe" ADD COLUMN "safeId" TEXT; diff --git a/prisma/migrations/20240531045514_uniq_certificate_on_share/migration.sql b/prisma/migrations/20240531045514_uniq_certificate_on_share/migration.sql deleted file mode 100644 index 39746aa40..000000000 --- a/prisma/migrations/20240531045514_uniq_certificate_on_share/migration.sql +++ /dev/null @@ -1,8 +0,0 @@ -/* - Warnings: - - - A unique constraint covering the columns `[companyId,certificateId]` on the table `Share` will be added. If there are existing duplicate values, this will fail. - -*/ --- CreateIndex -CREATE UNIQUE INDEX "Share_companyId_certificateId_key" ON "Share"("companyId", "certificateId"); diff --git a/prisma/migrations/20240531163457_add_tags_column_in_bucket_table/migration.sql b/prisma/migrations/20240531163457_add_tags_column_in_bucket_table/migration.sql deleted file mode 100644 index 5b8b17097..000000000 --- a/prisma/migrations/20240531163457_add_tags_column_in_bucket_table/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "Bucket" ADD COLUMN "tags" TEXT[]; diff --git a/prisma/migrations/20240604190035_add_public_column_in_update_table/migration.sql b/prisma/migrations/20240604190035_add_public_column_in_update_table/migration.sql deleted file mode 100644 index 2dcc49922..000000000 --- a/prisma/migrations/20240604190035_add_public_column_in_update_table/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "Update" ADD COLUMN "public" BOOLEAN NOT NULL DEFAULT false; diff --git a/prisma/migrations/20240611062650_stripe_billing/migration.sql b/prisma/migrations/20240611062650_stripe_billing/migration.sql deleted file mode 100644 index b9370efd3..000000000 --- a/prisma/migrations/20240611062650_stripe_billing/migration.sql +++ /dev/null @@ -1,77 +0,0 @@ --- CreateEnum -CREATE TYPE "PricingType" AS ENUM ('one_time', 'recurring'); - --- CreateEnum -CREATE TYPE "PricingPlanInterval" AS ENUM ('day', 'week', 'month', 'year'); - --- CreateEnum -CREATE TYPE "SubscriptionStatus" AS ENUM ('trialing', 'active', 'canceled', 'incomplete', 'incomplete_expired', 'past_due', 'unpaid', 'paused'); - --- CreateTable -CREATE TABLE "BillingProduct" ( - "id" TEXT NOT NULL, - "active" BOOLEAN NOT NULL, - "name" TEXT NOT NULL, - "description" TEXT, - "metadata" JSONB, - - CONSTRAINT "BillingProduct_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "BillingPrice" ( - "id" TEXT NOT NULL, - "productId" TEXT NOT NULL, - "active" BOOLEAN NOT NULL, - "description" TEXT, - "unitAmount" BIGINT, - "currency" CHAR(3) NOT NULL, - "type" "PricingType" NOT NULL, - "interval" "PricingPlanInterval", - "intervalCount" INTEGER, - "trialPeriodDays" INTEGER, - "metadata" JSONB, - - CONSTRAINT "BillingPrice_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "BillingSubscription" ( - "id" TEXT NOT NULL, - "priceId" TEXT NOT NULL, - "quantity" INTEGER NOT NULL, - "status" "SubscriptionStatus" NOT NULL, - "cancelAtPeriodEnd" BOOLEAN NOT NULL, - "created" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "currentPeriodStart" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "currentPeriodEnd" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "endedAt" TIMESTAMP(3), - "cancelAt" TIMESTAMP(3), - "canceledAt" TIMESTAMP(3), - "trialStart" TIMESTAMP(3), - "trialEnd" TIMESTAMP(3), - "metadata" JSONB, - "customerId" TEXT NOT NULL, - - CONSTRAINT "BillingSubscription_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "BillingCustomer" ( - "id" TEXT NOT NULL, - "companyId" TEXT, - - CONSTRAINT "BillingCustomer_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE INDEX "BillingPrice_productId_idx" ON "BillingPrice"("productId"); - --- CreateIndex -CREATE INDEX "BillingSubscription_priceId_idx" ON "BillingSubscription"("priceId"); - --- CreateIndex -CREATE INDEX "BillingSubscription_customerId_idx" ON "BillingSubscription"("customerId"); - --- CreateIndex -CREATE INDEX "BillingCustomer_companyId_idx" ON "BillingCustomer"("companyId"); diff --git a/prisma/migrations/20240626090043_api_key/migration.sql b/prisma/migrations/20240626090043_api_key/migration.sql deleted file mode 100644 index e31adc44a..000000000 --- a/prisma/migrations/20240626090043_api_key/migration.sql +++ /dev/null @@ -1,20 +0,0 @@ --- CreateTable -CREATE TABLE "ApiKey" ( - "id" TEXT NOT NULL, - "secret" TEXT NOT NULL, - "userId" TEXT NOT NULL, - "active" BOOLEAN NOT NULL DEFAULT true, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "ApiKey_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "ApiKey_secret_key" ON "ApiKey"("secret"); - --- CreateIndex -CREATE INDEX "ApiKey_userId_idx" ON "ApiKey"("userId"); - --- CreateIndex -CREATE UNIQUE INDEX "ApiKey_userId_key" ON "ApiKey"("userId"); diff --git a/prisma/migrations/20240626233026_update_api_key/migration.sql b/prisma/migrations/20240626233026_update_api_key/migration.sql deleted file mode 100644 index 7d1dcfb28..000000000 --- a/prisma/migrations/20240626233026_update_api_key/migration.sql +++ /dev/null @@ -1,21 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `secret` on the `ApiKey` table. All the data in the column will be lost. - - A unique constraint covering the columns `[hashedToken]` on the table `ApiKey` will be added. If there are existing duplicate values, this will fail. - - Added the required column `hashedToken` to the `ApiKey` table without a default value. This is not possible if the table is not empty. - -*/ --- DropIndex -DROP INDEX "ApiKey_secret_key"; - --- DropIndex -DROP INDEX "ApiKey_userId_key"; - --- AlterTable -ALTER TABLE "ApiKey" DROP COLUMN "secret", -ADD COLUMN "hashedToken" TEXT NOT NULL, -ADD COLUMN "lastUsed" TIMESTAMP(3); - --- CreateIndex -CREATE UNIQUE INDEX "ApiKey_hashedToken_key" ON "ApiKey"("hashedToken"); diff --git a/prisma/migrations/20240627054519_add_name_to_api_key/migration.sql b/prisma/migrations/20240627054519_add_name_to_api_key/migration.sql deleted file mode 100644 index 329b965e4..000000000 --- a/prisma/migrations/20240627054519_add_name_to_api_key/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "ApiKey" ADD COLUMN "name" TEXT; diff --git a/prisma/migrations/20240629070543_add_api_key/migration.sql b/prisma/migrations/20240629070543_add_api_key/migration.sql deleted file mode 100644 index bf5dcaa31..000000000 --- a/prisma/migrations/20240629070543_add_api_key/migration.sql +++ /dev/null @@ -1,15 +0,0 @@ -/* - Warnings: - - - A unique constraint covering the columns `[key]` on the table `ApiKey` will be added. If there are existing duplicate values, this will fail. - - Added the required column `key` to the `ApiKey` table without a default value. This is not possible if the table is not empty. - -*/ --- AlterTable -ALTER TABLE "ApiKey" ADD COLUMN "key" TEXT NOT NULL; - --- CreateIndex -CREATE UNIQUE INDEX "ApiKey_key_key" ON "ApiKey"("key"); - --- CreateIndex -CREATE INDEX "ApiKey_key_active_idx" ON "ApiKey"("key", "active"); diff --git a/prisma/migrations/20240629070656_change_key_to_key_id/migration.sql b/prisma/migrations/20240629070656_change_key_to_key_id/migration.sql deleted file mode 100644 index ef8389743..000000000 --- a/prisma/migrations/20240629070656_change_key_to_key_id/migration.sql +++ /dev/null @@ -1,23 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `key` on the `ApiKey` table. All the data in the column will be lost. - - A unique constraint covering the columns `[keyId]` on the table `ApiKey` will be added. If there are existing duplicate values, this will fail. - - Added the required column `keyId` to the `ApiKey` table without a default value. This is not possible if the table is not empty. - -*/ --- DropIndex -DROP INDEX "ApiKey_key_active_idx"; - --- DropIndex -DROP INDEX "ApiKey_key_key"; - --- AlterTable -ALTER TABLE "ApiKey" DROP COLUMN "key", -ADD COLUMN "keyId" TEXT NOT NULL; - --- CreateIndex -CREATE UNIQUE INDEX "ApiKey_keyId_key" ON "ApiKey"("keyId"); - --- CreateIndex -CREATE INDEX "ApiKey_keyId_active_idx" ON "ApiKey"("keyId", "active"); diff --git a/prisma/migrations/20240629071500_index_user_id_and_active/migration.sql b/prisma/migrations/20240629071500_index_user_id_and_active/migration.sql deleted file mode 100644 index bd46e1c47..000000000 --- a/prisma/migrations/20240629071500_index_user_id_and_active/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- CreateIndex -CREATE INDEX "ApiKey_userId_active_idx" ON "ApiKey"("userId", "active"); diff --git a/prisma/migrations/20240709002523_add_rbac/migration.sql b/prisma/migrations/20240709002523_add_rbac/migration.sql deleted file mode 100644 index 3e7c7b887..000000000 --- a/prisma/migrations/20240709002523_add_rbac/migration.sql +++ /dev/null @@ -1,22 +0,0 @@ --- CreateEnum -CREATE TYPE "Roles" AS ENUM ('ADMIN', 'CUSTOM'); - --- AlterTable -ALTER TABLE "Member" ADD COLUMN "customRoleId" TEXT, -ADD COLUMN "role" "Roles" DEFAULT 'ADMIN'; - --- CreateTable -CREATE TABLE "CustomRole" ( - "id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "companyId" TEXT NOT NULL, - "permissions" JSONB[], - - CONSTRAINT "CustomRole_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE INDEX "CustomRole_companyId_idx" ON "CustomRole"("companyId"); - --- CreateIndex -CREATE INDEX "Member_customRoleId_idx" ON "Member"("customRoleId"); diff --git a/prisma/migrations/20240711071304_add_missing_field_for_api_key/migration.sql b/prisma/migrations/20240711071304_add_missing_field_for_api_key/migration.sql deleted file mode 100644 index 7b97dcb98..000000000 --- a/prisma/migrations/20240711071304_add_missing_field_for_api_key/migration.sql +++ /dev/null @@ -1,27 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `userId` on the `ApiKey` table. All the data in the column will be lost. - - Added the required column `companyId` to the `ApiKey` table without a default value. This is not possible if the table is not empty. - - Added the required column `membershipId` to the `ApiKey` table without a default value. This is not possible if the table is not empty. - -*/ --- DropIndex -DROP INDEX "ApiKey_userId_active_idx"; - --- DropIndex -DROP INDEX "ApiKey_userId_idx"; - --- AlterTable -ALTER TABLE "ApiKey" DROP COLUMN "userId", -ADD COLUMN "companyId" TEXT NOT NULL, -ADD COLUMN "membershipId" TEXT NOT NULL; - --- CreateIndex -CREATE INDEX "ApiKey_membershipId_idx" ON "ApiKey"("membershipId"); - --- CreateIndex -CREATE INDEX "ApiKey_membershipId_active_idx" ON "ApiKey"("membershipId", "active"); - --- CreateIndex -CREATE INDEX "ApiKey_companyId_idx" ON "ApiKey"("companyId"); diff --git a/prisma/migrations/20240718054727_add_more_status_in_template_status/migration.sql b/prisma/migrations/20240718054727_add_more_status_in_template_status/migration.sql deleted file mode 100644 index fc9e358a5..000000000 --- a/prisma/migrations/20240718054727_add_more_status_in_template_status/migration.sql +++ /dev/null @@ -1,11 +0,0 @@ --- AlterEnum --- This migration adds more than one value to an enum. --- With PostgreSQL versions 11 and earlier, this is not possible --- in a single migration. This can be worked around by creating --- multiple migrations, each migration adding only one value to --- the enum. - - -ALTER TYPE "TemplateStatus" ADD VALUE 'SENT'; -ALTER TYPE "TemplateStatus" ADD VALUE 'WAITING'; -ALTER TYPE "TemplateStatus" ADD VALUE 'CANCELLED'; diff --git a/prisma/migrations/20240718223224_add_bank_account/migration.sql b/prisma/migrations/20240718223224_add_bank_account/migration.sql deleted file mode 100644 index 5129d6064..000000000 --- a/prisma/migrations/20240718223224_add_bank_account/migration.sql +++ /dev/null @@ -1,30 +0,0 @@ --- CreateEnum -CREATE TYPE "BankAccountTypeEnum" AS ENUM ('CHECKING', 'SAVINGS'); - --- CreateTable -CREATE TABLE "BankAccount" ( - "id" TEXT NOT NULL, - "beneficiaryName" TEXT NOT NULL, - "beneficiaryAddress" TEXT NOT NULL, - "bankName" TEXT NOT NULL, - "bankAddress" TEXT NOT NULL, - "accountNumber" TEXT NOT NULL, - "routingNumber" TEXT NOT NULL, - "accountType" "BankAccountTypeEnum" NOT NULL DEFAULT 'CHECKING', - "swiftCode" TEXT, - "primary" BOOLEAN NOT NULL DEFAULT false, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - "companyId" TEXT NOT NULL, - - CONSTRAINT "BankAccount_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE INDEX "BankAccount_companyId_idx" ON "BankAccount"("companyId"); - --- CreateIndex -CREATE UNIQUE INDEX "BankAccount_companyId_accountNumber_key" ON "BankAccount"("companyId", "accountNumber"); - --- CreateIndex -CREATE UNIQUE INDEX "BankAccount_companyId_primary_key" ON "BankAccount"("companyId", "primary"); diff --git a/prisma/migrations/20240719075859_dynamic_vesting_schedule/migration.sql b/prisma/migrations/20240719075859_dynamic_vesting_schedule/migration.sql deleted file mode 100644 index 1d3d3b367..000000000 --- a/prisma/migrations/20240719075859_dynamic_vesting_schedule/migration.sql +++ /dev/null @@ -1,7 +0,0 @@ --- AlterTable -ALTER TABLE "Option" ADD COLUMN "cliffYears" INTEGER NOT NULL DEFAULT 0, -ADD COLUMN "vestingYears" INTEGER NOT NULL DEFAULT 0; - --- AlterTable -ALTER TABLE "Share" ADD COLUMN "cliffYears" INTEGER NOT NULL DEFAULT 0, -ADD COLUMN "vestingYears" INTEGER NOT NULL DEFAULT 0; diff --git a/prisma/migrations/20240719112312_refactor_api_key/migration.sql b/prisma/migrations/20240719112312_refactor_api_key/migration.sql deleted file mode 100644 index 3ac5b133d..000000000 --- a/prisma/migrations/20240719112312_refactor_api_key/migration.sql +++ /dev/null @@ -1,30 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `hashedToken` on the `ApiKey` table. All the data in the column will be lost. - - You are about to drop the column `keyId` on the `ApiKey` table. All the data in the column will be lost. - - A unique constraint covering the columns `[hashedKey]` on the table `ApiKey` will be added. If there are existing duplicate values, this will fail. - - Added the required column `hashedKey` to the `ApiKey` table without a default value. This is not possible if the table is not empty. - - Added the required column `partialKey` to the `ApiKey` table without a default value. This is not possible if the table is not empty. - -*/ --- DropIndex -DROP INDEX "ApiKey_hashedToken_key"; - --- DropIndex -DROP INDEX "ApiKey_keyId_active_idx"; - --- DropIndex -DROP INDEX "ApiKey_keyId_key"; - --- DropIndex -DROP INDEX "ApiKey_membershipId_active_idx"; - --- AlterTable -ALTER TABLE "ApiKey" DROP COLUMN "hashedToken", -DROP COLUMN "keyId", -ADD COLUMN "hashedKey" TEXT NOT NULL, -ADD COLUMN "partialKey" TEXT NOT NULL; - --- CreateIndex -CREATE UNIQUE INDEX "ApiKey_hashedKey_key" ON "ApiKey"("hashedKey"); diff --git a/prisma/migrations/20240721090639_default_share_legends/migration.sql b/prisma/migrations/20240721090639_default_share_legends/migration.sql deleted file mode 100644 index 4139b2dd5..000000000 --- a/prisma/migrations/20240721090639_default_share_legends/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "Share" ALTER COLUMN "companyLegends" SET DEFAULT ARRAY[]::"ShareLegendsEnum"[]; diff --git a/prisma/migrations/20240723005834_separate_vesting_schedule/migration.sql b/prisma/migrations/20240723005834_separate_vesting_schedule/migration.sql deleted file mode 100644 index 253bf94c1..000000000 --- a/prisma/migrations/20240723005834_separate_vesting_schedule/migration.sql +++ /dev/null @@ -1,15 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `vestingSchedule` on the `Option` table. All the data in the column will be lost. - - You are about to drop the column `vestingSchedule` on the `Share` table. All the data in the column will be lost. - -*/ --- AlterTable -ALTER TABLE "Option" DROP COLUMN "vestingSchedule"; - --- AlterTable -ALTER TABLE "Share" DROP COLUMN "vestingSchedule"; - --- DropEnum -DROP TYPE "VestingScheduleEnum"; diff --git a/prisma/migrations/20240731021954_add_access_token/migration.sql b/prisma/migrations/20240731021954_add_access_token/migration.sql deleted file mode 100644 index 342ab7c45..000000000 --- a/prisma/migrations/20240731021954_add_access_token/migration.sql +++ /dev/null @@ -1,27 +0,0 @@ -/* - Warnings: - - - You are about to drop the `ApiKey` table. If the table is not empty, all the data it contains will be lost. - -*/ --- DropTable -DROP TABLE "ApiKey"; - --- CreateTable -CREATE TABLE "AccessToken" ( - "id" TEXT NOT NULL, - "name" TEXT, - "active" BOOLEAN NOT NULL DEFAULT true, - "partialToken" TEXT NOT NULL, - "hashedToken" TEXT NOT NULL, - "expiresAt" TIMESTAMP(3), - "lastUsed" TIMESTAMP(3), - "userId" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "AccessToken_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE INDEX "AccessToken_userId_idx" ON "AccessToken"("userId"); diff --git a/prisma/migrations/20240807040118_add_client_id_and_secret/migration.sql b/prisma/migrations/20240807040118_add_client_id_and_secret/migration.sql deleted file mode 100644 index 075f695d6..000000000 --- a/prisma/migrations/20240807040118_add_client_id_and_secret/migration.sql +++ /dev/null @@ -1,19 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `name` on the `AccessToken` table. All the data in the column will be lost. - - Added the required column `clientId` to the `AccessToken` table without a default value. This is not possible if the table is not empty. - - Added the required column `clientSecret` to the `AccessToken` table without a default value. This is not possible if the table is not empty. - -*/ --- CreateEnum -CREATE TYPE "AccessTokenType" AS ENUM ('Signature token', 'Data room token', 'API access token', 'Investor update token'); - --- AlterTable -ALTER TABLE "AccessToken" DROP COLUMN "name", -ADD COLUMN "clientId" TEXT NOT NULL, -ADD COLUMN "clientSecret" TEXT NOT NULL, -ADD COLUMN "typeEnum" "AccessTokenType" NOT NULL DEFAULT 'API access token'; - --- CreateIndex -CREATE INDEX "AccessToken_typeEnum_clientId_idx" ON "AccessToken"("typeEnum", "clientId"); diff --git a/prisma/migrations/20240807042922_remove_partial_and_hashed_token/migration.sql b/prisma/migrations/20240807042922_remove_partial_and_hashed_token/migration.sql deleted file mode 100644 index 1c2392b83..000000000 --- a/prisma/migrations/20240807042922_remove_partial_and_hashed_token/migration.sql +++ /dev/null @@ -1,10 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `hashedToken` on the `AccessToken` table. All the data in the column will be lost. - - You are about to drop the column `partialToken` on the `AccessToken` table. All the data in the column will be lost. - -*/ --- AlterTable -ALTER TABLE "AccessToken" DROP COLUMN "hashedToken", -DROP COLUMN "partialToken"; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml deleted file mode 100644 index fbffa92c2..000000000 --- a/prisma/migrations/migration_lock.toml +++ /dev/null @@ -1,3 +0,0 @@ -# Please do not edit this file manually -# It should be added in your version-control system (i.e. Git) -provider = "postgresql" \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma deleted file mode 100644 index 008d0c68f..000000000 --- a/prisma/schema.prisma +++ /dev/null @@ -1,1146 +0,0 @@ -generator client { - provider = "prisma-client-js" - binaryTargets = ["native", "rhel-openssl-1.0.x"] -} - -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") - relationMode = "prisma" -} - -generator json { - provider = "prisma-json-types-generator" -} - -generator enums { - provider = "node prisma/enum-generator.cjs" -} - -// Necessary for Next auth -model Account { - id String @id @default(cuid()) - userId String - type String - provider String - providerAccountId String - refresh_token String? - access_token String? - expires_at Int? - token_type String? - scope String? - id_token String? - session_state String? - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - - @@unique([provider, providerAccountId]) - @@index([userId]) -} - -model Session { - id String @id @default(cuid()) - sessionToken String @unique - userId String - expires DateTime - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - - @@index([userId]) -} - -model User { - id String @id @default(cuid()) - name String? - email String? @unique - password String? - emailVerified DateTime? - image String? - - accounts Account[] - sessions Session[] - memberships Member[] - passkeys Passkey[] - verificationToken VerificationToken[] - - lastSignedIn DateTime @default(now()) - identityProvider String? - - accessTokens AccessToken[] -} - -enum CredentialDeviceTypeEnum { - SINGLE_DEVICE - MULTI_DEVICE -} - -model Passkey { - id String @id @default(cuid()) - name String - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) - lastUsedAt DateTime? - credentialId Bytes - credentialPublicKey Bytes - counter BigInt - credentialDeviceType CredentialDeviceTypeEnum - credentialBackedUp Boolean - transports String[] - - userId String - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - - @@index([userId]) -} - -model PasskeyVerificationToken { - id String @id @unique @default(cuid()) - token String @unique - expiresAt DateTime - createdAt DateTime @default(now()) -} - -model VerificationToken { - id Int @id @default(autoincrement()) - secondaryId String @unique @default(cuid()) - identifier String - token String @unique - expires DateTime - createdAt DateTime @default(now()) - - userId String? - user User? @relation(fields: [userId], references: [id], onDelete: Cascade) - - @@unique([identifier, token]) - @@index([userId]) -} - -model PasswordResetToken { - id String @id @default(cuid()) - email String - token String @unique - expires DateTime - - @@unique([email, token]) -} - -model Company { - id String @id @default(cuid()) - name String - logo String? - publicId String - website String? - incorporationType String - incorporationDate DateTime - incorporationCountry String - incorporationState String - - streetAddress String - city String - state String - zipcode String - country String - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - updates Update[] - users Member[] - audits Audit[] - shareClasses ShareClass[] - equityPlans EquityPlan[] - documents Document[] - templates Template[] - stakeholders Stakeholder[] - investments Investment[] - shares Share[] - options Option[] - safes Safe[] - convertibleNotes ConvertibleNote[] - dataRooms DataRoom[] - eSignAudits EsignAudit[] - billingCustomers BillingCustomer[] - customRoles CustomRole[] - - BankAccount BankAccount[] - - @@unique([publicId]) -} - -enum BankAccountTypeEnum { - CHECKING - SAVINGS -} - -model BankAccount { - id String @id @default(cuid()) - beneficiaryName String - beneficiaryAddress String - bankName String - bankAddress String - accountNumber String // iban or account number - routingNumber String // ABA or routing number - accountType BankAccountTypeEnum @default(CHECKING) - - // International bank information - swiftCode String? // BIC or SWIFT code - - primary Boolean @default(false) - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - - @@unique([companyId, accountNumber]) - @@unique([companyId, primary], name: "unique_primary_account") - @@index([companyId]) -} - -enum MemberStatusEnum { - ACTIVE - INACTIVE - PENDING -} - -enum Roles { - ADMIN - CUSTOM -} - -model Member { - id String @id @default(cuid()) - title String? - status MemberStatusEnum @default(PENDING) - isOnboarded Boolean @default(false) - role Roles? @default(ADMIN) - workEmail String? - lastAccessed DateTime @default(now()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - userId String - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - - customRoleId String? - customRole CustomRole? @relation(fields: [customRoleId], references: [id]) - - documentReceived EsignRecipient[] - documents Document[] - templates Template[] - updates Update[] - dataRooms DataRoomRecipient[] - UpdateRecipient UpdateRecipient[] - - @@unique([companyId, userId]) - @@index([companyId]) - @@index([status]) - @@index([userId]) - @@index([customRoleId]) -} - -model CustomRole { - id String @id @default(cuid()) - name String - - companyId String - company Company @relation(fields: [companyId], references: [id]) - - permissions Json[] - member Member[] - - @@index([companyId]) -} - -enum StakeholderTypeEnum { - INDIVIDUAL - INSTITUTION -} - -enum StakeholderRelationshipEnum { - ADVISOR - BOARD_MEMBER - CONSULTANT - EMPLOYEE - EX_ADVISOR - EX_CONSULTANT - EX_EMPLOYEE - EXECUTIVE - FOUNDER - INVESTOR - NON_US_EMPLOYEE - OFFICER - OTHER -} - -model Stakeholder { - id String @id @default(cuid()) - name String - email String @unique - institutionName String? - stakeholderType StakeholderTypeEnum @default(INDIVIDUAL) - currentRelationship StakeholderRelationshipEnum @default(EMPLOYEE) - taxId String? - - streetAddress String? - city String? - state String? - zipcode String? - country String @default("US") - - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - - investments Investment[] - shares Share[] - options Option[] - safes Safe[] - convertibleNotes ConvertibleNote[] - updates UpdateRecipient[] - dataRooms DataRoomRecipient[] - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@index([companyId]) -} - -model Audit { - id String @id @default(cuid()) - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - summary String? - action String - occurredAt DateTime @default(now()) - actor Json - target Json[] - context Json - - @@index([companyId]) -} - -enum ShareTypeEnum { - COMMON - PREFERRED -} - -enum SharePrefixEnum { - CS // Common Shares - PS // Preferred Shares -} - -enum ConversionRightsEnum { - CONVERTS_TO_FUTURE_ROUND - CONVERTS_TO_SHARE_CLASS_ID -} - -// Based on OCF format -// https://open-cap-table-coalition.github.io/Open-Cap-Format-OCF/schema_markdown/schema/objects/StockClass/ -model ShareClass { - id String @id @default(cuid()) - idx Int // auto-generated, auto-incremented based on company - name String - classType ShareTypeEnum @default(COMMON) - prefix SharePrefixEnum @default(CS) - initialSharesAuthorized BigInt - boardApprovalDate DateTime - stockholderApprovalDate DateTime - votesPerShare Int - parValue Float - pricePerShare Float - seniority Int - - // Conversion Rights - conversionRights ConversionRightsEnum @default(CONVERTS_TO_FUTURE_ROUND) - convertsToShareClassId String? - - liquidationPreferenceMultiple Float - participationCapMultiple Float - - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - equityPlans EquityPlan[] - investments Investment[] - shares Share[] - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([companyId, idx]) - @@index([companyId]) -} - -enum CancellationBehaviorEnum { - RETIRE - RETURN_TO_POOL - HOLD_AS_CAPITAL_STOCK - DEFINED_PER_PLAN_SECURITY -} - -model EquityPlan { - id String @id @default(cuid()) - name String - boardApprovalDate DateTime - planEffectiveDate DateTime? - initialSharesReserved BigInt - defaultCancellatonBehavior CancellationBehaviorEnum - comments String? - - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - - shareClassId String - shareClass ShareClass @relation(fields: [shareClassId], references: [id], onDelete: Cascade) - - options Option[] - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@index([shareClassId]) - @@index([companyId]) -} - -model Bucket { - id String @id @default(cuid()) - name String - key String - mimeType String - size Int - tags String[] - - documents Document[] - templates Template[] - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt -} - -model Document { - id String @id @default(cuid()) - publicId String - name String - - bucketId String - bucket Bucket @relation(fields: [bucketId], references: [id], onDelete: Cascade) - - uploaderId String? - uploader Member? @relation(fields: [uploaderId], references: [id], onDelete: Cascade) - - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - - shareId String? - share Share? @relation(fields: [shareId], references: [id], onDelete: SetNull) - - optionId String? - option Option? @relation(fields: [optionId], references: [id], onDelete: SetNull) - - safeId String? - safe Safe? @relation(fields: [safeId], references: [id], onDelete: SetNull) - - convertibleNoteId String? - convertibleNote ConvertibleNote? @relation(fields: [convertibleNoteId], references: [id], onDelete: SetNull) - - documentShares DocumentShare[] - dataRooms DataRoomDocument[] - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([publicId]) - @@index([bucketId]) - @@index([uploaderId]) - @@index([companyId]) - @@index([shareId]) - @@index([optionId]) - @@index([safeId]) - @@index([convertibleNoteId]) -} - -model DataRoom { - id String @id @default(cuid()) - name String - publicId String - public Boolean @default(false) - documents DataRoomDocument[] - recipients DataRoomRecipient[] - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([publicId]) - @@unique([companyId, name]) - @@index([publicId]) - @@index([companyId]) -} - -model DataRoomDocument { - id String @id @default(cuid()) - dataRoomId String - documentId String - dataRoom DataRoom @relation(fields: [dataRoomId], references: [id], onDelete: Cascade) - document Document @relation(fields: [documentId], references: [id], onDelete: Cascade) - - createdAt DateTime @default(now()) - - @@unique([dataRoomId, documentId]) - @@index([dataRoomId]) - @@index([documentId]) -} - -model DataRoomRecipient { - id String @id @default(cuid()) - name String? - email String - dataRoomId String - dataRoom DataRoom @relation(fields: [dataRoomId], references: [id], onDelete: Cascade) - - memberId String? - member Member? @relation(fields: [memberId], references: [id], onDelete: SetNull) - - stakeholderId String? - stakeholder Stakeholder? @relation(fields: [stakeholderId], references: [id], onDelete: SetNull) - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([dataRoomId, email]) - @@index([id, dataRoomId]) - @@index([memberId]) - @@index([dataRoomId]) - @@index([stakeholderId]) -} - -model UpdateRecipient { - id String @id @default(cuid()) - name String? - email String - updateId String - update Update @relation(fields: [updateId], references: [id], onDelete: Cascade) - - memberId String? - member Member? @relation(fields: [memberId], references: [id], onDelete: SetNull) - - stakeholderId String? - stakeholder Stakeholder? @relation(fields: [stakeholderId], references: [id], onDelete: SetNull) - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([updateId, email]) - @@index([id, updateId]) - @@index([memberId]) - @@index([updateId]) - @@index([stakeholderId]) -} - -model DocumentShare { - id String @id @default(cuid()) - link String - publicId String - - linkExpiresAt DateTime - recipients String[] @default([]) - - emailProtected Boolean @default(false) - - documentId String - document Document @relation(fields: [documentId], references: [id], onDelete: Cascade) - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@index([documentId]) -} - -enum FieldTypes { - TEXT - RADIO - EMAIL - DATE - DATETIME - TEXTAREA - CHECKBOX - SIGNATURE - SELECT -} - -model TemplateField { - id String @id @default(cuid()) - name String - type FieldTypes @default(TEXT) - defaultValue String @default("") - readOnly Boolean @default(false) - required Boolean @default(false) - prefilledValue String? - top Int - left Int - width Int - height Int - recipientId String - recipient EsignRecipient @relation(fields: [recipientId], references: [id], onDelete: Cascade) - template Template @relation(fields: [templateId], references: [id], onDelete: Cascade) - templateId String - viewportHeight Int - viewportWidth Int - page Int - - /// [TemplateFieldMeta] - meta Json @default("{}") - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@index([templateId]) - @@index([recipientId]) -} - -enum TemplateStatus { - DRAFT - COMPLETE - SENT - WAITING - CANCELLED -} - -model Template { - id String @id @default(cuid()) - publicId String - name String - status TemplateStatus @default(DRAFT) - orderedDelivery Boolean @default(false) - message String? - - bucketId String - bucket Bucket @relation(fields: [bucketId], references: [id], onDelete: Cascade) - - uploaderId String - uploader Member @relation(fields: [uploaderId], references: [id], onDelete: Cascade) - - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - fields TemplateField[] - eSignRecipient EsignRecipient[] - - completedOn DateTime? - eSignAudits EsignAudit[] - - @@index([bucketId]) - @@index([uploaderId]) - @@index([companyId]) -} - -enum EsignRecipientStatus { - SENT - SIGNED - PENDING -} - -model EsignRecipient { - id String @id @default(cuid()) - email String - name String? - - templateId String - template Template @relation(fields: [templateId], references: [id], onDelete: Cascade) - - status EsignRecipientStatus @default(PENDING) - - memberId String? - member Member? @relation(fields: [memberId], references: [id], onDelete: SetNull) - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - templateFields TemplateField[] - eSignAudits EsignAudit[] - - @@index([memberId]) - @@index([templateId]) -} - -enum SecuritiesStatusEnum { - ACTIVE - DRAFT - SIGNED - PENDING -} - -enum ShareLegendsEnum { - US_SECURITIES_ACT // US Securities Act of 1933 - SALE_AND_ROFR // Sale and Right of first refusal - TRANSFER_RESTRICTIONS // Bylaw transfer restrictions -} - -model Share { - id String @id @default(cuid()) - status SecuritiesStatusEnum @default(DRAFT) - - certificateId String - quantity Int // Number of shares - pricePerShare Float? - capitalContribution Float? // Total amount of money contributed/invested - ipContribution Float? // Value of the intellectual property contributed - debtCancelled Float? // Amount of debt cancelled - otherContributions Float? // Other contributions - - cliffYears Int @default(0) // 0 means immediate vesting, 1 means vesting starts after 1 year - vestingYears Int @default(0) // 0 means immediate vesting, 1 means vesting over 1 year - - companyLegends ShareLegendsEnum[] @default([]) - - issueDate DateTime - rule144Date DateTime? - vestingStartDate DateTime? - boardApprovalDate DateTime - - stakeholderId String - stakeholder Stakeholder @relation(fields: [stakeholderId], references: [id], onDelete: Cascade) - - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - - shareClassId String - shareClass ShareClass @relation(fields: [shareClassId], references: [id], onDelete: Cascade) - - documents Document[] - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([companyId, certificateId]) - @@index([companyId]) - @@index([shareClassId]) - @@index([stakeholderId]) -} - -enum OptionTypeEnum { - ISO // Incentive Stock Options - NSO // Non-satutory Stock Options - RSU // Restricted Stock Units -} - -enum OptionStatusEnum { - DRAFT - ACTIVE - EXERCISED - EXPIRED - CANCELLED -} - -model Option { - id String @id @default(cuid()) - grantId String - quantity Int - exercisePrice Float - - type OptionTypeEnum - status OptionStatusEnum @default(DRAFT) - cliffYears Int @default(0) // 0 means immediate vesting, 1 means vesting starts after 1 year - vestingYears Int @default(0) // 0 means immediate vesting, 1 means vesting over 1 year - - issueDate DateTime - expirationDate DateTime - vestingStartDate DateTime - boardApprovalDate DateTime - rule144Date DateTime - - documents Document[] - - stakeholderId String - stakeholder Stakeholder @relation(fields: [stakeholderId], references: [id], onDelete: Cascade) - - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - - equityPlanId String - equityPlan EquityPlan @relation(fields: [equityPlanId], references: [id], onDelete: Cascade) - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([companyId, grantId]) - @@index([companyId]) - @@index([equityPlanId]) - @@index([stakeholderId]) -} - -model Investment { - id String @id @default(cuid()) - amount Float // Amount of money invested - shares BigInt // Number of shares issued to the investor at the time of investment - date DateTime - comments String? - - shareClassId String - shareClass ShareClass @relation(fields: [shareClassId], references: [id], onDelete: Cascade) - - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - - // Investors => StakeholderRelationshipEnum["INVESTOR"] - stakeholderId String - stakeholder Stakeholder @relation(fields: [stakeholderId], references: [id], onDelete: Cascade) - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@index([companyId]) - @@index([stakeholderId]) - @@index([shareClassId]) -} - -enum SafeTypeEnum { - PRE_MONEY - POST_MONEY -} - -enum SafeStatusEnum { - DRAFT - ACTIVE - PENDING - EXPIRED - CANCELLED -} - -// YC Standard Safe -enum SafeTemplateEnum { - POST_MONEY_CAP @map("Valuation Cap, no Discount") - POST_MONEY_DISCOUNT @map("Discount, no Valuation Cap") - POST_MONEY_MFN @map("MFN, no Valuation Cap, no Discount") - - POST_MONEY_CAP_WITH_PRO_RATA @map("Valuation Cap, no Discount, include Pro Rata Rights") - POST_MONEY_DISCOUNT_WITH_PRO_RATA @map("Discount, no Valuation Cap, include Pro Rata Rights") - POST_MONEY_MFN_WITH_PRO_RATA @map("MFN, no Valuation Cap, no Discount, include Pro Rata Rights") - - CUSTOM @map("Custom") -} - -model Safe { - id String @id @default(cuid()) - publicId String // eg. SAFE-01 - type SafeTypeEnum @default(POST_MONEY) - status SafeStatusEnum @default(DRAFT) - capital Float // Amount of money invested - safeTemplate SafeTemplateEnum? - safeId String? - - valuationCap Float? - discountRate Float? - mfn Boolean @default(false) // Most Favored Nation - proRata Boolean @default(false) // Pro Rata Rights - additionalTerms String? - - documents Document[] - - stakeholderId String - stakeholder Stakeholder @relation(fields: [stakeholderId], references: [id], onDelete: Cascade) - - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - - issueDate DateTime - boardApprovalDate DateTime - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([publicId, companyId]) - @@index([companyId]) - @@index([stakeholderId]) -} - -enum ConvertibleStatusEnum { - DRAFT - ACTIVE - PENDING - EXPIRED - CANCELLED -} - -enum ConvertibleTypeEnum { - CCD // Compulsory Convertible Debenture - OCD // Optionally Convertible Debenture - NOTE // Simple Convertible note -} - -enum ConvertibleInterestMethodEnum { - SIMPLE - COMPOUND -} - -enum ConvertibleInterestAccrualEnum { - DAILY - MONTHLY - SEMI_ANNUALLY - ANNUALLY - YEARLY - CONTINUOUSLY -} - -enum ConvertibleInterestPaymentScheduleEnum { - DEFERRED - PAY_AT_MATURITY -} - -model ConvertibleNote { - id String @id @default(cuid()) - publicId String // eg. CN-01 - status ConvertibleStatusEnum @default(DRAFT) - type ConvertibleTypeEnum @default(NOTE) - capital Float // Amount of money invested - - conversionCap Float? - discountRate Float? - mfn Boolean? // Most Favored Nation - additionalTerms String? - - interestRate Float? - interestMethod ConvertibleInterestMethodEnum? - interestAccrual ConvertibleInterestAccrualEnum? - interestPaymentSchedule ConvertibleInterestPaymentScheduleEnum? - - documents Document[] - - stakeholderId String - stakeholder Stakeholder @relation(fields: [stakeholderId], references: [id], onDelete: Cascade) - - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - - issueDate DateTime - boardApprovalDate DateTime - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([publicId, companyId]) - @@index([companyId]) - @@index([stakeholderId]) -} - -enum UpdateStatusEnum { - DRAFT - PUBLIC - PRIVATE -} - -model Update { - id String @id @default(cuid()) - publicId String - title String - content Json - html String - public Boolean @default(false) - status UpdateStatusEnum @default(DRAFT) - - authorId String - companyId String - - recipients UpdateRecipient[] - author Member @relation(fields: [authorId], references: [id], onDelete: Cascade) - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([publicId]) - @@index([publicId]) - @@index([authorId]) - @@index([companyId]) -} - -model EsignAudit { - id String @id @default(cuid()) - - companyId String - company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) - templateId String - template Template @relation(fields: [templateId], references: [id], onDelete: Cascade) - recipientId String? - recipient EsignRecipient? @relation(fields: [recipientId], references: [id], onDelete: SetNull) - - action String - ip String - userAgent String - location String - summary String - - occurredAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@index([companyId]) - @@index([templateId]) - @@index([recipientId]) -} - -enum PricingType { - one_time - recurring -} - -enum PricingPlanInterval { - day - week - month - year -} - -enum SubscriptionStatus { - trialing - active - canceled - incomplete - incomplete_expired - past_due - unpaid - paused -} - -model BillingProduct { - id String @id - // Product ID from Stripe, e.g. prod_1234. - - active Boolean - // Whether the product is currently available for purchase. - - name String - // The product's name, meant to be displayable to the customer. Whenever this product is sold via a subscription, name will show up on associated invoice line item descriptions. - - description String? - // The product's description. - - metadata Json? - // additional data. - - prices BillingPrice[] -} - -model BillingPrice { - id String @id - // Price ID from Stripe, e.g. price_1234. - - productId String - - active Boolean - // Whether the price can be used for new purchases. - - description String? - // A brief description of the price. - - unitAmount BigInt? - // The unit amount as a positive integer in the smallest currency unit (e.g., 100 cents for US$1.00 or 100 for ¥100, a zero-decimal currency). - - currency String @db.Char(3) - // Three-letter ISO currency code, in lowercase. - - type PricingType - - interval PricingPlanInterval? - - intervalCount Int? - // The number of intervals (specified in the `interval` attribute) between subscription billings. For example, `interval=month` and `interval_count=3` bills every 3 months. - - trialPeriodDays Int? - // Default number of trial days when subscribing a customer to this price using [`trial_from_plan=true`](https://stripe.com/docs/api#create_subscription-trial_from_plan). - - metadata Json? - // additional data. - - product BillingProduct @relation(fields: [productId], references: [id]) - Subscription BillingSubscription[] - - @@index([productId]) -} - -model BillingSubscription { - id String @id - // Subscription ID from Stripe, e.g. sub_1234. - - priceId String - // ID of the price that created this subscription. - - quantity Int - // Quantity multiplied by the unit amount of the price creates the amount of the subscription. Can be used to charge multiple seats. - - status SubscriptionStatus - - cancelAtPeriodEnd Boolean - // If true the subscription has been canceled by the user and will be deleted at the end of the billing period. - - created DateTime @default(now()) - // Time at which the subscription was created. - - currentPeriodStart DateTime @default(now()) - // Start of the current period that the subscription has been invoiced for. - - currentPeriodEnd DateTime @default(now()) - // End of the current period that the subscription has been invoiced for. At the end of this period, a new invoice will be created. - - endedAt DateTime? - // If the subscription has ended, the timestamp of the date the subscription ended. - - cancelAt DateTime? - /// A date in the future at which the subscription will automatically get canceled. - - canceledAt DateTime? - // If the subscription has been canceled, the date of that cancellation. If the subscription was canceled with `cancel_at_period_end`, `canceled_at` will still reflect the date of the initial cancellation request, not the end of the subscription period when the subscription is automatically moved to a canceled state. - - trialStart DateTime? - // If the subscription has a trial, the beginning of that trial. - - trialEnd DateTime? - // If the subscription has a trial, the end of that trial. - - metadata Json? - // additional data. - - price BillingPrice @relation(fields: [priceId], references: [id]) - - customer BillingCustomer @relation(fields: [customerId], references: [id]) - customerId String - - @@index([priceId]) - @@index([customerId]) -} - -model BillingCustomer { - id String @id - companyId String? - - company Company? @relation(fields: [companyId], references: [id]) - subscriptions BillingSubscription[] - - @@index([companyId]) -} - -enum AccessTokenType { - sig @map("Signature token") - doc @map("Data room token") - api @map("API access token") - upd @map("Investor update token") -} - -model AccessToken { - id String @id @default(cuid()) - active Boolean @default(true) - clientId String - clientSecret String // Hashed with scrypt - typeEnum AccessTokenType @default(api) - - user User @relation(fields: [userId], references: [id]) - userId String - - expiresAt DateTime? - lastUsed DateTime? - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@index([userId]) - @@index([typeEnum, clientId]) -} diff --git a/prisma/seeds/index.ts b/prisma/seeds/index.ts deleted file mode 100644 index b7688b9df..000000000 --- a/prisma/seeds/index.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { db } from "@/server/db"; -import colors from "colors"; -import inquirer from "inquirer"; -colors.enable(); - -import type { QuestionCollection } from "inquirer"; -import seedCompanies from "./companies"; -import seedTeam from "./team"; - -if (process.env.NODE_ENV === "production") { - console.log("❌ You cannot run this command on production".red); - process.exit(0); -} - -const seed = async () => { - const inquiry = await inquirer.prompt({ - type: "confirm", - name: "answer", - message: "Are you sure you want to NUKE 🚀 and re-seed the database?", - } as QuestionCollection); - - // const answer = true; - const answer = inquiry.answer as boolean; - - if (answer) { - await nuke(); - - console.log("Seeding database".underline.cyan); - return db.$transaction(async () => { - await seedCompanies(); - await seedTeam(); - }); - } else { - throw new Error("Seeding aborted"); - } -}; - -const nuke = async () => { - console.log("🚀 Nuking database records".yellow); - return db.$transaction(async (db) => { - await db.user.deleteMany(); - await db.member.deleteMany(); - await db.company.deleteMany(); - await db.shareClass.deleteMany(); - await db.equityPlan.deleteMany(); - await db.document.deleteMany(); - await db.bucket.deleteMany(); - await db.audit.deleteMany(); - await db.session.deleteMany(); - }); -}; - -await seed() - .then(async () => { - console.log("✅ Database seeding completed".green); - console.log( - `💌 We have created four admin accounts for you. Please login with one of these emails:\n` - .cyan, - `ceo@example.com\n`.underline.yellow, - `cto@example.com\n`.underline.yellow, - `cfo@example.com\n`.underline.yellow, - `lawyer@example.com\n`.underline.yellow, - ); - await db.$disconnect(); - }) - .catch(async (error: Error) => { - console.log(`❌ ${error.message}`.red); - await db.$disconnect(); - }); diff --git a/public/pdf.worker.min.js b/public/pdf.worker.min.js deleted file mode 100644 index 122422609..000000000 --- a/public/pdf.worker.min.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @licstart The following is the entire license notice for the - * JavaScript code in this page - * - * Copyright 2023 Mozilla Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @licend The above is the entire license notice for the - * JavaScript code in this page - */ -!function webpackUniversalModuleDefinition(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=e.pdfjsWorker=t():"function"==typeof define&&define.amd?define("pdfjs-dist/build/pdf.worker",[],(()=>e.pdfjsWorker=t())):"object"==typeof exports?exports["pdfjs-dist/build/pdf.worker"]=e.pdfjsWorker=t():e["pdfjs-dist/build/pdf.worker"]=e.pdfjsWorker=t()}(globalThis,(()=>(()=>{"use strict";var e=[,(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.WorkerTask=t.WorkerMessageHandler=void 0;var r=a(2),n=a(3),i=a(4),s=a(6),o=a(10),c=a(68),l=a(73),h=a(104),u=a(105),d=a(72);class WorkerTask{constructor(e){this.name=e;this.terminated=!1;this._capability=new r.PromiseCapability}get finished(){return this._capability.promise}finish(){this._capability.resolve()}terminate(){this.terminated=!0}ensureNotTerminated(){if(this.terminated)throw new Error("Worker task was terminated")}}t.WorkerTask=WorkerTask;class WorkerMessageHandler{static setup(e,t){let a=!1;e.on("test",(function(t){if(!a){a=!0;e.send("test",t instanceof Uint8Array)}}));e.on("configure",(function(e){(0,r.setVerbosityLevel)(e.verbosity)}));e.on("GetDocRequest",(function(e){return WorkerMessageHandler.createDocumentHandler(e,t)}))}static createDocumentHandler(e,t){let a,f=!1,g=null;const p=new Set,m=(0,r.getVerbosityLevel)(),{docId:b,apiVersion:y}=e,w="3.11.174";if(y!==w)throw new Error(`The API version "${y}" does not match the Worker version "${w}".`);const S=[];for(const e in[])S.push(e);if(S.length)throw new Error("The `Array.prototype` contains unexpected enumerable properties: "+S.join(", ")+"; thus breaking e.g. `for...in` iteration of `Array`s.");const x=b+"_worker";let C=new h.MessageHandler(x,b,t);function ensureNotTerminated(){if(f)throw new Error("Worker was terminated")}function startWorkerTask(e){p.add(e)}function finishWorkerTask(e){e.finish();p.delete(e)}async function loadDocument(e){await a.ensureDoc("checkHeader");await a.ensureDoc("parseStartXRef");await a.ensureDoc("parse",[e]);await a.ensureDoc("checkFirstPage",[e]);await a.ensureDoc("checkLastPage",[e]);const t=await a.ensureDoc("isPureXfa");if(t){const e=new WorkerTask("loadXfaFonts");startWorkerTask(e);await Promise.all([a.loadXfaFonts(C,e).catch((e=>{})).then((()=>finishWorkerTask(e))),a.loadXfaImages()])}const[r,n]=await Promise.all([a.ensureDoc("numPages"),a.ensureDoc("fingerprints")]);return{numPages:r,fingerprints:n,htmlForXfa:t?await a.ensureDoc("htmlForXfa"):null}}function getPdfManager({data:e,password:t,disableAutoFetch:a,rangeChunkSize:i,length:o,docBaseUrl:c,enableXfa:l,evaluatorOptions:h}){const d={source:null,disableAutoFetch:a,docBaseUrl:c,docId:b,enableXfa:l,evaluatorOptions:h,handler:C,length:o,password:t,rangeChunkSize:i},f=new r.PromiseCapability;let p;if(e){try{d.source=e;p=new s.LocalPdfManager(d);f.resolve(p)}catch(e){f.reject(e)}return f.promise}let m,y=[];try{m=new u.PDFWorkerStream(C)}catch(e){f.reject(e);return f.promise}const w=m.getFullReader();w.headersReady.then((function(){if(w.isRangeSupported){d.source=m;d.length=w.contentLength;d.disableAutoFetch||=w.isStreamingSupported;p=new s.NetworkPdfManager(d);for(const e of y)p.sendProgressiveData(e);y=[];f.resolve(p);g=null}})).catch((function(e){f.reject(e);g=null}));let S=0;new Promise((function(e,t){const readChunk=function({value:e,done:a}){try{ensureNotTerminated();if(a){p||function(){const e=(0,n.arrayBuffersToBytes)(y);o&&e.length!==o&&(0,r.warn)("reported HTTP length is different from actual");try{d.source=e;p=new s.LocalPdfManager(d);f.resolve(p)}catch(e){f.reject(e)}y=[]}();g=null;return}S+=e.byteLength;w.isStreamingSupported||C.send("DocProgress",{loaded:S,total:Math.max(S,w.contentLength||0)});p?p.sendProgressiveData(e):y.push(e);w.read().then(readChunk,t)}catch(e){t(e)}};w.read().then(readChunk,t)})).catch((function(e){f.reject(e);g=null}));g=function(e){m.cancelAllRequests(e)};return f.promise}C.on("GetPage",(function(e){return a.getPage(e.pageIndex).then((function(e){return Promise.all([a.ensure(e,"rotate"),a.ensure(e,"ref"),a.ensure(e,"userUnit"),a.ensure(e,"view")]).then((function([e,t,a,r]){return{rotate:e,ref:t,userUnit:a,view:r}}))}))}));C.on("GetPageIndex",(function(e){const t=i.Ref.get(e.num,e.gen);return a.ensureCatalog("getPageIndex",[t])}));C.on("GetDestinations",(function(e){return a.ensureCatalog("destinations")}));C.on("GetDestination",(function(e){return a.ensureCatalog("getDestination",[e.id])}));C.on("GetPageLabels",(function(e){return a.ensureCatalog("pageLabels")}));C.on("GetPageLayout",(function(e){return a.ensureCatalog("pageLayout")}));C.on("GetPageMode",(function(e){return a.ensureCatalog("pageMode")}));C.on("GetViewerPreferences",(function(e){return a.ensureCatalog("viewerPreferences")}));C.on("GetOpenAction",(function(e){return a.ensureCatalog("openAction")}));C.on("GetAttachments",(function(e){return a.ensureCatalog("attachments")}));C.on("GetDocJSActions",(function(e){return a.ensureCatalog("jsActions")}));C.on("GetPageJSActions",(function({pageIndex:e}){return a.getPage(e).then((function(e){return a.ensure(e,"jsActions")}))}));C.on("GetOutline",(function(e){return a.ensureCatalog("documentOutline")}));C.on("GetOptionalContentConfig",(function(e){return a.ensureCatalog("optionalContentConfig")}));C.on("GetPermissions",(function(e){return a.ensureCatalog("permissions")}));C.on("GetMetadata",(function(e){return Promise.all([a.ensureDoc("documentInfo"),a.ensureCatalog("metadata")])}));C.on("GetMarkInfo",(function(e){return a.ensureCatalog("markInfo")}));C.on("GetData",(function(e){return a.requestLoadedStream().then((function(e){return e.bytes}))}));C.on("GetAnnotations",(function({pageIndex:e,intent:t}){return a.getPage(e).then((function(a){const r=new WorkerTask(`GetAnnotations: page ${e}`);startWorkerTask(r);return a.getAnnotationsData(C,r,t).then((e=>{finishWorkerTask(r);return e}),(e=>{finishWorkerTask(r);throw e}))}))}));C.on("GetFieldObjects",(function(e){return a.ensureDoc("fieldObjects")}));C.on("HasJSActions",(function(e){return a.ensureDoc("hasJSActions")}));C.on("GetCalculationOrderIds",(function(e){return a.ensureDoc("calculationOrderIds")}));C.on("SaveDocument",(async function({isPureXfa:e,numPages:t,annotationStorage:s,filename:c}){const h=[a.requestLoadedStream(),a.ensureCatalog("acroForm"),a.ensureCatalog("acroFormRef"),a.ensureDoc("startXRef"),a.ensureDoc("xref"),a.ensureDoc("linearization"),a.ensureCatalog("structTreeRoot")],u=[],f=e?null:(0,n.getNewAnnotationsMap)(s),[g,p,m,b,y,w,S]=await Promise.all(h),x=y.trailer.getRaw("Root")||null;let k;if(f){S?await S.canUpdateStructTree({pdfManager:a,newAnnotationsByPage:f})&&(k=S):await d.StructTreeRoot.canCreateStructureTree({catalogRef:x,pdfManager:a,newAnnotationsByPage:f})&&(k=null);const e=o.AnnotationFactory.generateImages(s.values(),y,a.evaluatorOptions.isOffscreenCanvasSupported),t=void 0===k?u:[];for(const[r,n]of f)t.push(a.getPage(r).then((t=>{const a=new WorkerTask(`Save (editor): page ${r}`);return t.saveNewAnnotations(C,a,n,e).finally((function(){finishWorkerTask(a)}))})));null===k?u.push(Promise.all(t).then((async e=>{await d.StructTreeRoot.createStructureTree({newAnnotationsByPage:f,xref:y,catalogRef:x,pdfManager:a,newRefs:e});return e}))):k&&u.push(Promise.all(t).then((async e=>{await k.updateStructureTree({newAnnotationsByPage:f,pdfManager:a,newRefs:e});return e})))}if(e)u.push(a.serializeXfaData(s));else for(let e=0;ee.needAppearances)),M=p instanceof i.Dict&&p.get("XFA")||null;let D=null,E=!1;if(Array.isArray(M)){for(let e=0,t=M.length;e{"string"==typeof a&&(e[t]=(0,r.stringToPDFString)(a))}));N={rootRef:x,encryptRef:y.trailer.getRaw("Encrypt")||null,newRef:y.getNewTemporaryRef(),infoRef:y.trailer.getRaw("Info")||null,info:e,fileIds:y.trailer.get("ID")||null,startXRef:w?b:y.lastXRefStreamPos??b,filename:c}}return(0,l.incrementalUpdate)({originalData:g.bytes,xrefInfo:N,newRefs:F,xref:y,hasXfa:!!M,xfaDatasetsRef:D,hasXfaDatasetsEntry:E,needAppearances:T,acroFormRef:m,acroForm:p,xfaData:O}).finally((()=>{y.resetNewTemporaryRef()}))}));C.on("GetOperatorList",(function(e,t){const n=e.pageIndex;a.getPage(n).then((function(a){const i=new WorkerTask(`GetOperatorList: page ${n}`);startWorkerTask(i);const s=m>=r.VerbosityLevel.INFOS?Date.now():0;a.getOperatorList({handler:C,sink:t,task:i,intent:e.intent,cacheKey:e.cacheKey,annotationStorage:e.annotationStorage}).then((function(e){finishWorkerTask(i);s&&(0,r.info)(`page=${n+1} - getOperatorList: time=${Date.now()-s}ms, len=${e.length}`);t.close()}),(function(e){finishWorkerTask(i);i.terminated||t.error(e)}))}))}));C.on("GetTextContent",(function(e,t){const{pageIndex:n,includeMarkedContent:i,disableNormalization:s}=e;a.getPage(n).then((function(e){const a=new WorkerTask("GetTextContent: page "+n);startWorkerTask(a);const o=m>=r.VerbosityLevel.INFOS?Date.now():0;e.extractTextContent({handler:C,task:a,sink:t,includeMarkedContent:i,disableNormalization:s}).then((function(){finishWorkerTask(a);o&&(0,r.info)(`page=${n+1} - getTextContent: time=`+(Date.now()-o)+"ms");t.close()}),(function(e){finishWorkerTask(a);a.terminated||t.error(e)}))}))}));C.on("GetStructTree",(function(e){return a.getPage(e.pageIndex).then((function(e){return a.ensure(e,"getStructTree")}))}));C.on("FontFallback",(function(e){return a.fontFallback(e.id,C)}));C.on("Cleanup",(function(e){return a.cleanup(!0)}));C.on("Terminate",(function(e){f=!0;const t=[];if(a){a.terminate(new r.AbortException("Worker was terminated."));const e=a.cleanup();t.push(e);a=null}else(0,c.clearGlobalCaches)();g&&g(new r.AbortException("Worker was terminated."));for(const e of p){t.push(e.finished);e.terminate()}return Promise.all(t).then((function(){C.destroy();C=null}))}));C.on("Ready",(function(t){!function setupDoc(e){function onSuccess(e){ensureNotTerminated();C.send("GetDoc",{pdfInfo:e})}function onFailure(e){ensureNotTerminated();if(e instanceof r.PasswordException){const t=new WorkerTask(`PasswordException: response ${e.code}`);startWorkerTask(t);C.sendWithPromise("PasswordRequest",e).then((function({password:e}){finishWorkerTask(t);a.updatePassword(e);pdfManagerReady()})).catch((function(){finishWorkerTask(t);C.send("DocException",e)}))}else e instanceof r.InvalidPDFException||e instanceof r.MissingPDFException||e instanceof r.UnexpectedResponseException||e instanceof r.UnknownErrorException?C.send("DocException",e):C.send("DocException",new r.UnknownErrorException(e.message,e.toString()))}function pdfManagerReady(){ensureNotTerminated();loadDocument(!1).then(onSuccess,(function(e){ensureNotTerminated();e instanceof n.XRefParseException?a.requestLoadedStream().then((function(){ensureNotTerminated();loadDocument(!0).then(onSuccess,onFailure)})):onFailure(e)}))}ensureNotTerminated();getPdfManager(e).then((function(e){if(f){e.terminate(new r.AbortException("Worker was terminated."));throw new Error("Worker was terminated")}a=e;a.requestLoadedStream(!0).then((e=>{C.send("DataLoaded",{length:e.bytes.byteLength})}))})).then(pdfManagerReady,onFailure)}(e);e=null}));return x}static initializeFromPort(e){const t=new h.MessageHandler("worker","main",e);WorkerMessageHandler.setup(t,e);t.send("ready",null)}}t.WorkerMessageHandler=WorkerMessageHandler;"undefined"==typeof window&&!r.isNodeJS&&"undefined"!=typeof self&&function isMessagePort(e){return"function"==typeof e.postMessage&&"onmessage"in e}(self)&&WorkerMessageHandler.initializeFromPort(self)},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.VerbosityLevel=t.Util=t.UnknownErrorException=t.UnexpectedResponseException=t.TextRenderingMode=t.RenderingIntentFlag=t.PromiseCapability=t.PermissionFlag=t.PasswordResponses=t.PasswordException=t.PageActionEventType=t.OPS=t.MissingPDFException=t.MAX_IMAGE_SIZE_TO_CACHE=t.LINE_FACTOR=t.LINE_DESCENT_FACTOR=t.InvalidPDFException=t.ImageKind=t.IDENTITY_MATRIX=t.FormatError=t.FeatureTest=t.FONT_IDENTITY_MATRIX=t.DocumentActionEventType=t.CMapCompressionType=t.BaseException=t.BASELINE_FACTOR=t.AnnotationType=t.AnnotationReplyType=t.AnnotationPrefix=t.AnnotationMode=t.AnnotationFlag=t.AnnotationFieldFlag=t.AnnotationEditorType=t.AnnotationEditorPrefix=t.AnnotationEditorParamsType=t.AnnotationBorderStyleType=t.AnnotationActionEventType=t.AbortException=void 0;t.assert=function assert(e,t){e||unreachable(t)};t.bytesToString=bytesToString;t.createValidAbsoluteUrl=function createValidAbsoluteUrl(e,t=null,a=null){if(!e)return null;try{if(a&&"string"==typeof e){if(a.addDefaultProtocol&&e.startsWith("www.")){const t=e.match(/\./g);t?.length>=2&&(e=`http://${e}`)}if(a.tryConvertEncoding)try{e=stringToUTF8String(e)}catch{}}const r=t?new URL(e,t):new URL(e);if(function _isValidProtocol(e){switch(e?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(r))return r}catch{}return null};t.getModificationDate=function getModificationDate(e=new Date){return[e.getUTCFullYear().toString(),(e.getUTCMonth()+1).toString().padStart(2,"0"),e.getUTCDate().toString().padStart(2,"0"),e.getUTCHours().toString().padStart(2,"0"),e.getUTCMinutes().toString().padStart(2,"0"),e.getUTCSeconds().toString().padStart(2,"0")].join("")};t.getUuid=function getUuid(){if("undefined"!=typeof crypto&&"function"==typeof crypto?.randomUUID)return crypto.randomUUID();const e=new Uint8Array(32);if("undefined"!=typeof crypto&&"function"==typeof crypto?.getRandomValues)crypto.getRandomValues(e);else for(let t=0;t<32;t++)e[t]=Math.floor(255*Math.random());return bytesToString(e)};t.getVerbosityLevel=function getVerbosityLevel(){return n};t.info=function info(e){n>=r.INFOS&&console.log(`Info: ${e}`)};t.isArrayBuffer=function isArrayBuffer(e){return"object"==typeof e&&void 0!==e?.byteLength};t.isArrayEqual=function isArrayEqual(e,t){if(e.length!==t.length)return!1;for(let a=0,r=e.length;at?t.normalize("NFKC"):l.get(a)))};t.objectFromMap=function objectFromMap(e){const t=Object.create(null);for(const[a,r]of e)t[a]=r;return t};t.objectSize=function objectSize(e){return Object.keys(e).length};t.setVerbosityLevel=function setVerbosityLevel(e){Number.isInteger(e)&&(n=e)};t.shadow=shadow;t.string32=function string32(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)};t.stringToBytes=stringToBytes;t.stringToPDFString=function stringToPDFString(e){if(e[0]>="ï"){let t;"þ"===e[0]&&"ÿ"===e[1]?t="utf-16be":"ÿ"===e[0]&&"þ"===e[1]?t="utf-16le":"ï"===e[0]&&"»"===e[1]&&"¿"===e[2]&&(t="utf-8");if(t)try{const a=new TextDecoder(t,{fatal:!0}),r=stringToBytes(e);return a.decode(r)}catch(e){warn(`stringToPDFString: "${e}".`)}}const t=[];for(let a=0,r=e.length;a=r.WARNINGS&&console.log(`Warning: ${e}`)}function unreachable(e){throw new Error(e)}function shadow(e,t,a,r=!1){Object.defineProperty(e,t,{value:a,enumerable:!r,configurable:!0,writable:!1});return a}const i=function BaseExceptionClosure(){function BaseException(e,t){this.constructor===BaseException&&unreachable("Cannot initialize BaseException.");this.message=e;this.name=t}BaseException.prototype=new Error;BaseException.constructor=BaseException;return BaseException}();t.BaseException=i;t.PasswordException=class PasswordException extends i{constructor(e,t){super(e,"PasswordException");this.code=t}};t.UnknownErrorException=class UnknownErrorException extends i{constructor(e,t){super(e,"UnknownErrorException");this.details=t}};t.InvalidPDFException=class InvalidPDFException extends i{constructor(e){super(e,"InvalidPDFException")}};t.MissingPDFException=class MissingPDFException extends i{constructor(e){super(e,"MissingPDFException")}};t.UnexpectedResponseException=class UnexpectedResponseException extends i{constructor(e,t){super(e,"UnexpectedResponseException");this.status=t}};t.FormatError=class FormatError extends i{constructor(e){super(e,"FormatError")}};t.AbortException=class AbortException extends i{constructor(e){super(e,"AbortException")}};function bytesToString(e){"object"==typeof e&&void 0!==e?.length||unreachable("Invalid argument for bytesToString");const t=e.length,a=8192;if(te.toString(16).padStart(2,"0")));t.Util=class Util{static makeHexColor(e,t,a){return`#${s[e]}${s[t]}${s[a]}`}static scaleMinMax(e,t){let a;if(e[0]){if(e[0]<0){a=t[0];t[0]=t[1];t[1]=a}t[0]*=e[0];t[1]*=e[0];if(e[3]<0){a=t[2];t[2]=t[3];t[3]=a}t[2]*=e[3];t[3]*=e[3]}else{a=t[0];t[0]=t[2];t[2]=a;a=t[1];t[1]=t[3];t[3]=a;if(e[1]<0){a=t[2];t[2]=t[3];t[3]=a}t[2]*=e[1];t[3]*=e[1];if(e[2]<0){a=t[0];t[0]=t[1];t[1]=a}t[0]*=e[2];t[1]*=e[2]}t[0]+=e[4];t[1]+=e[4];t[2]+=e[5];t[3]+=e[5]}static transform(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}static applyTransform(e,t){return[e[0]*t[0]+e[1]*t[2]+t[4],e[0]*t[1]+e[1]*t[3]+t[5]]}static applyInverseTransform(e,t){const a=t[0]*t[3]-t[1]*t[2];return[(e[0]*t[3]-e[1]*t[2]+t[2]*t[5]-t[4]*t[3])/a,(-e[0]*t[1]+e[1]*t[0]+t[4]*t[1]-t[5]*t[0])/a]}static getAxialAlignedBoundingBox(e,t){const a=this.applyTransform(e,t),r=this.applyTransform(e.slice(2,4),t),n=this.applyTransform([e[0],e[3]],t),i=this.applyTransform([e[2],e[1]],t);return[Math.min(a[0],r[0],n[0],i[0]),Math.min(a[1],r[1],n[1],i[1]),Math.max(a[0],r[0],n[0],i[0]),Math.max(a[1],r[1],n[1],i[1])]}static inverseTransform(e){const t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]}static singularValueDecompose2dScale(e){const t=[e[0],e[2],e[1],e[3]],a=e[0]*t[0]+e[1]*t[2],r=e[0]*t[1]+e[1]*t[3],n=e[2]*t[0]+e[3]*t[2],i=e[2]*t[1]+e[3]*t[3],s=(a+i)/2,o=Math.sqrt((a+i)**2-4*(a*i-n*r))/2,c=s+o||1,l=s-o||1;return[Math.sqrt(c),Math.sqrt(l)]}static normalizeRect(e){const t=e.slice(0);if(e[0]>e[2]){t[0]=e[2];t[2]=e[0]}if(e[1]>e[3]){t[1]=e[3];t[3]=e[1]}return t}static intersect(e,t){const a=Math.max(Math.min(e[0],e[2]),Math.min(t[0],t[2])),r=Math.min(Math.max(e[0],e[2]),Math.max(t[0],t[2]));if(a>r)return null;const n=Math.max(Math.min(e[1],e[3]),Math.min(t[1],t[3])),i=Math.min(Math.max(e[1],e[3]),Math.max(t[1],t[3]));return n>i?null:[a,n,r,i]}static bezierBoundingBox(e,t,a,r,n,i,s,o){const c=[],l=[[],[]];let h,u,d,f,g,p,m,b;for(let l=0;l<2;++l){if(0===l){u=6*e-12*a+6*n;h=-3*e+9*a-9*n+3*s;d=3*a-3*e}else{u=6*t-12*r+6*i;h=-3*t+9*r-9*i+3*o;d=3*r-3*t}if(Math.abs(h)<1e-12){if(Math.abs(u)<1e-12)continue;f=-d/u;0{this.resolve=t=>{this.#e=!0;e(t)};this.reject=e=>{this.#e=!0;t(e)}}))}get settled(){return this.#e}};let c=null,l=null;t.AnnotationPrefix="pdfjs_internal_id_"},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XRefParseException=t.XRefEntryException=t.ParserEOFException=t.PDF_VERSION_REGEXP=t.MissingDataException=void 0;t.arrayBuffersToBytes=function arrayBuffersToBytes(e){const t=e.length;if(0===t)return new Uint8Array(0);if(1===t)return new Uint8Array(e[0]);let a=0;for(let r=0;r=0;t--){const r=s[t];if(r instanceof n.Dict)for(const t of r.getKeys()){const s=a[t];if(!s)continue;const o=[];_collectJS(r.getRaw(t),e,o,new n.RefSet);o.length>0&&(i[s]=o)}}if(t.has("A")){const a=[];_collectJS(t.get("A"),e,a,new n.RefSet);a.length>0&&(i.Action=a)}return(0,r.objectSize)(i)>0?i:null};t.encodeToXmlString=function encodeToXmlString(e){const t=[];let a=0;for(let r=0,n=e.length;r55295&&(n<57344||n>65533)&&r++;a=r+1}}if(0===t.length)return e;a126||35===n||40===n||41===n||60===n||62===n||91===n||93===n||123===n||125===n||47===n||37===n){a"\n"===e?"\\n":"\r"===e?"\\r":`\\${e}`))};t.getInheritableProperty=getInheritableProperty;t.getLookupTableFactory=function getLookupTableFactory(e){let t;return function(){if(e){t=Object.create(null);e(t);e=null}return t}};t.getNewAnnotationsMap=function getNewAnnotationsMap(e){if(!e)return null;const t=new Map;for(const[a,n]of e){if(!a.startsWith(r.AnnotationEditorPrefix))continue;let e=t.get(n.pageIndex);if(!e){e=[];t.set(n.pageIndex,e)}e.push(n)}return t.size>0?t:null};t.getRotationMatrix=function getRotationMatrix(e,t,a){switch(e){case 90:return[0,1,-1,0,t,0];case 180:return[-1,0,0,-1,t,a];case 270:return[0,-1,1,0,0,a];default:throw new Error("Invalid rotation")}};t.isAscii=function isAscii(e){return/^[\x00-\x7F]*$/.test(e)};t.isWhiteSpace=function isWhiteSpace(e){return 32===e||9===e||13===e||10===e};t.log2=function log2(e){if(e<=0)return 0;return Math.ceil(Math.log2(e))};t.numberToString=function numberToString(e){if(Number.isInteger(e))return e.toString();const t=Math.round(100*e);if(t%100==0)return(t/100).toString();if(t%10==0)return e.toFixed(1);return e.toFixed(2)};t.parseXFAPath=function parseXFAPath(e){const t=/(.+)\[(\d+)\]$/;return e.split(".").map((e=>{const a=e.match(t);return a?{name:a[1],pos:parseInt(a[2],10)}:{name:e,pos:0}}))};t.readInt8=function readInt8(e,t){return e[t]<<24>>24};t.readUint16=function readUint16(e,t){return e[t]<<8|e[t+1]};t.readUint32=function readUint32(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0};t.recoverJsURL=function recoverJsURL(e){const t=new RegExp("^\\s*("+["app.launchURL","window.open","xfa.host.gotoURL"].join("|").replaceAll(".","\\.")+")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))","i").exec(e);if(t?.[2]){const e=t[2];let a=!1;"true"===t[3]&&"app.launchURL"===t[1]&&(a=!0);return{url:e,newWindow:a}}return null};t.stringToUTF16HexString=function stringToUTF16HexString(e){const t=[];for(let a=0,r=e.length;a>8&255).toString(16).padStart(2,"0"),(255&r).toString(16).padStart(2,"0"))}return t.join("")};t.stringToUTF16String=function stringToUTF16String(e,t=!1){const a=[];t&&a.push("þÿ");for(let t=0,r=e.length;t>8&255),String.fromCharCode(255&r))}return a.join("")};t.toRomanNumerals=function toRomanNumerals(e,t=!1){(0,r.assert)(Number.isInteger(e)&&e>0,"The number should be a positive integer.");const a=[];let n;for(;e>=1e3;){e-=1e3;a.push("M")}n=e/100|0;e%=100;a.push(s[n]);n=e/10|0;e%=10;a.push(s[10+n]);a.push(s[20+e]);const i=a.join("");return t?i.toLowerCase():i};t.validateCSSFont=function validateCSSFont(e){const t=new Set(["100","200","300","400","500","600","700","800","900","1000","normal","bold","bolder","lighter"]),{fontFamily:a,fontWeight:r,italicAngle:n}=e;if(!validateFontName(a,!0))return!1;const i=r?r.toString():"";e.fontWeight=t.has(i)?i:"400";const s=parseFloat(n);e.italicAngle=isNaN(s)||s<-90||s>90?"14":n.toString();return!0};t.validateFontName=validateFontName;var r=a(2),n=a(4),i=a(5);t.PDF_VERSION_REGEXP=/^[1-9]\.\d$/;class MissingDataException extends r.BaseException{constructor(e,t){super(`Missing data [${e}, ${t})`,"MissingDataException");this.begin=e;this.end=t}}t.MissingDataException=MissingDataException;class ParserEOFException extends r.BaseException{constructor(e){super(e,"ParserEOFException")}}t.ParserEOFException=ParserEOFException;class XRefEntryException extends r.BaseException{constructor(e){super(e,"XRefEntryException")}}t.XRefEntryException=XRefEntryException;class XRefParseException extends r.BaseException{constructor(e){super(e,"XRefParseException")}}t.XRefParseException=XRefParseException;function getInheritableProperty({dict:e,key:t,getArray:a=!1,stopWhenFound:r=!0}){let i;const s=new n.RefSet;for(;e instanceof n.Dict&&(!e.objId||!s.has(e.objId));){e.objId&&s.put(e.objId);const n=a?e.getArray(t):e.get(t);if(void 0!==n){if(r)return n;(i||=[]).push(n)}e=e.get("Parent")}return i}const s=["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM","","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","","I","II","III","IV","V","VI","VII","VIII","IX"];function _collectJS(e,t,a,s){if(!e)return;let o=null;if(e instanceof n.Ref){if(s.has(e))return;o=e;s.put(o);e=t.fetch(e)}if(Array.isArray(e))for(const r of e)_collectJS(r,t,a,s);else if(e instanceof n.Dict){if((0,n.isName)(e.get("S"),"JavaScript")){const t=e.get("JS");let n;t instanceof i.BaseStream?n=t.getString():"string"==typeof t&&(n=t);n&&=(0,r.stringToPDFString)(n).replaceAll("\0","");n&&a.push(n)}_collectJS(e.getRaw("Next"),t,a,s)}o&&s.remove(o)}const o={60:"<",62:">",38:"&",34:""",39:"'"};function validateFontName(e,t=!1){const a=/^("|').*("|')$/.exec(e);if(a&&a[1]===a[2]){if(new RegExp(`[^\\\\]${a[1]}`).test(e.slice(1,-1))){t&&(0,r.warn)(`FontFamily contains unescaped ${a[1]}: ${e}.`);return!1}}else for(const a of e.split(/[ \t]+/))if(/^(\d|(-(\d|-)))/.test(a)||!/^[\w-\\]+$/.test(a)){t&&(0,r.warn)(`FontFamily contains invalid : ${e}.`);return!1}return!0}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.RefSetCache=t.RefSet=t.Ref=t.Name=t.EOF=t.Dict=t.Cmd=t.CIRCULAR_REF=void 0;t.clearPrimitiveCaches=function clearPrimitiveCaches(){s=Object.create(null);o=Object.create(null);c=Object.create(null)};t.isCmd=function isCmd(e,t){return e instanceof Cmd&&(void 0===t||e.cmd===t)};t.isDict=function isDict(e,t){return e instanceof Dict&&(void 0===t||isName(e.get("Type"),t))};t.isName=isName;t.isRefsEqual=function isRefsEqual(e,t){return e.num===t.num&&e.gen===t.gen};var r=a(2);const n=Symbol("CIRCULAR_REF");t.CIRCULAR_REF=n;const i=Symbol("EOF");t.EOF=i;let s=Object.create(null),o=Object.create(null),c=Object.create(null);class Name{constructor(e){this.name=e}static get(e){return o[e]||=new Name(e)}}t.Name=Name;class Cmd{constructor(e){this.cmd=e}static get(e){return s[e]||=new Cmd(e)}}t.Cmd=Cmd;const l=function nonSerializableClosure(){return l};class Dict{constructor(e=null){this._map=Object.create(null);this.xref=e;this.objId=null;this.suppressEncryption=!1;this.__nonSerializable__=l}assignXref(e){this.xref=e}get size(){return Object.keys(this._map).length}get(e,t,a){let r=this._map[e];if(void 0===r&&void 0!==t){r=this._map[t];void 0===r&&void 0!==a&&(r=this._map[a])}return r instanceof Ref&&this.xref?this.xref.fetch(r,this.suppressEncryption):r}async getAsync(e,t,a){let r=this._map[e];if(void 0===r&&void 0!==t){r=this._map[t];void 0===r&&void 0!==a&&(r=this._map[a])}return r instanceof Ref&&this.xref?this.xref.fetchAsync(r,this.suppressEncryption):r}getArray(e,t,a){let r=this._map[e];if(void 0===r&&void 0!==t){r=this._map[t];void 0===r&&void 0!==a&&(r=this._map[a])}r instanceof Ref&&this.xref&&(r=this.xref.fetch(r,this.suppressEncryption));if(Array.isArray(r)){r=r.slice();for(let e=0,t=r.length;e{(0,r.unreachable)("Should not call `set` on the empty dictionary.")};return(0,r.shadow)(this,"empty",e)}static merge({xref:e,dictArray:t,mergeSubDicts:a=!1}){const r=new Dict(e),n=new Map;for(const e of t)if(e instanceof Dict)for(const[t,r]of Object.entries(e._map)){let e=n.get(t);if(void 0===e){e=[];n.set(t,e)}else if(!(a&&r instanceof Dict))continue;e.push(r)}for(const[t,a]of n){if(1===a.length||!(a[0]instanceof Dict)){r._map[t]=a[0];continue}const n=new Dict(e);for(const e of a)for(const[t,a]of Object.entries(e._map))void 0===n._map[t]&&(n._map[t]=a);n.size>0&&(r._map[t]=n)}n.clear();return r.size>0?r:Dict.empty}clone(){const e=new Dict(this.xref);for(const t of this.getKeys())e.set(t,this.getRaw(t));return e}}t.Dict=Dict;class Ref{constructor(e,t){this.num=e;this.gen=t}toString(){return 0===this.gen?`${this.num}R`:`${this.num}R${this.gen}`}static fromString(e){const t=c[e];if(t)return t;const a=/^(\d+)R(\d*)$/.exec(e);return a&&"0"!==a[1]?c[e]=new Ref(parseInt(a[1]),a[2]?parseInt(a[2]):0):null}static get(e,t){const a=0===t?`${e}R`:`${e}R${t}`;return c[a]||=new Ref(e,t)}}t.Ref=Ref;class RefSet{constructor(e=null){this._set=new Set(e?._set)}has(e){return this._set.has(e.toString())}put(e){this._set.add(e.toString())}remove(e){this._set.delete(e.toString())}[Symbol.iterator](){return this._set.values()}clear(){this._set.clear()}}t.RefSet=RefSet;class RefSetCache{constructor(){this._map=new Map}get size(){return this._map.size}get(e){return this._map.get(e.toString())}has(e){return this._map.has(e.toString())}put(e,t){this._map.set(e.toString(),t)}putAlias(e,t){this._map.set(e.toString(),this.get(t))}[Symbol.iterator](){return this._map.values()}clear(){this._map.clear()}}t.RefSetCache=RefSetCache;function isName(e,t){return e instanceof Name&&(void 0===t||e.name===t)}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.BaseStream=void 0;var r=a(2);class BaseStream{constructor(){this.constructor===BaseStream&&(0,r.unreachable)("Cannot initialize BaseStream.")}get length(){(0,r.unreachable)("Abstract getter `length` accessed")}get isEmpty(){(0,r.unreachable)("Abstract getter `isEmpty` accessed")}get isDataLoaded(){return(0,r.shadow)(this,"isDataLoaded",!0)}getByte(){(0,r.unreachable)("Abstract method `getByte` called")}getBytes(e){(0,r.unreachable)("Abstract method `getBytes` called")}peekByte(){const e=this.getByte();-1!==e&&this.pos--;return e}peekBytes(e){const t=this.getBytes(e);this.pos-=t.length;return t}getUint16(){const e=this.getByte(),t=this.getByte();return-1===e||-1===t?-1:(e<<8)+t}getInt32(){return(this.getByte()<<24)+(this.getByte()<<16)+(this.getByte()<<8)+this.getByte()}getByteRange(e,t){(0,r.unreachable)("Abstract method `getByteRange` called")}getString(e){return(0,r.bytesToString)(this.getBytes(e))}skip(e){this.pos+=e||1}reset(){(0,r.unreachable)("Abstract method `reset` called")}moveStart(){(0,r.unreachable)("Abstract method `moveStart` called")}makeSubStream(e,t,a=null){(0,r.unreachable)("Abstract method `makeSubStream` called")}getBaseStreams(){return null}}t.BaseStream=BaseStream},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NetworkPdfManager=t.LocalPdfManager=void 0;var r=a(2),n=a(7),i=a(3),s=a(9),o=a(8);class BasePdfManager{constructor(e){this.constructor===BasePdfManager&&(0,r.unreachable)("Cannot initialize BasePdfManager.");this._docBaseUrl=function parseDocBaseUrl(e){if(e){const t=(0,r.createValidAbsoluteUrl)(e);if(t)return t.href;(0,r.warn)(`Invalid absolute docBaseUrl: "${e}".`)}return null}(e.docBaseUrl);this._docId=e.docId;this._password=e.password;this.enableXfa=e.enableXfa;e.evaluatorOptions.isOffscreenCanvasSupported&&=r.FeatureTest.isOffscreenCanvasSupported;this.evaluatorOptions=e.evaluatorOptions}get docId(){return this._docId}get password(){return this._password}get docBaseUrl(){return this._docBaseUrl}get catalog(){return this.pdfDocument.catalog}ensureDoc(e,t){return this.ensure(this.pdfDocument,e,t)}ensureXRef(e,t){return this.ensure(this.pdfDocument.xref,e,t)}ensureCatalog(e,t){return this.ensure(this.pdfDocument.catalog,e,t)}getPage(e){return this.pdfDocument.getPage(e)}fontFallback(e,t){return this.pdfDocument.fontFallback(e,t)}loadXfaFonts(e,t){return this.pdfDocument.loadXfaFonts(e,t)}loadXfaImages(){return this.pdfDocument.loadXfaImages()}serializeXfaData(e){return this.pdfDocument.serializeXfaData(e)}cleanup(e=!1){return this.pdfDocument.cleanup(e)}async ensure(e,t,a){(0,r.unreachable)("Abstract method `ensure` called")}requestRange(e,t){(0,r.unreachable)("Abstract method `requestRange` called")}requestLoadedStream(e=!1){(0,r.unreachable)("Abstract method `requestLoadedStream` called")}sendProgressiveData(e){(0,r.unreachable)("Abstract method `sendProgressiveData` called")}updatePassword(e){this._password=e}terminate(e){(0,r.unreachable)("Abstract method `terminate` called")}}t.LocalPdfManager=class LocalPdfManager extends BasePdfManager{constructor(e){super(e);const t=new o.Stream(e.source);this.pdfDocument=new s.PDFDocument(this,t);this._loadedStreamPromise=Promise.resolve(t)}async ensure(e,t,a){const r=e[t];return"function"==typeof r?r.apply(e,a):r}requestRange(e,t){return Promise.resolve()}requestLoadedStream(e=!1){return this._loadedStreamPromise}terminate(e){}};t.NetworkPdfManager=class NetworkPdfManager extends BasePdfManager{constructor(e){super(e);this.streamManager=new n.ChunkedStreamManager(e.source,{msgHandler:e.handler,length:e.length,disableAutoFetch:e.disableAutoFetch,rangeChunkSize:e.rangeChunkSize});this.pdfDocument=new s.PDFDocument(this,this.streamManager.getStream())}async ensure(e,t,a){try{const r=e[t];return"function"==typeof r?r.apply(e,a):r}catch(r){if(!(r instanceof i.MissingDataException))throw r;await this.requestRange(r.begin,r.end);return this.ensure(e,t,a)}}requestRange(e,t){return this.streamManager.requestRange(e,t)}requestLoadedStream(e=!1){return this.streamManager.requestAllChunks(e)}sendProgressiveData(e){this.streamManager.onReceiveData({chunk:e})}terminate(e){this.streamManager.abort(e)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ChunkedStreamManager=t.ChunkedStream=void 0;var r=a(3),n=a(2),i=a(8);class ChunkedStream extends i.Stream{constructor(e,t,a){super(new Uint8Array(e),0,e,null);this.chunkSize=t;this._loadedChunks=new Set;this.numChunks=Math.ceil(e/t);this.manager=a;this.progressiveDataLength=0;this.lastSuccessfulEnsureByteChunk=-1}getMissingChunks(){const e=[];for(let t=0,a=this.numChunks;t=this.end?this.numChunks:Math.floor(t/this.chunkSize);for(let e=a;ethis.numChunks)&&t!==this.lastSuccessfulEnsureByteChunk){if(!this._loadedChunks.has(t))throw new r.MissingDataException(e,e+1);this.lastSuccessfulEnsureByteChunk=t}}ensureRange(e,t){if(e>=t)return;if(t<=this.progressiveDataLength)return;const a=Math.floor(e/this.chunkSize);if(a>this.numChunks)return;const n=Math.min(Math.floor((t-1)/this.chunkSize)+1,this.numChunks);for(let i=a;i=this.end)return-1;e>=this.progressiveDataLength&&this.ensureByte(e);return this.bytes[this.pos++]}getBytes(e){const t=this.bytes,a=this.pos,r=this.end;if(!e){r>this.progressiveDataLength&&this.ensureRange(a,r);return t.subarray(a,r)}let n=a+e;n>r&&(n=r);n>this.progressiveDataLength&&this.ensureRange(a,n);this.pos=n;return t.subarray(a,n)}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);t>this.progressiveDataLength&&this.ensureRange(e,t);return this.bytes.subarray(e,t)}makeSubStream(e,t,a=null){t?e+t>this.progressiveDataLength&&this.ensureRange(e,e+t):e>=this.progressiveDataLength&&this.ensureByte(e);function ChunkedStreamSubstream(){}ChunkedStreamSubstream.prototype=Object.create(this);ChunkedStreamSubstream.prototype.getMissingChunks=function(){const e=this.chunkSize,t=Math.floor(this.start/e),a=Math.floor((this.end-1)/e)+1,r=[];for(let e=t;e{const readChunk=({value:s,done:o})=>{try{if(o){const t=(0,r.arrayBuffersToBytes)(n);n=null;e(t);return}i+=s.byteLength;a.isStreamingSupported&&this.onProgress({loaded:i});n.push(s);a.read().then(readChunk,t)}catch(e){t(e)}};a.read().then(readChunk,t)})).then((t=>{this.aborted||this.onReceiveData({chunk:t,begin:e})}))}requestAllChunks(e=!1){if(!e){const e=this.stream.getMissingChunks();this._requestChunks(e)}return this._loadedStreamCapability.promise}_requestChunks(e){const t=this.currRequestId++,a=new Set;this._chunksNeededByRequest.set(t,a);for(const t of e)this.stream.hasChunk(t)||a.add(t);if(0===a.size)return Promise.resolve();const r=new n.PromiseCapability;this._promisesByRequest.set(t,r);const i=[];for(const e of a){let a=this._requestsByChunk.get(e);if(!a){a=[];this._requestsByChunk.set(e,a);i.push(e)}a.push(t)}if(i.length>0){const e=this.groupChunks(i);for(const t of e){const e=t.beginChunk*this.chunkSize,a=Math.min(t.endChunk*this.chunkSize,this.length);this.sendRequest(e,a).catch(r.reject)}}return r.promise.catch((e=>{if(!this.aborted)throw e}))}getStream(){return this.stream}requestRange(e,t){t=Math.min(t,this.length);const a=this.getBeginChunk(e),r=this.getEndChunk(t),n=[];for(let e=a;e=0&&r+1!==i){t.push({beginChunk:a,endChunk:r+1});a=i}n+1===e.length&&t.push({beginChunk:a,endChunk:i+1});r=i}return t}onProgress(e){this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize+e.loaded,total:this.length})}onReceiveData(e){const t=e.chunk,a=void 0===e.begin,r=a?this.progressiveDataLength:e.begin,n=r+t.byteLength,i=Math.floor(r/this.chunkSize),s=n0||o.push(a)}}}if(!this.disableAutoFetch&&0===this._requestsByChunk.size){let e;if(1===this.stream.numChunksLoaded){const t=this.stream.numChunks-1;this.stream.hasChunk(t)||(e=t)}else e=this.stream.nextEmptyChunk(s);Number.isInteger(e)&&this._requestChunks([e])}for(const e of o){const t=this._promisesByRequest.get(e);this._promisesByRequest.delete(e);t.resolve()}this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize,total:this.length})}onError(e){this._loadedStreamCapability.reject(e)}getBeginChunk(e){return Math.floor(e/this.chunkSize)}getEndChunk(e){return Math.floor((e-1)/this.chunkSize)+1}abort(e){this.aborted=!0;this.pdfNetworkStream?.cancelAllRequests(e);for(const t of this._promisesByRequest.values())t.reject(e)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.StringStream=t.Stream=t.NullStream=void 0;var r=a(5),n=a(2);class Stream extends r.BaseStream{constructor(e,t,a,r){super();this.bytes=e instanceof Uint8Array?e:new Uint8Array(e);this.start=t||0;this.pos=this.start;this.end=t+a||this.bytes.length;this.dict=r}get length(){return this.end-this.start}get isEmpty(){return 0===this.length}getByte(){return this.pos>=this.end?-1:this.bytes[this.pos++]}getBytes(e){const t=this.bytes,a=this.pos,r=this.end;if(!e)return t.subarray(a,r);let n=a+e;n>r&&(n=r);this.pos=n;return t.subarray(a,n)}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);return this.bytes.subarray(e,t)}reset(){this.pos=this.start}moveStart(){this.start=this.pos}makeSubStream(e,t,a=null){return new Stream(this.bytes.buffer,e,t,a)}}t.Stream=Stream;t.StringStream=class StringStream extends Stream{constructor(e){super((0,n.stringToBytes)(e))}};t.NullStream=class NullStream extends Stream{constructor(){super(new Uint8Array(0))}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Page=t.PDFDocument=void 0;var r=a(2),n=a(10),i=a(3),s=a(4),o=a(51),c=a(5),l=a(74),h=a(66),u=a(68),d=a(102),f=a(16),g=a(8),p=a(76),m=a(64),b=a(13),y=a(18),w=a(72),S=a(73),x=a(77),C=a(103);const k=[0,0,612,792];class Page{constructor({pdfManager:e,xref:t,pageIndex:a,pageDict:r,ref:n,globalIdFactory:i,fontCache:s,builtInCMapCache:o,standardFontDataCache:c,globalImageCache:l,systemFontCache:h,nonBlendModesSet:u,xfaFactory:d}){this.pdfManager=e;this.pageIndex=a;this.pageDict=r;this.xref=t;this.ref=n;this.fontCache=s;this.builtInCMapCache=o;this.standardFontDataCache=c;this.globalImageCache=l;this.systemFontCache=h;this.nonBlendModesSet=u;this.evaluatorOptions=e.evaluatorOptions;this.resourcesPromise=null;this.xfaFactory=d;const f={obj:0};this._localIdFactory=class extends i{static createObjId(){return`p${a}_${++f.obj}`}static getPageObjId(){return`p${n.toString()}`}}}_getInheritableProperty(e,t=!1){const a=(0,i.getInheritableProperty)({dict:this.pageDict,key:e,getArray:t,stopWhenFound:!1});return Array.isArray(a)?1!==a.length&&a[0]instanceof s.Dict?s.Dict.merge({xref:this.xref,dictArray:a}):a[0]:a}get content(){return this.pageDict.getArray("Contents")}get resources(){const e=this._getInheritableProperty("Resources");return(0,r.shadow)(this,"resources",e instanceof s.Dict?e:s.Dict.empty)}_getBoundingBox(e){if(this.xfaData)return this.xfaData.bbox;let t=this._getInheritableProperty(e,!0);if(Array.isArray(t)&&4===t.length){t=r.Util.normalizeRect(t);if(t[2]-t[0]>0&&t[3]-t[1]>0)return t;(0,r.warn)(`Empty, or invalid, /${e} entry.`)}return null}get mediaBox(){return(0,r.shadow)(this,"mediaBox",this._getBoundingBox("MediaBox")||k)}get cropBox(){return(0,r.shadow)(this,"cropBox",this._getBoundingBox("CropBox")||this.mediaBox)}get userUnit(){let e=this.pageDict.get("UserUnit");("number"!=typeof e||e<=0)&&(e=1);return(0,r.shadow)(this,"userUnit",e)}get view(){const{cropBox:e,mediaBox:t}=this;if(e!==t&&!(0,r.isArrayEqual)(e,t)){const a=r.Util.intersect(e,t);if(a&&a[2]-a[0]>0&&a[3]-a[1]>0)return(0,r.shadow)(this,"view",a);(0,r.warn)("Empty /CropBox and /MediaBox intersection.")}return(0,r.shadow)(this,"view",t)}get rotate(){let e=this._getInheritableProperty("Rotate")||0;e%90!=0?e=0:e>=360?e%=360:e<0&&(e=(e%360+360)%360);return(0,r.shadow)(this,"rotate",e)}_onSubStreamError(e,t){if(!this.evaluatorOptions.ignoreErrors)throw e;(0,r.warn)(`getContentStream - ignoring sub-stream (${t}): "${e}".`)}getContentStream(){return this.pdfManager.ensure(this,"content").then((e=>e instanceof c.BaseStream?e:Array.isArray(e)?new y.StreamsSequenceStream(e,this._onSubStreamError.bind(this)):new g.NullStream))}get xfaData(){return(0,r.shadow)(this,"xfaData",this.xfaFactory?{bbox:this.xfaFactory.getBoundingBox(this.pageIndex)}:null)}#t(e,t,a){for(const n of e)if(n.id){const e=s.Ref.fromString(n.id);if(!e){(0,r.warn)(`A non-linked annotation cannot be modified: ${n.id}`);continue}if(n.deleted){t.put(e);continue}a?.put(e);n.ref=e;delete n.id}}async saveNewAnnotations(e,t,a,r){if(this.xfaFactory)throw new Error("XFA: Cannot save new annotations.");const i=new b.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}),o=new s.RefSet,c=new s.RefSet;this.#t(a,o,c);const l=this.pageDict,h=this.annotations.filter((e=>!(e instanceof s.Ref&&o.has(e)))),u=await n.AnnotationFactory.saveNewAnnotations(i,t,a,r);for(const{ref:e}of u.annotations)e instanceof s.Ref&&!c.has(e)&&h.push(e);const d=l.get("Annots");l.set("Annots",h);const f=[];await(0,S.writeObject)(this.ref,l,f,this.xref);d&&l.set("Annots",d);const g=u.dependencies;g.push({ref:this.ref,data:f.join("")},...u.annotations);return g}save(e,t,a){const n=new b.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions});return this._parsedAnnotations.then((function(e){const i=[];for(const s of e)s.mustBePrinted(a)&&i.push(s.save(n,t,a).catch((function(e){(0,r.warn)(`save - ignoring annotation data during "${t.name}" task: "${e}".`);return null})));return Promise.all(i).then((function(e){return e.filter((e=>!!e))}))}))}loadResources(e){this.resourcesPromise||(this.resourcesPromise=this.pdfManager.ensure(this,"resources"));return this.resourcesPromise.then((()=>new p.ObjectLoader(this.resources,e,this.xref).load()))}getOperatorList({handler:e,sink:t,task:a,intent:o,cacheKey:c,annotationStorage:l=null}){const h=this.getContentStream(),u=this.loadResources(["ColorSpace","ExtGState","Font","Pattern","Properties","Shading","XObject"]),d=new b.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}),f=this.xfaFactory?null:(0,i.getNewAnnotationsMap)(l);let g=null,p=Promise.resolve(null);if(f){const e=f.get(this.pageIndex);if(e){const t=this.pdfManager.ensureDoc("annotationGlobals");let i;const o=new Set;for(const{bitmapId:t,bitmap:a}of e)!t||a||o.has(t)||o.add(t);const{isOffscreenCanvasSupported:c}=this.evaluatorOptions;if(o.size>0){const t=e.slice();for(const[e,a]of l)e.startsWith(r.AnnotationEditorPrefix)&&a.bitmap&&o.has(a.bitmapId)&&t.push(a);i=n.AnnotationFactory.generateImages(t,this.xref,c)}else i=n.AnnotationFactory.generateImages(e,this.xref,c);g=new s.RefSet;this.#t(e,g,null);p=t.then((t=>t?n.AnnotationFactory.printNewAnnotations(t,d,a,e,i):null))}}const y=Promise.all([h,u]).then((([r])=>{const n=new m.OperatorList(o,t);e.send("StartRenderPage",{transparency:d.hasBlendModes(this.resources,this.nonBlendModesSet),pageIndex:this.pageIndex,cacheKey:c});return d.getOperatorList({stream:r,task:a,resources:this.resources,operatorList:n}).then((function(){return n}))}));return Promise.all([y,this._parsedAnnotations,p]).then((function([e,t,n]){if(n){t=t.filter((e=>!(e.ref&&g.has(e.ref))));for(let e=0,a=n.length;ee.ref&&(0,s.isRefsEqual)(e.ref,r.refToReplace)));if(i>=0){t.splice(i,1,r);n.splice(e--,1);a--}}}t=t.concat(n)}if(0===t.length||o&r.RenderingIntentFlag.ANNOTATIONS_DISABLE){e.flush(!0);return{length:e.totalLength}}const i=!!(o&r.RenderingIntentFlag.ANNOTATIONS_FORMS),c=!!(o&r.RenderingIntentFlag.ANY),h=!!(o&r.RenderingIntentFlag.DISPLAY),u=!!(o&r.RenderingIntentFlag.PRINT),f=[];for(const e of t)(c||h&&e.mustBeViewed(l,i)||u&&e.mustBePrinted(l))&&f.push(e.getOperatorList(d,a,o,i,l).catch((function(e){(0,r.warn)(`getOperatorList - ignoring annotation data during "${a.name}" task: "${e}".`);return{opList:null,separateForm:!1,separateCanvas:!1}})));return Promise.all(f).then((function(t){let a=!1,r=!1;for(const{opList:n,separateForm:i,separateCanvas:s}of t){e.addOpList(n);a||=i;r||=s}e.flush(!0,{form:a,canvas:r});return{length:e.totalLength}}))}))}extractTextContent({handler:e,task:t,includeMarkedContent:a,disableNormalization:r,sink:n}){const i=this.getContentStream(),s=this.loadResources(["ExtGState","Font","Properties","XObject"]);return Promise.all([i,s]).then((([i])=>new b.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}).getTextContent({stream:i,task:t,resources:this.resources,includeMarkedContent:a,disableNormalization:r,sink:n,viewBox:this.view})))}async getStructTree(){const e=await this.pdfManager.ensureCatalog("structTreeRoot");if(!e)return null;await this._parsedAnnotations;return(await this.pdfManager.ensure(this,"_parseStructTree",[e])).serializable}_parseStructTree(e){const t=new w.StructTreePage(e,this.pageDict);t.parse(this.ref);return t}async getAnnotationsData(e,t,a){const n=await this._parsedAnnotations;if(0===n.length)return n;const i=[],s=[];let o;const c=!!(a&r.RenderingIntentFlag.ANY),l=!!(a&r.RenderingIntentFlag.DISPLAY),h=!!(a&r.RenderingIntentFlag.PRINT);for(const a of n){const n=c||l&&a.viewable;(n||h&&a.printable)&&i.push(a.data);if(a.hasTextContent&&n){o||=new b.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions});s.push(a.extractTextContent(o,t,[-1/0,-1/0,1/0,1/0]).catch((function(e){(0,r.warn)(`getAnnotationsData - ignoring textContent during "${t.name}" task: "${e}".`)})))}}await Promise.all(s);return i}get annotations(){const e=this._getInheritableProperty("Annots");return(0,r.shadow)(this,"annotations",Array.isArray(e)?e:[])}get _parsedAnnotations(){const e=this.pdfManager.ensure(this,"annotations").then((async e=>{if(0===e.length)return e;const t=await this.pdfManager.ensureDoc("annotationGlobals");if(!t)return[];const a=[];for(const i of e)a.push(n.AnnotationFactory.create(this.xref,i,t,this._localIdFactory,!1,this.ref).catch((function(e){(0,r.warn)(`_parsedAnnotations: "${e}".`);return null})));const i=[];let s;for(const e of await Promise.all(a))e&&(e instanceof n.PopupAnnotation?(s||=[]).push(e):i.push(e));s&&i.push(...s);return i}));return(0,r.shadow)(this,"_parsedAnnotations",e)}get jsActions(){const e=(0,i.collectActions)(this.xref,this.pageDict,r.PageActionEventType);return(0,r.shadow)(this,"jsActions",e)}}t.Page=Page;const v=new Uint8Array([37,80,68,70,45]),F=new Uint8Array([115,116,97,114,116,120,114,101,102]),O=new Uint8Array([101,110,100,111,98,106]);function find(e,t,a=1024,r=!1){const n=t.length,i=e.peekBytes(a),s=i.length-n;if(s<=0)return!1;if(r){const a=n-1;let r=i.length-1;for(;r>=a;){let s=0;for(;s=n){e.pos+=r-a;return!0}r--}}else{let a=0;for(;a<=s;){let r=0;for(;r=n){e.pos+=a;return!0}a++}}return!1}t.PDFDocument=class PDFDocument{constructor(e,t){if(t.length<=0)throw new r.InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes.");this.pdfManager=e;this.stream=t;this.xref=new C.XRef(t,e);this._pagePromises=new Map;this._version=null;const a={font:0};this._globalIdFactory=class{static getDocId(){return`g_${e.docId}`}static createFontId(){return"f"+ ++a.font}static createObjId(){(0,r.unreachable)("Abstract method `createObjId` called.")}static getPageObjId(){(0,r.unreachable)("Abstract method `getPageObjId` called.")}}}parse(e){this.xref.parse(e);this.catalog=new h.Catalog(this.pdfManager,this.xref)}get linearization(){let e=null;try{e=f.Linearization.create(this.stream)}catch(e){if(e instanceof i.MissingDataException)throw e;(0,r.info)(e)}return(0,r.shadow)(this,"linearization",e)}get startXRef(){const e=this.stream;let t=0;if(this.linearization){e.reset();find(e,O)&&(t=e.pos+6-e.start)}else{const a=1024,r=F.length;let n=!1,s=e.end;for(;!n&&s>0;){s-=a-r;s<0&&(s=0);e.pos=s;n=find(e,F,a,!0)}if(n){e.skip(9);let a;do{a=e.getByte()}while((0,i.isWhiteSpace)(a));let r="";for(;a>=32&&a<=57;){r+=String.fromCharCode(a);a=e.getByte()}t=parseInt(r,10);isNaN(t)&&(t=0)}}return(0,r.shadow)(this,"startXRef",t)}checkHeader(){const e=this.stream;e.reset();if(!find(e,v))return;e.moveStart();e.skip(v.length);let t,a="";for(;(t=e.getByte())>32&&a.length<7;)a+=String.fromCharCode(t);i.PDF_VERSION_REGEXP.test(a)?this._version=a:(0,r.warn)(`Invalid PDF header version: ${a}`)}parseStartXRef(){this.xref.setStartXRef(this.startXRef)}get numPages(){let e=0;e=this.catalog.hasActualNumPages?this.catalog.numPages:this.xfaFactory?this.xfaFactory.getNumPages():this.linearization?this.linearization.numPages:this.catalog.numPages;return(0,r.shadow)(this,"numPages",e)}_hasOnlyDocumentSignatures(e,t=0){return!!Array.isArray(e)&&e.every((e=>{if(!((e=this.xref.fetchIfRef(e))instanceof s.Dict))return!1;if(e.has("Kids")){if(++t>10){(0,r.warn)("_hasOnlyDocumentSignatures: maximum recursion depth reached");return!1}return this._hasOnlyDocumentSignatures(e.get("Kids"),t)}const a=(0,s.isName)(e.get("FT"),"Sig"),n=e.get("Rect"),i=Array.isArray(n)&&n.every((e=>0===e));return a&&i}))}get _xfaStreams(){const e=this.catalog.acroForm;if(!e)return null;const t=e.get("XFA"),a={"xdp:xdp":"",template:"",datasets:"",config:"",connectionSet:"",localeSet:"",stylesheet:"","/xdp:xdp":""};if(t instanceof c.BaseStream&&!t.isEmpty){a["xdp:xdp"]=t;return a}if(!Array.isArray(t)||0===t.length)return null;for(let e=0,r=t.length;e{y.set(e,t)}));const w=[];for(const[e,a]of y){const o=a.get("FontDescriptor");if(!(o instanceof s.Dict))continue;let c=o.get("FontFamily");c=c.replaceAll(/[ ]+(\d)/g,"$1");const l={fontFamily:c,fontWeight:o.get("FontWeight"),italicAngle:-o.get("ItalicAngle")};(0,i.validateCSSFont)(l)&&w.push(u.handleSetFont(n,[s.Name.get(e),1],null,d,t,g,null,l).catch((function(e){(0,r.warn)(`loadXfaFonts: "${e}".`);return null})))}await Promise.all(w);const S=this.xfaFactory.setFonts(f);if(!S)return;h.ignoreErrors=!0;w.length=0;f.length=0;const x=new Set;for(const e of S)(0,o.getXfaFontName)(`${e}-Regular`)||x.add(e);x.size&&S.push("PdfJS-Fallback");for(const e of S)if(!x.has(e))for(const a of[{name:"Regular",fontWeight:400,italicAngle:0},{name:"Bold",fontWeight:700,italicAngle:0},{name:"Italic",fontWeight:400,italicAngle:12},{name:"BoldItalic",fontWeight:700,italicAngle:12}]){const i=`${e}-${a.name}`,c=(0,o.getXfaFontDict)(i);w.push(u.handleSetFont(n,[s.Name.get(i),1],null,d,t,g,c,{fontFamily:e,fontWeight:a.fontWeight,italicAngle:a.italicAngle}).catch((function(e){(0,r.warn)(`loadXfaFonts: "${e}".`);return null})))}await Promise.all(w);this.xfaFactory.appendFonts(f,x)}async serializeXfaData(e){return this.xfaFactory?this.xfaFactory.serializeData(e):null}get version(){return this.catalog.version||this._version}get formInfo(){const e={hasFields:!1,hasAcroForm:!1,hasXfa:!1,hasSignatures:!1},t=this.catalog.acroForm;if(!t)return(0,r.shadow)(this,"formInfo",e);try{const a=t.get("Fields"),r=Array.isArray(a)&&a.length>0;e.hasFields=r;const n=t.get("XFA");e.hasXfa=Array.isArray(n)&&n.length>0||n instanceof c.BaseStream&&!n.isEmpty;const i=!!(1&t.get("SigFlags")),s=i&&this._hasOnlyDocumentSignatures(a);e.hasAcroForm=r&&!s;e.hasSignatures=i}catch(e){if(e instanceof i.MissingDataException)throw e;(0,r.warn)(`Cannot fetch form information: "${e}".`)}return(0,r.shadow)(this,"formInfo",e)}get documentInfo(){const e={PDFFormatVersion:this.version,Language:this.catalog.lang,EncryptFilterName:this.xref.encrypt?this.xref.encrypt.filterName:null,IsLinearized:!!this.linearization,IsAcroFormPresent:this.formInfo.hasAcroForm,IsXFAPresent:this.formInfo.hasXfa,IsCollectionPresent:!!this.catalog.collection,IsSignaturesPresent:this.formInfo.hasSignatures};let t;try{t=this.xref.trailer.get("Info")}catch(e){if(e instanceof i.MissingDataException)throw e;(0,r.info)("The document information dictionary is invalid.")}if(!(t instanceof s.Dict))return(0,r.shadow)(this,"documentInfo",e);for(const a of t.getKeys()){const n=t.get(a);switch(a){case"Title":case"Author":case"Subject":case"Keywords":case"Creator":case"Producer":case"CreationDate":case"ModDate":if("string"==typeof n){e[a]=(0,r.stringToPDFString)(n);continue}break;case"Trapped":if(n instanceof s.Name){e[a]=n;continue}break;default:let t;switch(typeof n){case"string":t=(0,r.stringToPDFString)(n);break;case"number":case"boolean":t=n;break;default:n instanceof s.Name&&(t=n)}if(void 0===t){(0,r.warn)(`Bad value, for custom key "${a}", in Info: ${n}.`);continue}e.Custom||(e.Custom=Object.create(null));e.Custom[a]=t;continue}(0,r.warn)(`Bad value, for key "${a}", in Info: ${n}.`)}return(0,r.shadow)(this,"documentInfo",e)}get fingerprints(){function validate(e){return"string"==typeof e&&e.length>0&&"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"!==e}function hexString(e){const t=[];for(const a of e){const e=a.toString(16);t.push(e.padStart(2,"0"))}return t.join("")}const e=this.xref.trailer.get("ID");let t,a;if(Array.isArray(e)&&validate(e[0])){t=(0,r.stringToBytes)(e[0]);e[1]!==e[0]&&validate(e[1])&&(a=(0,r.stringToBytes)(e[1]))}else t=(0,l.calculateMD5)(this.stream.getByteRange(0,1024),0,1024);return(0,r.shadow)(this,"fingerprints",[hexString(t),a?hexString(a):null])}async _getLinearizationPage(e){const{catalog:t,linearization:a,xref:n}=this,i=s.Ref.get(a.objectNumberFirst,0);try{const e=await n.fetchAsync(i);if(e instanceof s.Dict){let a=e.getRaw("Type");a instanceof s.Ref&&(a=await n.fetchAsync(a));if((0,s.isName)(a,"Page")||!e.has("Type")&&!e.has("Kids")){t.pageKidsCountCache.has(i)||t.pageKidsCountCache.put(i,1);t.pageIndexCache.has(i)||t.pageIndexCache.put(i,0);return[e,i]}}throw new r.FormatError("The Linearization dictionary doesn't point to a valid Page dictionary.")}catch(a){(0,r.warn)(`_getLinearizationPage: "${a.message}".`);return t.getPageDict(e)}}getPage(e){const t=this._pagePromises.get(e);if(t)return t;const{catalog:a,linearization:r,xfaFactory:n}=this;let i;i=n?Promise.resolve([s.Dict.empty,null]):r?.pageFirst===e?this._getLinearizationPage(e):a.getPageDict(e);i=i.then((([t,r])=>new Page({pdfManager:this.pdfManager,xref:this.xref,pageIndex:e,pageDict:t,ref:r,globalIdFactory:this._globalIdFactory,fontCache:a.fontCache,builtInCMapCache:a.builtInCMapCache,standardFontDataCache:a.standardFontDataCache,globalImageCache:a.globalImageCache,systemFontCache:a.systemFontCache,nonBlendModesSet:a.nonBlendModesSet,xfaFactory:n})));this._pagePromises.set(e,i);return i}async checkFirstPage(e=!1){if(!e)try{await this.getPage(0)}catch(e){if(e instanceof i.XRefEntryException){this._pagePromises.delete(0);await this.cleanup();throw new i.XRefParseException}}}async checkLastPage(e=!1){const{catalog:t,pdfManager:a}=this;t.setActualNumPages();let n;try{await Promise.all([a.ensureDoc("xfaFactory"),a.ensureDoc("linearization"),a.ensureCatalog("numPages")]);if(this.xfaFactory)return;n=this.linearization?this.linearization.numPages:t.numPages;if(!Number.isInteger(n))throw new r.FormatError("Page count is not an integer.");if(n<=1)return;await this.getPage(n-1)}catch(s){this._pagePromises.delete(n-1);await this.cleanup();if(s instanceof i.XRefEntryException&&!e)throw new i.XRefParseException;(0,r.warn)(`checkLastPage - invalid /Pages tree /Count: ${n}.`);let o;try{o=await t.getAllPageDicts(e)}catch(a){if(a instanceof i.XRefEntryException&&!e)throw new i.XRefParseException;t.setActualNumPages(1);return}for(const[e,[r,n]]of o){let i;if(r instanceof Error){i=Promise.reject(r);i.catch((()=>{}))}else i=Promise.resolve(new Page({pdfManager:a,xref:this.xref,pageIndex:e,pageDict:r,ref:n,globalIdFactory:this._globalIdFactory,fontCache:t.fontCache,builtInCMapCache:t.builtInCMapCache,standardFontDataCache:t.standardFontDataCache,globalImageCache:t.globalImageCache,systemFontCache:t.systemFontCache,nonBlendModesSet:t.nonBlendModesSet,xfaFactory:null}));this._pagePromises.set(e,i)}t.setActualNumPages(o.size)}}fontFallback(e,t){return this.catalog.fontFallback(e,t)}async cleanup(e=!1){return this.catalog?this.catalog.cleanup(e):(0,u.clearGlobalCaches)()}#a(e,t,a,i){const s=this.xref.fetchIfRef(t);if(s.has("T")){const t=(0,r.stringToPDFString)(s.get("T"));e=""===e?t:`${e}.${t}`}a.has(e)||a.set(e,[]);a.get(e).push(n.AnnotationFactory.create(this.xref,t,i,this._localIdFactory,!0,null).then((e=>e?.getFieldObject())).catch((function(e){(0,r.warn)(`#collectFieldObjects: "${e}".`);return null})));if(s.has("Kids"))for(const t of s.get("Kids"))this.#a(e,t,a,i)}get fieldObjects(){if(!this.formInfo.hasFields)return(0,r.shadow)(this,"fieldObjects",Promise.resolve(null));const e=this.pdfManager.ensureDoc("annotationGlobals").then((async e=>{if(!e)return null;const t=Object.create(null),a=new Map;for(const t of this.catalog.acroForm.get("Fields"))this.#a("",t,a,e);const r=[];for(const[e,n]of a)r.push(Promise.all(n).then((a=>{(a=a.filter((e=>!!e))).length>0&&(t[e]=a)})));await Promise.all(r);return t}));return(0,r.shadow)(this,"fieldObjects",e)}get hasJSActions(){const e=this.pdfManager.ensureDoc("_parseHasJSActions");return(0,r.shadow)(this,"hasJSActions",e)}async _parseHasJSActions(){const[e,t]=await Promise.all([this.pdfManager.ensureCatalog("jsActions"),this.pdfManager.ensureDoc("fieldObjects")]);return!!e||!!t&&Object.values(t).some((e=>e.some((e=>null!==e.actions))))}get calculationOrderIds(){const e=this.catalog.acroForm;if(!e?.has("CO"))return(0,r.shadow)(this,"calculationOrderIds",null);const t=e.get("CO");if(!Array.isArray(t)||0===t.length)return(0,r.shadow)(this,"calculationOrderIds",null);const a=[];for(const e of t)e instanceof s.Ref&&a.push(e.toString());return 0===a.length?(0,r.shadow)(this,"calculationOrderIds",null):(0,r.shadow)(this,"calculationOrderIds",a)}get annotationGlobals(){return(0,r.shadow)(this,"annotationGlobals",n.AnnotationFactory.createGlobals(this.pdfManager))}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.PopupAnnotation=t.MarkupAnnotation=t.AnnotationFactory=t.AnnotationBorderStyle=t.Annotation=void 0;t.getQuadPoints=getQuadPoints;var r=a(2),n=a(3),i=a(11),s=a(4),o=a(8),c=a(5),l=a(60),h=a(66),u=a(12),d=a(69),f=a(26),g=a(76),p=a(64),m=a(73),b=a(77);t.AnnotationFactory=class AnnotationFactory{static createGlobals(e){return Promise.all([e.ensureCatalog("acroForm"),e.ensureDoc("xfaDatasets"),e.ensureCatalog("structTreeRoot"),e.ensureCatalog("baseUrl"),e.ensureCatalog("attachments")]).then((([t,a,r,n,i])=>({pdfManager:e,acroForm:t instanceof s.Dict?t:s.Dict.empty,xfaDatasets:a,structTreeRoot:r,baseUrl:n,attachments:i})),(e=>{(0,r.warn)(`createGlobals: "${e}".`);return null}))}static async create(e,t,a,r,n,i){const s=n?await this._getPageIndex(e,t,a.pdfManager):null;return a.pdfManager.ensure(this,"_create",[e,t,a,r,n,s,i])}static _create(e,t,a,i,o=!1,c=null,l=null){const h=e.fetchIfRef(t);if(!(h instanceof s.Dict))return;const{acroForm:u,pdfManager:d}=a,f=t instanceof s.Ref?t.toString():`annot_${i.createObjId()}`;let g=h.get("Subtype");g=g instanceof s.Name?g.name:null;const p={xref:e,ref:t,dict:h,subtype:g,id:f,annotationGlobals:a,collectFields:o,needAppearances:!o&&!0===u.get("NeedAppearances"),pageIndex:c,evaluatorOptions:d.evaluatorOptions,pageRef:l};switch(g){case"Link":return new LinkAnnotation(p);case"Text":return new TextAnnotation(p);case"Widget":let e=(0,n.getInheritableProperty)({dict:h,key:"FT"});e=e instanceof s.Name?e.name:null;switch(e){case"Tx":return new TextWidgetAnnotation(p);case"Btn":return new ButtonWidgetAnnotation(p);case"Ch":return new ChoiceWidgetAnnotation(p);case"Sig":return new SignatureWidgetAnnotation(p)}(0,r.warn)(`Unimplemented widget field type "${e}", falling back to base field type.`);return new WidgetAnnotation(p);case"Popup":return new PopupAnnotation(p);case"FreeText":return new FreeTextAnnotation(p);case"Line":return new LineAnnotation(p);case"Square":return new SquareAnnotation(p);case"Circle":return new CircleAnnotation(p);case"PolyLine":return new PolylineAnnotation(p);case"Polygon":return new PolygonAnnotation(p);case"Caret":return new CaretAnnotation(p);case"Ink":return new InkAnnotation(p);case"Highlight":return new HighlightAnnotation(p);case"Underline":return new UnderlineAnnotation(p);case"Squiggly":return new SquigglyAnnotation(p);case"StrikeOut":return new StrikeOutAnnotation(p);case"Stamp":return new StampAnnotation(p);case"FileAttachment":return new FileAttachmentAnnotation(p);default:o||(g?(0,r.warn)(`Unimplemented annotation type "${g}", falling back to base annotation.`):(0,r.warn)("Annotation is missing the required /Subtype."));return new Annotation(p)}}static async _getPageIndex(e,t,a){try{const n=await e.fetchIfRefAsync(t);if(!(n instanceof s.Dict))return-1;const i=n.getRaw("P");if(i instanceof s.Ref)try{return await a.ensureCatalog("getPageIndex",[i])}catch(e){(0,r.info)(`_getPageIndex -- not a valid page reference: "${e}".`)}if(n.has("Kids"))return-1;const o=await a.ensureDoc("numPages");for(let e=0;ee/255))}function getQuadPoints(e,t){const a=e.getArray("QuadPoints");if(!Array.isArray(a)||0===a.length||a.length%8>0)return null;const r=[];for(let e=0,n=a.length/8;et[2]||st[3]))return null;r.push([{x:n,y:o},{x:i,y:o},{x:n,y:s},{x:i,y:s}])}return r}function getTransformMatrix(e,t,a){const[n,i,s,o]=r.Util.getAxialAlignedBoundingBox(t,a);if(n===s||i===o)return[1,0,0,1,e[0],e[1]];const c=(e[2]-e[0])/(s-n),l=(e[3]-e[1])/(o-i);return[c,0,0,l,e[0]-n*c,e[1]-i*l]}class Annotation{constructor(e){const{dict:t,xref:a,annotationGlobals:i}=e;this.setTitle(t.get("T"));this.setContents(t.get("Contents"));this.setModificationDate(t.get("M"));this.setFlags(t.get("F"));this.setRectangle(t.getArray("Rect"));this.setColor(t.getArray("C"));this.setBorderStyle(t);this.setAppearance(t);this.setOptionalContent(t);const o=t.get("MK");this.setBorderAndBackgroundColors(o);this.setRotation(o,t);this.ref=e.ref instanceof s.Ref?e.ref:null;this._streams=[];this.appearance&&this._streams.push(this.appearance);const c=!!(this.flags&r.AnnotationFlag.LOCKED),l=!!(this.flags&r.AnnotationFlag.LOCKEDCONTENTS);if(i.structTreeRoot){let a=t.get("StructParent");a=Number.isInteger(a)&&a>=0?a:-1;i.structTreeRoot.addAnnotationIdToPage(e.pageRef,a)}this.data={annotationFlags:this.flags,borderStyle:this.borderStyle,color:this.color,backgroundColor:this.backgroundColor,borderColor:this.borderColor,rotation:this.rotation,contentsObj:this._contents,hasAppearance:!!this.appearance,id:e.id,modificationDate:this.modificationDate,rect:this.rectangle,subtype:e.subtype,hasOwnCanvas:!1,noRotate:!!(this.flags&r.AnnotationFlag.NOROTATE),noHTML:c&&l};if(e.collectFields){const i=t.get("Kids");if(Array.isArray(i)){const e=[];for(const t of i)t instanceof s.Ref&&e.push(t.toString());0!==e.length&&(this.data.kidIds=e)}this.data.actions=(0,n.collectActions)(a,t,r.AnnotationActionEventType);this.data.fieldName=this._constructFieldName(t);this.data.pageIndex=e.pageIndex}this._isOffscreenCanvasSupported=e.evaluatorOptions.isOffscreenCanvasSupported;this._fallbackFontDict=null;this._needAppearances=!1}_hasFlag(e,t){return!!(e&t)}_isViewable(e){return!this._hasFlag(e,r.AnnotationFlag.INVISIBLE)&&!this._hasFlag(e,r.AnnotationFlag.NOVIEW)}_isPrintable(e){return this._hasFlag(e,r.AnnotationFlag.PRINT)&&!this._hasFlag(e,r.AnnotationFlag.HIDDEN)&&!this._hasFlag(e,r.AnnotationFlag.INVISIBLE)}mustBeViewed(e,t){const a=e?.get(this.data.id)?.noView;return void 0!==a?!a:this.viewable&&!this._hasFlag(this.flags,r.AnnotationFlag.HIDDEN)}mustBePrinted(e){const t=e?.get(this.data.id)?.noPrint;return void 0!==t?!t:this.printable}get viewable(){return null!==this.data.quadPoints&&(0===this.flags||this._isViewable(this.flags))}get printable(){return null!==this.data.quadPoints&&(0!==this.flags&&this._isPrintable(this.flags))}_parseStringHelper(e){const t="string"==typeof e?(0,r.stringToPDFString)(e):"";return{str:t,dir:t&&"rtl"===(0,l.bidi)(t).dir?"rtl":"ltr"}}setDefaultAppearance(e){const{dict:t,annotationGlobals:a}=e,r=(0,n.getInheritableProperty)({dict:t,key:"DA"})||a.acroForm.get("DA");this._defaultAppearance="string"==typeof r?r:"";this.data.defaultAppearanceData=(0,i.parseDefaultAppearance)(this._defaultAppearance)}setTitle(e){this._title=this._parseStringHelper(e)}setContents(e){this._contents=this._parseStringHelper(e)}setModificationDate(e){this.modificationDate="string"==typeof e?e:null}setFlags(e){this.flags=Number.isInteger(e)&&e>0?e:0}hasFlag(e){return this._hasFlag(this.flags,e)}setRectangle(e){this.rectangle=Array.isArray(e)&&4===e.length?r.Util.normalizeRect(e):[0,0,0,0]}setColor(e){this.color=getRgbColor(e)}setLineEndings(e){this.lineEndings=["None","None"];if(Array.isArray(e)&&2===e.length)for(let t=0;t<2;t++){const a=e[t];if(a instanceof s.Name)switch(a.name){case"None":continue;case"Square":case"Circle":case"Diamond":case"OpenArrow":case"ClosedArrow":case"Butt":case"ROpenArrow":case"RClosedArrow":case"Slash":this.lineEndings[t]=a.name;continue}(0,r.warn)(`Ignoring invalid lineEnding: ${a}`)}}setRotation(e,t){this.rotation=0;let a=e instanceof s.Dict?e.get("R")||0:t.get("Rotate")||0;if(Number.isInteger(a)&&0!==a){a%=360;a<0&&(a+=360);a%90==0&&(this.rotation=a)}}setBorderAndBackgroundColors(e){if(e instanceof s.Dict){this.borderColor=getRgbColor(e.getArray("BC"),null);this.backgroundColor=getRgbColor(e.getArray("BG"),null)}else this.borderColor=this.backgroundColor=null}setBorderStyle(e){this.borderStyle=new AnnotationBorderStyle;if(e instanceof s.Dict)if(e.has("BS")){const t=e.get("BS"),a=t.get("Type");if(!a||(0,s.isName)(a,"Border")){this.borderStyle.setWidth(t.get("W"),this.rectangle);this.borderStyle.setStyle(t.get("S"));this.borderStyle.setDashArray(t.getArray("D"))}}else if(e.has("Border")){const t=e.getArray("Border");if(Array.isArray(t)&&t.length>=3){this.borderStyle.setHorizontalCornerRadius(t[0]);this.borderStyle.setVerticalCornerRadius(t[1]);this.borderStyle.setWidth(t[2],this.rectangle);4===t.length&&this.borderStyle.setDashArray(t[3],!0)}}else this.borderStyle.setWidth(0)}setAppearance(e){this.appearance=null;const t=e.get("AP");if(!(t instanceof s.Dict))return;const a=t.get("N");if(a instanceof c.BaseStream){this.appearance=a;return}if(!(a instanceof s.Dict))return;const r=e.get("AS");if(!(r instanceof s.Name&&a.has(r.name)))return;const n=a.get(r.name);n instanceof c.BaseStream&&(this.appearance=n)}setOptionalContent(e){this.oc=null;const t=e.get("OC");t instanceof s.Name?(0,r.warn)("setOptionalContent: Support for /Name-entry is not implemented."):t instanceof s.Dict&&(this.oc=t)}loadResources(e,t){return t.dict.getAsync("Resources").then((t=>{if(!t)return;return new g.ObjectLoader(t,e,t.xref).load().then((function(){return t}))}))}async getOperatorList(e,t,a,n,i){const c=this.data;let l=this.appearance;const h=!!(this.data.hasOwnCanvas&&a&r.RenderingIntentFlag.DISPLAY);if(!l){if(!h)return{opList:new p.OperatorList,separateForm:!1,separateCanvas:!1};l=new o.StringStream("");l.dict=new s.Dict}const u=l.dict,d=await this.loadResources(["ExtGState","ColorSpace","Pattern","Shading","XObject","Font"],l),f=u.getArray("BBox")||[0,0,1,1],g=u.getArray("Matrix")||[1,0,0,1,0,0],m=getTransformMatrix(c.rect,f,g),b=new p.OperatorList;let y;this.oc&&(y=await e.parseMarkedContentProps(this.oc,null));void 0!==y&&b.addOp(r.OPS.beginMarkedContentProps,["OC",y]);b.addOp(r.OPS.beginAnnotation,[c.id,c.rect,m,g,h]);await e.getOperatorList({stream:l,task:t,resources:d,operatorList:b,fallbackFontDict:this._fallbackFontDict});b.addOp(r.OPS.endAnnotation,[]);void 0!==y&&b.addOp(r.OPS.endMarkedContent,[]);this.reset();return{opList:b,separateForm:!1,separateCanvas:h}}async save(e,t,a){return null}get hasTextContent(){return!1}async extractTextContent(e,t,a){if(!this.appearance)return;const n=await this.loadResources(["ExtGState","Font","Properties","XObject"],this.appearance),i=[],s=[];let o=null;const c={desiredSize:Math.Infinity,ready:!0,enqueue(e,t){for(const t of e.items)if(void 0!==t.str){o||=t.transform.slice(-2);s.push(t.str);if(t.hasEOL){i.push(s.join(""));s.length=0}}}};await e.getTextContent({stream:this.appearance,task:t,resources:n,includeMarkedContent:!0,sink:c,viewBox:a});this.reset();s.length&&i.push(s.join(""));if(i.length>1||i[0]){const e=this.appearance.dict,t=e.getArray("BBox")||[0,0,1,1],a=e.getArray("Matrix")||[1,0,0,1,0,0],n=this.data.rect,s=getTransformMatrix(n,t,a);s[4]-=n[0];s[5]-=n[1];o=r.Util.applyTransform(o,s);o=r.Util.applyTransform(o,a);this.data.textPosition=o;this.data.textContent=i}}getFieldObject(){return this.data.kidIds?{id:this.data.id,actions:this.data.actions,name:this.data.fieldName,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,type:"",kidIds:this.data.kidIds,page:this.data.pageIndex,rotation:this.rotation}:null}reset(){for(const e of this._streams)e.reset()}_constructFieldName(e){if(!e.has("T")&&!e.has("Parent")){(0,r.warn)("Unknown field name, falling back to empty field name.");return""}if(!e.has("Parent"))return(0,r.stringToPDFString)(e.get("T"));const t=[];e.has("T")&&t.unshift((0,r.stringToPDFString)(e.get("T")));let a=e;const n=new s.RefSet;e.objId&&n.put(e.objId);for(;a.has("Parent");){a=a.get("Parent");if(!(a instanceof s.Dict)||a.objId&&n.has(a.objId))break;a.objId&&n.put(a.objId);a.has("T")&&t.unshift((0,r.stringToPDFString)(a.get("T")))}return t.join(".")}}t.Annotation=Annotation;class AnnotationBorderStyle{constructor(){this.width=1;this.style=r.AnnotationBorderStyleType.SOLID;this.dashArray=[3];this.horizontalCornerRadius=0;this.verticalCornerRadius=0}setWidth(e,t=[0,0,0,0]){if(e instanceof s.Name)this.width=0;else if("number"==typeof e){if(e>0){const a=(t[2]-t[0])/2,n=(t[3]-t[1])/2;if(a>0&&n>0&&(e>a||e>n)){(0,r.warn)(`AnnotationBorderStyle.setWidth - ignoring width: ${e}`);e=1}}this.width=e}}setStyle(e){if(e instanceof s.Name)switch(e.name){case"S":this.style=r.AnnotationBorderStyleType.SOLID;break;case"D":this.style=r.AnnotationBorderStyleType.DASHED;break;case"B":this.style=r.AnnotationBorderStyleType.BEVELED;break;case"I":this.style=r.AnnotationBorderStyleType.INSET;break;case"U":this.style=r.AnnotationBorderStyleType.UNDERLINE}}setDashArray(e,t=!1){if(Array.isArray(e)&&e.length>0){let a=!0,r=!0;for(const t of e){if(!(+t>=0)){a=!1;break}t>0&&(r=!1)}if(a&&!r){this.dashArray=e;t&&this.setStyle(s.Name.get("D"))}else this.width=0}else e&&(this.width=0)}setHorizontalCornerRadius(e){Number.isInteger(e)&&(this.horizontalCornerRadius=e)}setVerticalCornerRadius(e){Number.isInteger(e)&&(this.verticalCornerRadius=e)}}t.AnnotationBorderStyle=AnnotationBorderStyle;class MarkupAnnotation extends Annotation{constructor(e){super(e);const{dict:t}=e;if(t.has("IRT")){const e=t.getRaw("IRT");this.data.inReplyTo=e instanceof s.Ref?e.toString():null;const a=t.get("RT");this.data.replyType=a instanceof s.Name?a.name:r.AnnotationReplyType.REPLY}let a=null;if(this.data.replyType===r.AnnotationReplyType.GROUP){const e=t.get("IRT");this.setTitle(e.get("T"));this.data.titleObj=this._title;this.setContents(e.get("Contents"));this.data.contentsObj=this._contents;if(e.has("CreationDate")){this.setCreationDate(e.get("CreationDate"));this.data.creationDate=this.creationDate}else this.data.creationDate=null;if(e.has("M")){this.setModificationDate(e.get("M"));this.data.modificationDate=this.modificationDate}else this.data.modificationDate=null;a=e.getRaw("Popup");if(e.has("C")){this.setColor(e.getArray("C"));this.data.color=this.color}else this.data.color=null}else{this.data.titleObj=this._title;this.setCreationDate(t.get("CreationDate"));this.data.creationDate=this.creationDate;a=t.getRaw("Popup");t.has("C")||(this.data.color=null)}this.data.popupRef=a instanceof s.Ref?a.toString():null;t.has("RC")&&(this.data.richText=b.XFAFactory.getRichTextAsHtml(t.get("RC")))}setCreationDate(e){this.creationDate="string"==typeof e?e:null}_setDefaultAppearance({xref:e,extra:t,strokeColor:a,fillColor:r,blendMode:n,strokeAlpha:i,fillAlpha:c,pointsCallback:l}){let h=Number.MAX_VALUE,u=Number.MAX_VALUE,d=Number.MIN_VALUE,f=Number.MIN_VALUE;const g=["q"];t&&g.push(t);a&&g.push(`${a[0]} ${a[1]} ${a[2]} RG`);r&&g.push(`${r[0]} ${r[1]} ${r[2]} rg`);let p=this.data.quadPoints;p||(p=[[{x:this.rectangle[0],y:this.rectangle[3]},{x:this.rectangle[2],y:this.rectangle[3]},{x:this.rectangle[0],y:this.rectangle[1]},{x:this.rectangle[2],y:this.rectangle[1]}]]);for(const e of p){const[t,a,r,n]=l(g,e);h=Math.min(h,t);d=Math.max(d,a);u=Math.min(u,r);f=Math.max(f,n)}g.push("Q");const m=new s.Dict(e),b=new s.Dict(e);b.set("Subtype",s.Name.get("Form"));const y=new o.StringStream(g.join(" "));y.dict=b;m.set("Fm0",y);const w=new s.Dict(e);n&&w.set("BM",s.Name.get(n));"number"==typeof i&&w.set("CA",i);"number"==typeof c&&w.set("ca",c);const S=new s.Dict(e);S.set("GS0",w);const x=new s.Dict(e);x.set("ExtGState",S);x.set("XObject",m);const C=new s.Dict(e);C.set("Resources",x);const k=this.data.rect=[h,u,d,f];C.set("BBox",k);this.appearance=new o.StringStream("/GS0 gs /Fm0 Do");this.appearance.dict=C;this._streams.push(this.appearance,y)}static async createNewAnnotation(e,t,a,r){const n=t.ref||=e.getNewTemporaryRef(),i=await this.createNewAppearanceStream(t,e,r),s=[];let o;if(i){const r=e.getNewTemporaryRef();o=this.createNewDict(t,e,{apRef:r});await(0,m.writeObject)(r,i,s,e);a.push({ref:r,data:s.join("")})}else o=this.createNewDict(t,e,{});Number.isInteger(t.parentTreeId)&&o.set("StructParent",t.parentTreeId);s.length=0;await(0,m.writeObject)(n,o,s,e);return{ref:n,data:s.join("")}}static async createNewPrintAnnotation(e,t,a,r){const n=await this.createNewAppearanceStream(a,t,r),i=this.createNewDict(a,t,{ap:n}),s=new this.prototype.constructor({dict:i,xref:t,annotationGlobals:e,evaluatorOptions:r.evaluatorOptions});a.ref&&(s.ref=s.refToReplace=a.ref);return s}}t.MarkupAnnotation=MarkupAnnotation;class WidgetAnnotation extends Annotation{constructor(e){super(e);const{dict:t,xref:a,annotationGlobals:i}=e,o=this.data;this._needAppearances=e.needAppearances;o.annotationType=r.AnnotationType.WIDGET;void 0===o.fieldName&&(o.fieldName=this._constructFieldName(t));void 0===o.actions&&(o.actions=(0,n.collectActions)(a,t,r.AnnotationActionEventType));let c=(0,n.getInheritableProperty)({dict:t,key:"V",getArray:!0});o.fieldValue=this._decodeFormValue(c);const l=(0,n.getInheritableProperty)({dict:t,key:"DV",getArray:!0});o.defaultFieldValue=this._decodeFormValue(l);if(void 0===c&&i.xfaDatasets){const e=this._title.str;if(e){this._hasValueFromXFA=!0;o.fieldValue=c=i.xfaDatasets.getValue(e)}}void 0===c&&null!==o.defaultFieldValue&&(o.fieldValue=o.defaultFieldValue);o.alternativeText=(0,r.stringToPDFString)(t.get("TU")||"");this.setDefaultAppearance(e);o.hasAppearance||=this._needAppearances&&void 0!==o.fieldValue&&null!==o.fieldValue;const h=(0,n.getInheritableProperty)({dict:t,key:"FT"});o.fieldType=h instanceof s.Name?h.name:null;const u=(0,n.getInheritableProperty)({dict:t,key:"DR"}),d=i.acroForm.get("DR"),f=this.appearance?.dict.get("Resources");this._fieldResources={localResources:u,acroFormResources:d,appearanceResources:f,mergedResources:s.Dict.merge({xref:a,dictArray:[u,f,d],mergeSubDicts:!0})};o.fieldFlags=(0,n.getInheritableProperty)({dict:t,key:"Ff"});(!Number.isInteger(o.fieldFlags)||o.fieldFlags<0)&&(o.fieldFlags=0);o.readOnly=this.hasFieldFlag(r.AnnotationFieldFlag.READONLY);o.required=this.hasFieldFlag(r.AnnotationFieldFlag.REQUIRED);o.hidden=this._hasFlag(o.annotationFlags,r.AnnotationFlag.HIDDEN)||this._hasFlag(o.annotationFlags,r.AnnotationFlag.NOVIEW)}_decodeFormValue(e){return Array.isArray(e)?e.filter((e=>"string"==typeof e)).map((e=>(0,r.stringToPDFString)(e))):e instanceof s.Name?(0,r.stringToPDFString)(e.name):"string"==typeof e?(0,r.stringToPDFString)(e):null}hasFieldFlag(e){return!!(this.data.fieldFlags&e)}_isViewable(e){return!this._hasFlag(e,r.AnnotationFlag.INVISIBLE)}mustBeViewed(e,t){return t?this.viewable:super.mustBeViewed(e,t)&&!this._hasFlag(this.flags,r.AnnotationFlag.NOVIEW)}getRotationMatrix(e){let t=e?.get(this.data.id)?.rotation;void 0===t&&(t=this.rotation);if(0===t)return r.IDENTITY_MATRIX;const a=this.data.rect[2]-this.data.rect[0],i=this.data.rect[3]-this.data.rect[1];return(0,n.getRotationMatrix)(t,a,i)}getBorderAndBackgroundAppearances(e){let t=e?.get(this.data.id)?.rotation;void 0===t&&(t=this.rotation);if(!this.backgroundColor&&!this.borderColor)return"";const a=this.data.rect[2]-this.data.rect[0],r=this.data.rect[3]-this.data.rect[1],n=0===t||180===t?`0 0 ${a} ${r} re`:`0 0 ${r} ${a} re`;let s="";this.backgroundColor&&(s=`${(0,i.getPdfColor)(this.backgroundColor,!0)} ${n} f `);if(this.borderColor){s+=`${this.borderStyle.width||1} w ${(0,i.getPdfColor)(this.borderColor,!1)} ${n} S `}return s}async getOperatorList(e,t,a,n,i){if(n&&!(this instanceof SignatureWidgetAnnotation)&&!this.data.noHTML&&!this.data.hasOwnCanvas)return{opList:new p.OperatorList,separateForm:!0,separateCanvas:!1};if(!this._hasText)return super.getOperatorList(e,t,a,n,i);const s=await this._getAppearance(e,t,a,i);if(this.appearance&&null===s)return super.getOperatorList(e,t,a,n,i);const c=new p.OperatorList;if(!this._defaultAppearance||null===s)return{opList:c,separateForm:!1,separateCanvas:!1};const l=!!(this.data.hasOwnCanvas&&a&r.RenderingIntentFlag.DISPLAY),h=[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]],u=getTransformMatrix(this.data.rect,h,[1,0,0,1,0,0]);let d;this.oc&&(d=await e.parseMarkedContentProps(this.oc,null));void 0!==d&&c.addOp(r.OPS.beginMarkedContentProps,["OC",d]);c.addOp(r.OPS.beginAnnotation,[this.data.id,this.data.rect,u,this.getRotationMatrix(i),l]);const f=new o.StringStream(s);await e.getOperatorList({stream:f,task:t,resources:this._fieldResources.mergedResources,operatorList:c});c.addOp(r.OPS.endAnnotation,[]);void 0!==d&&c.addOp(r.OPS.endMarkedContent,[]);return{opList:c,separateForm:!1,separateCanvas:l}}_getMKDict(e){const t=new s.Dict(null);e&&t.set("R",e);this.borderColor&&t.set("BC",getPdfColorArray(this.borderColor));this.backgroundColor&&t.set("BG",getPdfColorArray(this.backgroundColor));return t.size>0?t:null}amendSavedDict(e,t){}async save(e,t,a){const i=a?.get(this.data.id);let c=i?.value,l=i?.rotation;if(c===this.data.fieldValue||void 0===c){if(!this._hasValueFromXFA&&void 0===l)return null;c||=this.data.fieldValue}if(void 0===l&&!this._hasValueFromXFA&&Array.isArray(c)&&Array.isArray(this.data.fieldValue)&&c.length===this.data.fieldValue.length&&c.every(((e,t)=>e===this.data.fieldValue[t])))return null;void 0===l&&(l=this.rotation);let h=null;if(!this._needAppearances){h=await this._getAppearance(e,t,r.RenderingIntentFlag.SAVE,a);if(null===h)return null}let u=!1;if(h?.needAppearances){u=!0;h=null}const{xref:d}=e,f=d.fetchIfRef(this.ref);if(!(f instanceof s.Dict))return null;const g=new s.Dict(d);for(const e of f.getKeys())"AP"!==e&&g.set(e,f.getRaw(e));const p={path:this.data.fieldName,value:c},encoder=e=>(0,n.isAscii)(e)?e:(0,n.stringToUTF16String)(e,!0);g.set("V",Array.isArray(c)?c.map(encoder):encoder(c));this.amendSavedDict(a,g);const b=this._getMKDict(l);b&&g.set("MK",b);const y=[],w=[{ref:this.ref,data:"",xfa:p,needAppearances:u}];if(null!==h){const e=d.getNewTemporaryRef(),t=new s.Dict(d);g.set("AP",t);t.set("N",e);const n=this._getSaveFieldResources(d),i=new o.StringStream(h),c=i.dict=new s.Dict(d);c.set("Subtype",s.Name.get("Form"));c.set("Resources",n);c.set("BBox",[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]]);const l=this.getRotationMatrix(a);l!==r.IDENTITY_MATRIX&&c.set("Matrix",l);await(0,m.writeObject)(e,i,y,d);w.push({ref:e,data:y.join(""),xfa:null,needAppearances:!1});y.length=0}g.set("M",`D:${(0,r.getModificationDate)()}`);await(0,m.writeObject)(this.ref,g,y,d);w[0].data=y.join("");return w}async _getAppearance(e,t,a,s){if(this.hasFieldFlag(r.AnnotationFieldFlag.PASSWORD))return null;const o=s?.get(this.data.id);let c,l;if(o){c=o.formattedValue||o.value;l=o.rotation}if(void 0===l&&void 0===c&&!this._needAppearances&&(!this._hasValueFromXFA||this.appearance))return null;const h=this.getBorderAndBackgroundAppearances(s);if(void 0===c){c=this.data.fieldValue;if(!c)return`/Tx BMC q ${h}Q EMC`}Array.isArray(c)&&1===c.length&&(c=c[0]);(0,r.assert)("string"==typeof c,"Expected `value` to be a string.");c=c.trim();if(this.data.combo){const e=this.data.options.find((({exportValue:e})=>c===e));c=e?.displayValue||c}if(""===c)return`/Tx BMC q ${h}Q EMC`;void 0===l&&(l=this.rotation);let u,d=-1;if(this.data.multiLine){u=c.split(/\r\n?|\n/).map((e=>e.normalize("NFC")));d=u.length}else u=[c.replace(/\r\n?|\n/,"").normalize("NFC")];let f=this.data.rect[3]-this.data.rect[1],g=this.data.rect[2]-this.data.rect[0];90!==l&&270!==l||([g,f]=[f,g]);this._defaultAppearance||(this.data.defaultAppearanceData=(0,i.parseDefaultAppearance)(this._defaultAppearance="/Helvetica 0 Tf 0 g"));let p,m,b,y=await WidgetAnnotation._getFontData(e,t,this.data.defaultAppearanceData,this._fieldResources.mergedResources);const w=[];let S=!1;for(const e of u){const t=y.encodeString(e);t.length>1&&(S=!0);w.push(t.join(""))}if(S&&a&r.RenderingIntentFlag.SAVE)return{needAppearances:!0};if(S&&this._isOffscreenCanvasSupported){const a=this.data.comb?"monospace":"sans-serif",r=new i.FakeUnicodeFont(e.xref,a),s=r.createFontResources(u.join("")),o=s.getRaw("Font");if(this._fieldResources.mergedResources.has("Font")){const e=this._fieldResources.mergedResources.get("Font");for(const t of o.getKeys())e.set(t,o.getRaw(t))}else this._fieldResources.mergedResources.set("Font",o);const l=r.fontName.name;y=await WidgetAnnotation._getFontData(e,t,{fontName:l,fontSize:0},s);for(let e=0,t=w.length;e2)return`/Tx BMC q ${h}BT `+p+` 1 0 0 1 ${(0,n.numberToString)(2)} ${(0,n.numberToString)(v)} Tm (${(0,n.escapeString)(w[0])}) Tj ET Q EMC`;return`/Tx BMC q ${h}BT `+p+` 1 0 0 1 0 0 Tm ${this._renderText(w[0],y,m,g,k,{shift:0},2,v)} ET Q EMC`}static async _getFontData(e,t,a,r){const n=new p.OperatorList,i={font:null,clone(){return this}},{fontName:o,fontSize:c}=a;await e.handleSetFont(r,[o&&s.Name.get(o),c],null,n,t,i,null);return i.font}_getTextWidth(e,t){return t.charsToGlyphs(e).reduce(((e,t)=>e+t.width),0)/1e3}_computeFontSize(e,t,a,n,s){let{fontSize:o}=this.data.defaultAppearanceData,c=(o||12)*r.LINE_FACTOR,l=Math.round(e/c);if(!o){const roundWithTwoDigits=e=>Math.floor(100*e)/100;if(-1===s){const i=this._getTextWidth(a,n);o=roundWithTwoDigits(Math.min(e/r.LINE_FACTOR,i>t?t/i:1/0));l=1}else{const i=a.split(/\r\n?|\n/),h=[];for(const e of i){const t=n.encodeString(e).join(""),a=n.charsToGlyphs(t),r=n.getCharPositions(t);h.push({line:t,glyphs:a,positions:r})}const isTooBig=a=>{let r=0;for(const i of h){r+=this._splitLine(null,n,a,t,i).length*a;if(r>e)return!0}return!1};l=Math.max(l,s);for(;;){c=e/l;o=roundWithTwoDigits(c/r.LINE_FACTOR);if(!isTooBig(o))break;l++}}const{fontName:h,fontColor:u}=this.data.defaultAppearanceData;this._defaultAppearance=(0,i.createDefaultAppearance)({fontSize:o,fontName:h,fontColor:u})}return[this._defaultAppearance,o,e/l]}_renderText(e,t,a,r,i,s,o,c){let l;if(1===i){l=(r-this._getTextWidth(e,t)*a)/2}else if(2===i){l=r-this._getTextWidth(e,t)*a-o}else l=o;const h=(0,n.numberToString)(l-s.shift);s.shift=l;return`${h} ${c=(0,n.numberToString)(c)} Td (${(0,n.escapeString)(e)}) Tj`}_getSaveFieldResources(e){const{localResources:t,appearanceResources:a,acroFormResources:r}=this._fieldResources,n=this.data.defaultAppearanceData?.fontName;if(!n)return t||s.Dict.empty;for(const e of[t,a])if(e instanceof s.Dict){const t=e.get("Font");if(t instanceof s.Dict&&t.has(n))return e}if(r instanceof s.Dict){const a=r.get("Font");if(a instanceof s.Dict&&a.has(n)){const r=new s.Dict(e);r.set(n,a.getRaw(n));const i=new s.Dict(e);i.set("Font",r);return s.Dict.merge({xref:e,dictArray:[i,t],mergeSubDicts:!0})}}return t||s.Dict.empty}getFieldObject(){return null}}class TextWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);this.data.hasOwnCanvas=this.data.readOnly&&!this.data.noHTML;this._hasText=!0;const t=e.dict;"string"!=typeof this.data.fieldValue&&(this.data.fieldValue="");let a=(0,n.getInheritableProperty)({dict:t,key:"Q"});(!Number.isInteger(a)||a<0||a>2)&&(a=null);this.data.textAlignment=a;let i=(0,n.getInheritableProperty)({dict:t,key:"MaxLen"});(!Number.isInteger(i)||i<0)&&(i=0);this.data.maxLen=i;this.data.multiLine=this.hasFieldFlag(r.AnnotationFieldFlag.MULTILINE);this.data.comb=this.hasFieldFlag(r.AnnotationFieldFlag.COMB)&&!this.hasFieldFlag(r.AnnotationFieldFlag.MULTILINE)&&!this.hasFieldFlag(r.AnnotationFieldFlag.PASSWORD)&&!this.hasFieldFlag(r.AnnotationFieldFlag.FILESELECT)&&0!==this.data.maxLen;this.data.doNotScroll=this.hasFieldFlag(r.AnnotationFieldFlag.DONOTSCROLL)}get hasTextContent(){return!!this.appearance&&!this._needAppearances}_getCombAppearance(e,t,a,r,i,s,o,c,l,h,u){const d=i/this.data.maxLen,f=this.getBorderAndBackgroundAppearances(u),g=[],p=t.getCharPositions(a);for(const[e,t]of p)g.push(`(${(0,n.escapeString)(a.substring(e,t))}) Tj`);const m=g.join(` ${(0,n.numberToString)(d)} 0 Td `);return`/Tx BMC q ${f}BT `+e+` 1 0 0 1 ${(0,n.numberToString)(o)} ${(0,n.numberToString)(c+l)} Tm ${m} ET Q EMC`}_getMultilineAppearance(e,t,a,r,i,s,o,c,l,h,u,d){const f=[],g=i-2*c,p={shift:0};for(let e=0,n=t.length;er){c.push(e.substring(d,a));d=a;f=p;l=-1;u=-1}else{f+=p;l=a;h=n;u=t}else if(f+p>r)if(-1!==l){c.push(e.substring(d,h));d=h;t=u+1;l=-1;f=0}else{c.push(e.substring(d,a));d=a;f=p}else f+=p}d"Off"!==e));i.length=0;i.push("Off",e)}i.includes(this.data.fieldValue)||(this.data.fieldValue="Off");this.data.exportValue=i[1];const o=a.get(this.data.exportValue);this.checkedAppearance=o instanceof c.BaseStream?o:null;const l=a.get("Off");this.uncheckedAppearance=l instanceof c.BaseStream?l:null;this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"check");this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance);this._fallbackFontDict=this.fallbackFontDict;null===this.data.defaultFieldValue&&(this.data.defaultFieldValue="Off")}_processRadioButton(e){this.data.fieldValue=this.data.buttonValue=null;const t=e.dict.get("Parent");if(t instanceof s.Dict){this.parent=e.dict.getRaw("Parent");const a=t.get("V");a instanceof s.Name&&(this.data.fieldValue=this._decodeFormValue(a))}const a=e.dict.get("AP");if(!(a instanceof s.Dict))return;const r=a.get("N");if(!(r instanceof s.Dict))return;for(const e of r.getKeys())if("Off"!==e){this.data.buttonValue=this._decodeFormValue(e);break}const n=r.get(this.data.buttonValue);this.checkedAppearance=n instanceof c.BaseStream?n:null;const i=r.get("Off");this.uncheckedAppearance=i instanceof c.BaseStream?i:null;this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"disc");this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance);this._fallbackFontDict=this.fallbackFontDict;null===this.data.defaultFieldValue&&(this.data.defaultFieldValue="Off")}_processPushButton(e){const{dict:t,annotationGlobals:a}=e;if(t.has("A")||t.has("AA")||this.data.alternativeText){this.data.isTooltipOnly=!t.has("A")&&!t.has("AA");h.Catalog.parseDestDictionary({destDict:t,resultObj:this.data,docBaseUrl:a.baseUrl,docAttachments:a.attachments})}else(0,r.warn)("Push buttons without action dictionaries are not supported")}getFieldObject(){let e,t="button";if(this.data.checkBox){t="checkbox";e=this.data.exportValue}else if(this.data.radioButton){t="radiobutton";e=this.data.buttonValue}return{id:this.data.id,value:this.data.fieldValue||"Off",defaultValue:this.data.defaultFieldValue,exportValues:e,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,hidden:this.data.hidden,actions:this.data.actions,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:t}}get fallbackFontDict(){const e=new s.Dict;e.set("BaseFont",s.Name.get("ZapfDingbats"));e.set("Type",s.Name.get("FallbackType"));e.set("Subtype",s.Name.get("FallbackType"));e.set("Encoding",s.Name.get("ZapfDingbatsEncoding"));return(0,r.shadow)(this,"fallbackFontDict",e)}}class ChoiceWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.indices=t.getArray("I");this.hasIndices=Array.isArray(this.indices)&&this.indices.length>0;this.data.options=[];const i=(0,n.getInheritableProperty)({dict:t,key:"Opt"});if(Array.isArray(i))for(let e=0,t=i.length;e=0&&t0?this.data.fieldValue[0]:null;return{id:this.data.id,value:t,defaultValue:this.data.defaultFieldValue,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,numItems:this.data.fieldValue.length,multipleSelection:this.data.multiSelect,hidden:this.data.hidden,actions:this.data.actions,items:this.data.options,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:e}}amendSavedDict(e,t){if(!this.hasIndices)return;let a=e?.get(this.data.id)?.value;Array.isArray(a)||(a=[a]);const r=[],{options:n}=this.data;for(let e=0,t=0,i=n.length;ea){a=r;t=e}}[g,p]=this._computeFontSize(e,h-4,t,f,-1)}const m=p*r.LINE_FACTOR,b=(m-p)/2,y=Math.floor(l/m);let w=0;if(d.length>0){const e=Math.min(...d),t=Math.max(...d);w=Math.max(0,t-y+1);w>e&&(w=e)}const S=Math.min(w+y+1,u),x=["/Tx BMC q",`1 1 ${h} ${l} re W n`];if(d.length){x.push("0.600006 0.756866 0.854904 rg");for(const e of d)w<=e&&e1)return null;e=t.join("");M.push(e);let a=0;const r=y.charsToGlyphs(e);for(const e of r)a+=e.width*O;T=Math.max(T,a)}let D=1;T>k&&(D=k/T);let E=1;const N=r.LINE_FACTOR*d,R=(r.LINE_FACTOR-r.LINE_DESCENT_FACTOR)*d,L=N*F.length;L>v&&(E=v/L);const $=d*Math.min(D,E);let _,j,U;switch(g){case 0:U=[1,0,0,1];j=[f[0],f[1],k,v];_=[f[0],f[3]-R];break;case 90:U=[0,1,-1,0];j=[f[1],-f[2],k,v];_=[f[1],-f[0]-R];break;case 180:U=[-1,0,0,-1];j=[-f[2],-f[3],k,v];_=[-f[2],-f[1]-R];break;case 270:U=[0,-1,1,0];j=[-f[3],f[0],k,v];_=[-f[3],f[2]-R]}const X=["q",`${U.join(" ")} 0 0 cm`,`${j.join(" ")} re W n`,"BT",`${(0,i.getPdfColor)(u,!0)}`,`0 Tc /Helv ${(0,n.numberToString)($)} Tf`];X.push(`${_.join(" ")} Td (${(0,n.escapeString)(M[0])}) Tj`);const H=(0,n.numberToString)(N);for(let e=1,t=M.length;e{e.push(`${n[0]} ${n[1]} m`,`${n[2]} ${n[3]} l`,"S");return[t[0].x-l,t[1].x+l,t[3].y-l,t[1].y+l]}})}}}class SquareAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=r.AnnotationType.SQUARE;this.data.hasOwnCanvas=this.data.noRotate;if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],r=t.get("CA"),n=getRgbColor(t.getArray("IC"),null),i=n?getPdfColorArray(n):null,s=i?r:null;if(0===this.borderStyle.width&&!i)return;this._setDefaultAppearance({xref:a,extra:`${this.borderStyle.width} w`,strokeColor:e,fillColor:i,strokeAlpha:r,fillAlpha:s,pointsCallback:(e,t)=>{const a=t[2].x+this.borderStyle.width/2,r=t[2].y+this.borderStyle.width/2,n=t[3].x-t[2].x-this.borderStyle.width,s=t[1].y-t[3].y-this.borderStyle.width;e.push(`${a} ${r} ${n} ${s} re`);i?e.push("B"):e.push("S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}}class CircleAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=r.AnnotationType.CIRCLE;if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],r=t.get("CA"),n=getRgbColor(t.getArray("IC"),null),i=n?getPdfColorArray(n):null,s=i?r:null;if(0===this.borderStyle.width&&!i)return;const o=4/3*Math.tan(Math.PI/8);this._setDefaultAppearance({xref:a,extra:`${this.borderStyle.width} w`,strokeColor:e,fillColor:i,strokeAlpha:r,fillAlpha:s,pointsCallback:(e,t)=>{const a=t[0].x+this.borderStyle.width/2,r=t[0].y-this.borderStyle.width/2,n=t[3].x-this.borderStyle.width/2,s=t[3].y+this.borderStyle.width/2,c=a+(n-a)/2,l=r+(s-r)/2,h=(n-a)/2*o,u=(s-r)/2*o;e.push(`${c} ${s} m`,`${c+h} ${s} ${n} ${l+u} ${n} ${l} c`,`${n} ${l-u} ${c+h} ${r} ${c} ${r} c`,`${c-h} ${r} ${a} ${l-u} ${a} ${l} c`,`${a} ${l+u} ${c-h} ${s} ${c} ${s} c`,"h");i?e.push("B"):e.push("S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}}class PolylineAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=r.AnnotationType.POLYLINE;this.data.hasOwnCanvas=this.data.noRotate;this.data.vertices=[];if(!(this instanceof PolygonAnnotation)){this.setLineEndings(t.getArray("LE"));this.data.lineEndings=this.lineEndings}const n=t.getArray("Vertices");if(Array.isArray(n)){for(let e=0,t=n.length;e{const a=this.data.vertices;for(let t=0,r=a.length;t{for(const t of this.data.inkLists){for(let a=0,r=t.length;ae.points)));d.set("F",4);d.set("Rotate",h);const f=new s.Dict(t);d.set("BS",f);f.set("W",u);d.set("C",Array.from(i,(e=>e/255)));d.set("CA",o);const g=new s.Dict(t);d.set("AP",g);a?g.set("N",a):g.set("N",n);return d}static async createNewAppearanceStream(e,t,a){const{color:r,rect:c,paths:l,thickness:h,opacity:u}=e,d=[`${h} w 1 J 1 j`,`${(0,i.getPdfColor)(r,!1)}`];1!==u&&d.push("/R0 gs");const f=[];for(const{bezier:e}of l){f.length=0;f.push(`${(0,n.numberToString)(e[0])} ${(0,n.numberToString)(e[1])} m`);for(let t=2,a=e.length;t{e.push(`${t[0].x} ${t[0].y} m`,`${t[1].x} ${t[1].y} l`,`${t[3].x} ${t[3].y} l`,`${t[2].x} ${t[2].y} l`,"f");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.popupRef=null}}class UnderlineAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=r.AnnotationType.UNDERLINE;if(this.data.quadPoints=getQuadPoints(t,null)){if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],r=t.get("CA");this._setDefaultAppearance({xref:a,extra:"[] 0 d 0.571 w",strokeColor:e,strokeAlpha:r,pointsCallback:(e,t)=>{e.push(`${t[2].x} ${t[2].y+1.3} m`,`${t[3].x} ${t[3].y+1.3} l`,"S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.popupRef=null}}class SquigglyAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=r.AnnotationType.SQUIGGLY;if(this.data.quadPoints=getQuadPoints(t,null)){if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],r=t.get("CA");this._setDefaultAppearance({xref:a,extra:"[] 0 d 1 w",strokeColor:e,strokeAlpha:r,pointsCallback:(e,t)=>{const a=(t[0].y-t[2].y)/6;let r=a,n=t[2].x;const i=t[2].y,s=t[3].x;e.push(`${n} ${i+r} m`);do{n+=2;r=0===r?a:0;e.push(`${n} ${i+r} l`)}while(n{e.push((t[0].x+t[2].x)/2+" "+(t[0].y+t[2].y)/2+" m",(t[1].x+t[3].x)/2+" "+(t[1].y+t[3].y)/2+" l","S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.popupRef=null}}class StampAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=r.AnnotationType.STAMP;this.data.hasOwnCanvas=this.data.noRotate}static async createImage(e,t){const{width:a,height:n}=e,i=new OffscreenCanvas(a,n),c=i.getContext("2d",{alpha:!0});c.drawImage(e,0,0);const l=c.getImageData(0,0,a,n).data,h=new Uint32Array(l.buffer),u=h.some(r.FeatureTest.isLittleEndian?e=>e>>>24!=255:e=>255!=(255&e));if(u){c.fillStyle="white";c.fillRect(0,0,a,n);c.drawImage(e,0,0)}const d=i.convertToBlob({type:"image/jpeg",quality:1}).then((e=>e.arrayBuffer())),f=s.Name.get("XObject"),g=s.Name.get("Image"),p=new s.Dict(t);p.set("Type",f);p.set("Subtype",g);p.set("BitsPerComponent",8);p.set("ColorSpace",s.Name.get("DeviceRGB"));p.set("Filter",s.Name.get("DCTDecode"));p.set("BBox",[0,0,a,n]);p.set("Width",a);p.set("Height",n);let m=null;if(u){const e=new Uint8Array(h.length);if(r.FeatureTest.isLittleEndian)for(let t=0,a=h.length;t>>24;else for(let t=0,a=h.length;t=0&&o<=1?o:null}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FakeUnicodeFont=void 0;t.createDefaultAppearance=function createDefaultAppearance({fontSize:e,fontName:t,fontColor:a}){return`/${(0,n.escapePDFName)(t)} ${e} Tf ${getPdfColor(a,!0)}`};t.getPdfColor=getPdfColor;t.parseAppearanceStream=function parseAppearanceStream(e,t,a){return new AppearanceStreamEvaluator(e,t,a).parse()};t.parseDefaultAppearance=function parseDefaultAppearance(e){return new DefaultAppearanceEvaluator(e).parse()};var r=a(4),n=a(3),i=a(2),s=a(12),o=a(13),c=a(59),l=a(57),h=a(8);class DefaultAppearanceEvaluator extends o.EvaluatorPreprocessor{constructor(e){super(new h.StringStream(e))}parse(){const e={fn:0,args:[]},t={fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3)};try{for(;;){e.args.length=0;if(!this.read(e))break;if(0!==this.savedStatesDepth)continue;const{fn:a,args:n}=e;switch(0|a){case i.OPS.setFont:const[e,a]=n;e instanceof r.Name&&(t.fontName=e.name);"number"==typeof a&&a>0&&(t.fontSize=a);break;case i.OPS.setFillRGBColor:s.ColorSpace.singletons.rgb.getRgbItem(n,0,t.fontColor,0);break;case i.OPS.setFillGray:s.ColorSpace.singletons.gray.getRgbItem(n,0,t.fontColor,0);break;case i.OPS.setFillCMYKColor:s.ColorSpace.singletons.cmyk.getRgbItem(n,0,t.fontColor,0)}}}catch(e){(0,i.warn)(`parseDefaultAppearance - ignoring errors: "${e}".`)}return t}}class AppearanceStreamEvaluator extends o.EvaluatorPreprocessor{constructor(e,t,a){super(e);this.stream=e;this.evaluatorOptions=t;this.xref=a;this.resources=e.dict?.get("Resources")}parse(){const e={fn:0,args:[]};let t={scaleFactor:1,fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3),fillColorSpace:s.ColorSpace.singletons.gray},a=!1;const n=[];try{for(;;){e.args.length=0;if(a||!this.read(e))break;const{fn:o,args:c}=e;switch(0|o){case i.OPS.save:n.push({scaleFactor:t.scaleFactor,fontSize:t.fontSize,fontName:t.fontName,fontColor:t.fontColor.slice(),fillColorSpace:t.fillColorSpace});break;case i.OPS.restore:t=n.pop()||t;break;case i.OPS.setTextMatrix:t.scaleFactor*=Math.hypot(c[0],c[1]);break;case i.OPS.setFont:const[e,o]=c;e instanceof r.Name&&(t.fontName=e.name);"number"==typeof o&&o>0&&(t.fontSize=o*t.scaleFactor);break;case i.OPS.setFillColorSpace:t.fillColorSpace=s.ColorSpace.parse({cs:c[0],xref:this.xref,resources:this.resources,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:this._localColorSpaceCache});break;case i.OPS.setFillColor:t.fillColorSpace.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.setFillRGBColor:s.ColorSpace.singletons.rgb.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.setFillGray:s.ColorSpace.singletons.gray.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.setFillCMYKColor:s.ColorSpace.singletons.cmyk.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.showText:case i.OPS.showSpacedText:case i.OPS.nextLineShowText:case i.OPS.nextLineSetSpacingShowText:a=!0}}}catch(e){(0,i.warn)(`parseAppearanceStream - ignoring errors: "${e}".`)}this.stream.reset();delete t.scaleFactor;delete t.fillColorSpace;return t}get _localColorSpaceCache(){return(0,i.shadow)(this,"_localColorSpaceCache",new c.LocalColorSpaceCache)}get _pdfFunctionFactory(){const e=new l.PDFFunctionFactory({xref:this.xref,isEvalSupported:this.evaluatorOptions.isEvalSupported});return(0,i.shadow)(this,"_pdfFunctionFactory",e)}}function getPdfColor(e,t){if(e[0]===e[1]&&e[1]===e[2]){const a=e[0]/255;return`${(0,n.numberToString)(a)} ${t?"g":"G"}`}return Array.from(e,(e=>(0,n.numberToString)(e/255))).join(" ")+" "+(t?"rg":"RG")}class FakeUnicodeFont{constructor(e,t){this.xref=e;this.widths=null;this.firstChar=1/0;this.lastChar=-1/0;this.fontFamily=t;const a=new OffscreenCanvas(1,1);this.ctxMeasure=a.getContext("2d");FakeUnicodeFont._fontNameId||(FakeUnicodeFont._fontNameId=1);this.fontName=r.Name.get(`InvalidPDFjsFont_${t}_${FakeUnicodeFont._fontNameId++}`)}get toUnicodeRef(){if(!FakeUnicodeFont._toUnicodeRef){const e="/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo\n<< /Registry (Adobe)\n/Ordering (UCS) /Supplement 0 >> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000> \nendcodespacerange\n1 beginbfrange\n<0000> <0000>\nendbfrange\nendcmap CMapName currentdict /CMap defineresource pop end end",t=FakeUnicodeFont.toUnicodeStream=new h.StringStream(e),a=new r.Dict(this.xref);t.dict=a;a.set("Length",e.length);FakeUnicodeFont._toUnicodeRef=this.xref.getNewPersistentRef(t)}return FakeUnicodeFont._toUnicodeRef}get fontDescriptorRef(){if(!FakeUnicodeFont._fontDescriptorRef){const e=new r.Dict(this.xref);e.set("Type",r.Name.get("FontDescriptor"));e.set("FontName",this.fontName);e.set("FontFamily","MyriadPro Regular");e.set("FontBBox",[0,0,0,0]);e.set("FontStretch",r.Name.get("Normal"));e.set("FontWeight",400);e.set("ItalicAngle",0);FakeUnicodeFont._fontDescriptorRef=this.xref.getNewPersistentRef(e)}return FakeUnicodeFont._fontDescriptorRef}get descendantFontRef(){const e=new r.Dict(this.xref);e.set("BaseFont",this.fontName);e.set("Type",r.Name.get("Font"));e.set("Subtype",r.Name.get("CIDFontType0"));e.set("CIDToGIDMap",r.Name.get("Identity"));e.set("FirstChar",this.firstChar);e.set("LastChar",this.lastChar);e.set("FontDescriptor",this.fontDescriptorRef);e.set("DW",1e3);const t=[],a=[...this.widths.entries()].sort();let n=null,i=null;for(const[e,r]of a)if(n)if(e===n+i.length)i.push(r);else{t.push(n,i);n=e;i=[r]}else{n=e;i=[r]}n&&t.push(n,i);e.set("W",t);const s=new r.Dict(this.xref);s.set("Ordering","Identity");s.set("Registry","Adobe");s.set("Supplement",0);e.set("CIDSystemInfo",s);return this.xref.getNewPersistentRef(e)}get baseFontRef(){const e=new r.Dict(this.xref);e.set("BaseFont",this.fontName);e.set("Type",r.Name.get("Font"));e.set("Subtype",r.Name.get("Type0"));e.set("Encoding",r.Name.get("Identity-H"));e.set("DescendantFonts",[this.descendantFontRef]);e.set("ToUnicode",this.toUnicodeRef);return this.xref.getNewPersistentRef(e)}get resources(){const e=new r.Dict(this.xref),t=new r.Dict(this.xref);t.set(this.fontName.name,this.baseFontRef);e.set("Font",t);return e}_createContext(){this.widths=new Map;this.ctxMeasure.font=`1000px ${this.fontFamily}`;return this.ctxMeasure}createFontResources(e){const t=this._createContext();for(const a of e.split(/\r\n?|\n/))for(const e of a.split("")){const a=e.charCodeAt(0);if(this.widths.has(a))continue;const r=t.measureText(e),n=Math.ceil(r.width);this.widths.set(a,n);this.firstChar=Math.min(a,this.firstChar);this.lastChar=Math.max(a,this.lastChar)}return this.resources}createAppearance(e,t,a,s,o,c){const l=this._createContext(),u=[];let d=-1/0;for(const t of e.split(/\r\n?|\n/)){u.push(t);const e=l.measureText(t).width;d=Math.max(d,e);for(const e of t.split("")){const t=e.charCodeAt(0);let a=this.widths.get(t);if(void 0===a){const r=l.measureText(e);a=Math.ceil(r.width);this.widths.set(t,a);this.firstChar=Math.min(t,this.firstChar);this.lastChar=Math.max(t,this.lastChar)}}}d*=s/1e3;const[f,g,p,m]=t;let b=p-f,y=m-g;a%180!=0&&([b,y]=[y,b]);let w=1;d>b&&(w=b/d);let S=1;const x=i.LINE_FACTOR*s,C=i.LINE_DESCENT_FACTOR*s,k=x*u.length;k>y&&(S=y/k);const v=s*Math.min(w,S),F=["q",`0 0 ${(0,n.numberToString)(b)} ${(0,n.numberToString)(y)} re W n`,"BT",`1 0 0 1 0 ${(0,n.numberToString)(y+C)} Tm 0 Tc ${getPdfColor(o,!0)}`,`/${this.fontName.name} ${(0,n.numberToString)(v)} Tf`],{resources:O}=this;if(1!==(c="number"==typeof c&&c>=0&&c<=1?c:1)){F.push("/R0 gs");const e=new r.Dict(this.xref),t=new r.Dict(this.xref);t.set("ca",c);t.set("CA",c);t.set("Type",r.Name.get("ExtGState"));e.set("R0",t);O.set("ExtGState",e)}const T=(0,n.numberToString)(x);for(const e of u)F.push(`0 -${T} Td <${(0,n.stringToUTF16HexString)(e)}> Tj`);F.push("ET","Q");const M=F.join("\n"),D=new r.Dict(this.xref);D.set("Subtype",r.Name.get("Form"));D.set("Type",r.Name.get("XObject"));D.set("BBox",[0,0,b,y]);D.set("Length",M.length);D.set("Resources",O);if(a){const e=(0,n.getRotationMatrix)(a,b,y);D.set("Matrix",e)}const E=new h.StringStream(M);E.dict=D;return E}}t.FakeUnicodeFont=FakeUnicodeFont},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ColorSpace=void 0;var r=a(2),n=a(4),i=a(5),s=a(3);class ColorSpace{constructor(e,t){this.constructor===ColorSpace&&(0,r.unreachable)("Cannot initialize ColorSpace.");this.name=e;this.numComps=t}getRgb(e,t){const a=new Uint8ClampedArray(3);this.getRgbItem(e,t,a,0);return a}getRgbItem(e,t,a,n){(0,r.unreachable)("Should not call ColorSpace.getRgbItem")}getRgbBuffer(e,t,a,n,i,s,o){(0,r.unreachable)("Should not call ColorSpace.getRgbBuffer")}getOutputLength(e,t){(0,r.unreachable)("Should not call ColorSpace.getOutputLength")}isPassthrough(e){return!1}isDefaultDecode(e,t){return ColorSpace.isDefaultDecode(e,this.numComps)}fillRgb(e,t,a,r,n,i,s,o,c){const l=t*a;let h=null;const u=1<u&&"DeviceGray"!==this.name&&"DeviceRGB"!==this.name){const t=s<=8?new Uint8Array(u):new Uint16Array(u);for(let e=0;e=.99554525?1:this.#m(0,1,1.055*e**(1/2.4)-.055)}#m(e,t,a){return Math.max(e,Math.min(t,a))}#b(e){return e<0?-this.#b(-e):e>8?((e+16)/116)**3:e*CalRGBCS.#u}#y(e,t,a){if(0===e[0]&&0===e[1]&&0===e[2]){a[0]=t[0];a[1]=t[1];a[2]=t[2];return}const r=this.#b(0),n=(1-r)/(1-this.#b(e[0])),i=1-n,s=(1-r)/(1-this.#b(e[1])),o=1-s,c=(1-r)/(1-this.#b(e[2])),l=1-c;a[0]=t[0]*n+i;a[1]=t[1]*s+o;a[2]=t[2]*c+l}#w(e,t,a){if(1===e[0]&&1===e[2]){a[0]=t[0];a[1]=t[1];a[2]=t[2];return}const r=a;this.#d(CalRGBCS.#n,t,r);const n=CalRGBCS.#c;this.#f(e,r,n);this.#d(CalRGBCS.#i,n,a)}#S(e,t,a){const r=a;this.#d(CalRGBCS.#n,t,r);const n=CalRGBCS.#c;this.#g(e,r,n);this.#d(CalRGBCS.#i,n,a)}#r(e,t,a,r,n){const i=this.#m(0,1,e[t]*n),s=this.#m(0,1,e[t+1]*n),o=this.#m(0,1,e[t+2]*n),c=1===i?1:i**this.GR,l=1===s?1:s**this.GG,h=1===o?1:o**this.GB,u=this.MXA*c+this.MXB*l+this.MXC*h,d=this.MYA*c+this.MYB*l+this.MYC*h,f=this.MZA*c+this.MZB*l+this.MZC*h,g=CalRGBCS.#l;g[0]=u;g[1]=d;g[2]=f;const p=CalRGBCS.#h;this.#w(this.whitePoint,g,p);const m=CalRGBCS.#l;this.#y(this.blackPoint,p,m);const b=CalRGBCS.#h;this.#S(CalRGBCS.#o,m,b);const y=CalRGBCS.#l;this.#d(CalRGBCS.#s,b,y);a[r]=255*this.#p(y[0]);a[r+1]=255*this.#p(y[1]);a[r+2]=255*this.#p(y[2])}getRgbItem(e,t,a,r){this.#r(e,t,a,r,1)}getRgbBuffer(e,t,a,r,n,i,s){const o=1/((1<this.amax||this.bmin>this.bmax){(0,r.info)("Invalid Range, falling back to defaults");this.amin=-100;this.amax=100;this.bmin=-100;this.bmax=100}}#x(e){return e>=6/29?e**3:108/841*(e-4/29)}#A(e,t,a,r){return a+e*(r-a)/t}#r(e,t,a,r,n){let i=e[t],s=e[t+1],o=e[t+2];if(!1!==a){i=this.#A(i,a,0,100);s=this.#A(s,a,this.amin,this.amax);o=this.#A(o,a,this.bmin,this.bmax)}s>this.amax?s=this.amax:sthis.bmax?o=this.bmax:o{Object.defineProperty(t,"__esModule",{value:!0});t.PartialEvaluator=t.EvaluatorPreprocessor=void 0;var r=a(2),n=a(14),i=a(4),s=a(34),o=a(37),c=a(41),l=a(50),h=a(51),u=a(42),d=a(57),f=a(16),g=a(59),p=a(8),m=a(5),b=a(60),y=a(12),w=a(18),S=a(38),x=a(61),C=a(39),k=a(45),v=a(40),F=a(62),O=a(63),T=a(64),M=a(65);const D=Object.freeze({maxImageSize:-1,disableFontFace:!1,ignoreErrors:!1,isEvalSupported:!0,isOffscreenCanvasSupported:!1,canvasMaxAreaInBytes:-1,fontExtraProperties:!1,useSystemFonts:!0,cMapUrl:null,standardFontDataUrl:null}),E=1,N=2,R=Promise.resolve();function normalizeBlendMode(e,t=!1){if(Array.isArray(e)){for(const t of e){const e=normalizeBlendMode(t,!0);if(e)return e}(0,r.warn)(`Unsupported blend mode Array: ${e}`);return"source-over"}if(!(e instanceof i.Name))return t?null:"source-over";switch(e.name){case"Normal":case"Compatible":return"source-over";case"Multiply":return"multiply";case"Screen":return"screen";case"Overlay":return"overlay";case"Darken":return"darken";case"Lighten":return"lighten";case"ColorDodge":return"color-dodge";case"ColorBurn":return"color-burn";case"HardLight":return"hard-light";case"SoftLight":return"soft-light";case"Difference":return"difference";case"Exclusion":return"exclusion";case"Hue":return"hue";case"Saturation":return"saturation";case"Color":return"color";case"Luminosity":return"luminosity"}if(t)return null;(0,r.warn)(`Unsupported blend mode: ${e.name}`);return"source-over"}function incrementCachedImageMaskCount(e){e.fn===r.OPS.paintImageMaskXObject&&e.args[0]?.count>0&&e.args[0].count++}class TimeSlotManager{static TIME_SLOT_DURATION_MS=20;static CHECK_TIME_EVERY=100;constructor(){this.reset()}check(){if(++this.checkedd){const e="Image exceeded maximum allowed size and was removed.";if(this.options.ignoreErrors){(0,r.warn)(e);return}throw new Error(e)}let f;c.has("OC")&&(f=await this.parseMarkedContentProps(c.get("OC"),e));let g,p;if(c.get("IM","ImageMask")||!1){const e=c.get("I","Interpolate"),a=h+7>>3,o=t.getBytes(a*u),d=c.getArray("D","Decode");if(this.parsingType3Font){g=M.PDFImage.createRawMask({imgArray:o,width:h,height:u,imageIsFromDecodeStream:t instanceof w.DecodeStream,inverseDecode:d?.[0]>0,interpolate:e});g.cached=!!i;p=[g];n.addImageOps(r.OPS.paintImageMaskXObject,p,f);if(i){const e={fn:r.OPS.paintImageMaskXObject,args:p,optionalContent:f};s.set(i,l,e);l&&this._regionalImageCache.set(null,l,e)}return}g=await M.PDFImage.createMask({imgArray:o,width:h,height:u,imageIsFromDecodeStream:t instanceof w.DecodeStream,inverseDecode:d?.[0]>0,interpolate:e,isOffscreenCanvasSupported:this.options.isOffscreenCanvasSupported});if(g.isSingleOpaquePixel){n.addImageOps(r.OPS.paintSolidColorImageMask,[],f);if(i){const e={fn:r.OPS.paintSolidColorImageMask,args:[],optionalContent:f};s.set(i,l,e);l&&this._regionalImageCache.set(null,l,e)}return}const m=`mask_${this.idFactory.createObjId()}`;n.addDependency(m);this._sendImgData(m,g);p=[{data:m,width:g.width,height:g.height,interpolate:g.interpolate,count:1}];n.addImageOps(r.OPS.paintImageMaskXObject,p,f);if(i){const e={fn:r.OPS.paintImageMaskXObject,args:p,optionalContent:f};s.set(i,l,e);l&&this._regionalImageCache.set(null,l,e)}return}if(a&&!c.has("SMask")&&!c.has("Mask")&&h+u<200){const i=new M.PDFImage({xref:this.xref,res:e,image:t,isInline:a,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:o});g=await i.createImageData(!0,!1);n.isOffscreenCanvasSupported=this.options.isOffscreenCanvasSupported;n.addImageOps(r.OPS.paintInlineImageXObject,[g],f);return}let m=`img_${this.idFactory.createObjId()}`,b=!1;if(this.parsingType3Font)m=`${this.idFactory.getDocId()}_type3_${m}`;else if(l){b=this.globalImageCache.shouldCache(l,this.pageIndex);b&&(m=`${this.idFactory.getDocId()}_${m}`)}n.addDependency(m);p=[m,h,u];M.PDFImage.buildImage({xref:this.xref,res:e,image:t,isInline:a,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:o}).then((async e=>{g=await e.createImageData(!1,this.options.isOffscreenCanvasSupported);if(i&&l&&b){const e=g.bitmap?g.width*g.height*4:g.data.length;this.globalImageCache.addByteSize(l,e)}return this._sendImgData(m,g,b)})).catch((e=>{(0,r.warn)(`Unable to decode image "${m}": "${e}".`);return this._sendImgData(m,null,b)}));n.addImageOps(r.OPS.paintImageXObject,p,f);if(i){const e={fn:r.OPS.paintImageXObject,args:p,optionalContent:f};s.set(i,l,e);if(l){this._regionalImageCache.set(null,l,e);if(b){(0,r.assert)(!a,"Cannot cache an inline image globally.");this.globalImageCache.setData(l,{objId:m,fn:r.OPS.paintImageXObject,args:p,optionalContent:f,byteSize:0})}}}}handleSMask(e,t,a,r,n,i){const s=e.get("G"),o={subtype:e.get("S").name,backdrop:e.get("BC")},c=e.get("TR");if((0,d.isPDFFunction)(c)){const e=this._pdfFunctionFactory.create(c),t=new Uint8Array(256),a=new Float32Array(1);for(let r=0;r<256;r++){a[0]=r/255;e(a,0,a,0);t[r]=255*a[0]|0}o.transferMap=t}return this.buildFormXObject(t,s,o,a,r,n.state.clone(),i)}handleTransferFunction(e){let t;if(Array.isArray(e))t=e;else{if(!(0,d.isPDFFunction)(e))return null;t=[e]}const a=[];let r=0,n=0;for(const e of t){const t=this.xref.fetchIfRef(e);r++;if((0,i.isName)(t,"Identity")){a.push(null);continue}if(!(0,d.isPDFFunction)(t))return null;const s=this._pdfFunctionFactory.create(t),o=new Uint8Array(256),c=new Float32Array(1);for(let e=0;e<256;e++){c[0]=e/255;s(c,0,c,0);o[e]=255*c[0]|0}a.push(o);n++}return 1!==r&&4!==r||0===n?null:a}handleTilingType(e,t,a,n,s,o,c,h){const u=new T.OperatorList,d=i.Dict.merge({xref:this.xref,dictArray:[s.get("Resources"),a]});return this.getOperatorList({stream:n,task:c,resources:d,operatorList:u}).then((function(){const a=u.getIR(),r=(0,l.getTilingPatternIR)(a,s,t);o.addDependencies(u.dependencies);o.addOp(e,r);s.objId&&h.set(null,s.objId,{operatorListIR:a,dict:s})})).catch((e=>{if(!(e instanceof r.AbortException)){if(!this.options.ignoreErrors)throw e;(0,r.warn)(`handleTilingType - ignoring pattern: "${e}".`)}}))}handleSetFont(e,t,a,r,n,o,c=null,l=null){const h=t?.[0]instanceof i.Name?t[0].name:null;return this.loadFont(h,a,e,c,l).then((t=>t.font.isType3Font?t.loadType3Data(this,e,n).then((function(){r.addDependencies(t.type3Dependencies);return t})).catch((e=>new TranslatedFont({loadedName:"g_font_error",font:new s.ErrorFont(`Type3 font load error: ${e}`),dict:t.font,evaluatorOptions:this.options}))):t)).then((e=>{o.font=e.font;e.send(this.handler);return e.loadedName}))}handleText(e,t){const a=t.font,n=a.charsToGlyphs(e);if(a.data){(!!(t.textRenderingMode&r.TextRenderingMode.ADD_TO_PATH_FLAG)||"Pattern"===t.fillColorSpace.name||a.disableFontFace||this.options.disableFontFace)&&PartialEvaluator.buildFontPaths(a,n,this.handler,this.options)}return n}ensureStateFont(e){if(e.font)return;const t=new r.FormatError("Missing setFont (Tf) operator before text rendering operator.");if(!this.options.ignoreErrors)throw t;(0,r.warn)(`ensureStateFont: "${t}".`)}async setGState({resources:e,gState:t,operatorList:a,cacheKey:n,task:s,stateManager:o,localGStateCache:c,localColorSpaceCache:l}){const h=t.objId;let u=!0;const d=[];let f=Promise.resolve();for(const n of t.getKeys()){const c=t.get(n);switch(n){case"Type":break;case"LW":case"LC":case"LJ":case"ML":case"D":case"RI":case"FL":case"CA":case"ca":d.push([n,c]);break;case"Font":u=!1;f=f.then((()=>this.handleSetFont(e,null,c[0],a,s,o.state).then((function(e){a.addDependency(e);d.push([n,[e,c[1]]])}))));break;case"BM":d.push([n,normalizeBlendMode(c)]);break;case"SMask":if((0,i.isName)(c,"None")){d.push([n,!1]);break}if(c instanceof i.Dict){u=!1;f=f.then((()=>this.handleSMask(c,e,a,s,o,l)));d.push([n,!0])}else(0,r.warn)("Unsupported SMask type");break;case"TR":const t=this.handleTransferFunction(c);d.push([n,t]);break;case"OP":case"op":case"OPM":case"BG":case"BG2":case"UCR":case"UCR2":case"TR2":case"HT":case"SM":case"SA":case"AIS":case"TK":(0,r.info)("graphic state operator "+n);break;default:(0,r.info)("Unknown graphic state operator "+n)}}return f.then((function(){d.length>0&&a.addOp(r.OPS.setGState,[d]);u&&c.set(n,h,d)}))}loadFont(e,t,a,n=null,o=null){const errorFont=async()=>new TranslatedFont({loadedName:"g_font_error",font:new s.ErrorFont(`Font "${e}" is not available.`),dict:t,evaluatorOptions:this.options});let c;if(t)t instanceof i.Ref&&(c=t);else{const t=a.get("Font");t&&(c=t.getRaw(e))}if(c){if(this.parsingType3Font&&this.type3FontRefs.has(c))return errorFont();if(this.fontCache.has(c))return this.fontCache.get(c);t=this.xref.fetchIfRef(c)}if(!(t instanceof i.Dict)){if(!this.options.ignoreErrors&&!this.parsingType3Font){(0,r.warn)(`Font "${e}" is not available.`);return errorFont()}(0,r.warn)(`Font "${e}" is not available -- attempting to fallback to a default font.`);t=n||PartialEvaluator.fallbackFontDict}if(t.cacheKey&&this.fontCache.has(t.cacheKey))return this.fontCache.get(t.cacheKey);const l=new r.PromiseCapability;let h;try{h=this.preEvaluateFont(t);h.cssFontInfo=o}catch(e){(0,r.warn)(`loadFont - preEvaluateFont failed: "${e}".`);return errorFont()}const{descriptor:u,hash:d}=h,f=c instanceof i.Ref;let g;if(d&&u instanceof i.Dict){const e=u.fontAliases||=Object.create(null);if(e[d]){const t=e[d].aliasRef;if(f&&t&&this.fontCache.has(t)){this.fontCache.putAlias(c,t);return this.fontCache.get(c)}}else e[d]={fontID:this.idFactory.createFontId()};f&&(e[d].aliasRef=c);g=e[d].fontID}else g=this.idFactory.createFontId();(0,r.assert)(g?.startsWith("f"),'The "fontID" must be (correctly) defined.');if(f)this.fontCache.put(c,l.promise);else{t.cacheKey=`cacheKey_${g}`;this.fontCache.put(t.cacheKey,l.promise)}t.loadedName=`${this.idFactory.getDocId()}_${g}`;this.translateFont(h).then((e=>{l.resolve(new TranslatedFont({loadedName:t.loadedName,font:e,dict:t,evaluatorOptions:this.options}))})).catch((e=>{(0,r.warn)(`loadFont - translateFont failed: "${e}".`);l.resolve(new TranslatedFont({loadedName:t.loadedName,font:new s.ErrorFont(e instanceof Error?e.message:e),dict:t,evaluatorOptions:this.options}))}));return l.promise}buildPath(e,t,a,n=!1){const i=e.length-1;a||(a=[]);if(i<0||e.fnArray[i]!==r.OPS.constructPath){if(n){(0,r.warn)(`Encountered path operator "${t}" inside of a text object.`);e.addOp(r.OPS.save,null)}let i;switch(t){case r.OPS.rectangle:const e=a[0]+a[2],t=a[1]+a[3];i=[Math.min(a[0],e),Math.max(a[0],e),Math.min(a[1],t),Math.max(a[1],t)];break;case r.OPS.moveTo:case r.OPS.lineTo:i=[a[0],a[0],a[1],a[1]];break;default:i=[1/0,-1/0,1/0,-1/0]}e.addOp(r.OPS.constructPath,[[t],a,i]);n&&e.addOp(r.OPS.restore,null)}else{const n=e.argsArray[i];n[0].push(t);n[1].push(...a);const s=n[2];switch(t){case r.OPS.rectangle:const e=a[0]+a[2],t=a[1]+a[3];s[0]=Math.min(s[0],a[0],e);s[1]=Math.max(s[1],a[0],e);s[2]=Math.min(s[2],a[1],t);s[3]=Math.max(s[3],a[1],t);break;case r.OPS.moveTo:case r.OPS.lineTo:s[0]=Math.min(s[0],a[0]);s[1]=Math.max(s[1],a[0]);s[2]=Math.min(s[2],a[1]);s[3]=Math.max(s[3],a[1])}}}parseColorSpace({cs:e,resources:t,localColorSpaceCache:a}){return y.ColorSpace.parseAsync({cs:e,xref:this.xref,resources:t,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:a}).catch((e=>{if(e instanceof r.AbortException)return null;if(this.options.ignoreErrors){(0,r.warn)(`parseColorSpace - ignoring ColorSpace: "${e}".`);return null}throw e}))}parseShading({shading:e,resources:t,localColorSpaceCache:a,localShadingPatternCache:r}){let n=r.get(e);if(!n){const i=l.Pattern.parseShading(e,this.xref,t,this._pdfFunctionFactory,a).getIR();n=`pattern_${this.idFactory.createObjId()}`;this.parsingType3Font&&(n=`${this.idFactory.getDocId()}_type3_${n}`);r.set(e,n);this.parsingType3Font?this.handler.send("commonobj",[n,"Pattern",i]):this.handler.send("obj",[n,this.pageIndex,"Pattern",i])}return n}handleColorN(e,t,a,n,s,o,c,h,u,d){const f=a.pop();if(f instanceof i.Name){const g=s.getRaw(f.name),p=g instanceof i.Ref&&u.getByRef(g);if(p)try{const r=n.base?n.base.getRgb(a,0):null,i=(0,l.getTilingPatternIR)(p.operatorListIR,p.dict,r);e.addOp(t,i);return}catch{}const b=this.xref.fetchIfRef(g);if(b){const i=b instanceof m.BaseStream?b.dict:b,s=i.get("PatternType");if(s===E){const r=n.base?n.base.getRgb(a,0):null;return this.handleTilingType(t,r,o,b,i,e,c,u)}if(s===N){const a=i.get("Shading"),r=i.getArray("Matrix"),n=this.parseShading({shading:a,resources:o,localColorSpaceCache:h,localShadingPatternCache:d});e.addOp(t,["Shading",n,r]);return}throw new r.FormatError(`Unknown PatternType: ${s}`)}}throw new r.FormatError(`Unknown PatternName: ${f}`)}_parseVisibilityExpression(e,t,a){if(++t>10){(0,r.warn)("Visibility expression is too deeply nested");return}const n=e.length,s=this.xref.fetchIfRef(e[0]);if(!(n<2)&&s instanceof i.Name){switch(s.name){case"And":case"Or":case"Not":a.push(s.name);break;default:(0,r.warn)(`Invalid operator ${s.name} in visibility expression`);return}for(let r=1;r0)return{type:"OCMD",expression:t}}const t=a.get("OCGs");if(Array.isArray(t)||t instanceof i.Dict){const e=[];if(Array.isArray(t))for(const a of t)e.push(a.toString());else e.push(t.objId);return{type:n,ids:e,policy:a.get("P")instanceof i.Name?a.get("P").name:null,expression:null}}if(t instanceof i.Ref)return{type:n,id:t.toString()}}return null}getOperatorList({stream:e,task:t,resources:a,operatorList:n,initialState:s=null,fallbackFontDict:o=null}){a||=i.Dict.empty;s||=new EvalState;if(!n)throw new Error('getOperatorList: missing "operatorList" parameter');const c=this,l=this.xref;let h=!1;const u=new g.LocalImageCache,d=new g.LocalColorSpaceCache,f=new g.LocalGStateCache,p=new g.LocalTilingPatternCache,b=new Map,w=a.get("XObject")||i.Dict.empty,S=a.get("Pattern")||i.Dict.empty,x=new StateManager(s),C=new EvaluatorPreprocessor(e,l,x),k=new TimeSlotManager;function closePendingRestoreOPS(e){for(let e=0,t=C.savedStatesDepth;e0&&n.addOp(r.OPS.setGState,[t]);e=null;continue}}next(new Promise((function(e,s){if(!D)throw new r.FormatError("GState must be referred to by name.");const o=a.get("ExtGState");if(!(o instanceof i.Dict))throw new r.FormatError("ExtGState should be a dictionary.");const l=o.get(M);if(!(l instanceof i.Dict))throw new r.FormatError("GState should be a dictionary.");c.setGState({resources:a,gState:l,operatorList:n,cacheKey:M,task:t,stateManager:x,localGStateCache:f,localColorSpaceCache:d}).then(e,s)})).catch((function(e){if(!(e instanceof r.AbortException)){if(!c.options.ignoreErrors)throw e;(0,r.warn)(`getOperatorList - ignoring ExtGState: "${e}".`)}})));return;case r.OPS.moveTo:case r.OPS.lineTo:case r.OPS.curveTo:case r.OPS.curveTo2:case r.OPS.curveTo3:case r.OPS.closePath:case r.OPS.rectangle:c.buildPath(n,s,e,h);continue;case r.OPS.markPoint:case r.OPS.markPointProps:case r.OPS.beginCompat:case r.OPS.endCompat:continue;case r.OPS.beginMarkedContentProps:if(!(e[0]instanceof i.Name)){(0,r.warn)(`Expected name for beginMarkedContentProps arg0=${e[0]}`);continue}if("OC"===e[0].name){next(c.parseMarkedContentProps(e[1],a).then((e=>{n.addOp(r.OPS.beginMarkedContentProps,["OC",e])})).catch((e=>{if(!(e instanceof r.AbortException)){if(!c.options.ignoreErrors)throw e;(0,r.warn)(`getOperatorList - ignoring beginMarkedContentProps: "${e}".`)}})));return}e=[e[0].name,e[1]instanceof i.Dict?e[1].get("MCID"):null];break;case r.OPS.beginMarkedContent:case r.OPS.endMarkedContent:default:if(null!==e){for(F=0,O=e.length;F{if(!(e instanceof r.AbortException)){if(!this.options.ignoreErrors)throw e;(0,r.warn)(`getOperatorList - ignoring errors during "${t.name}" task: "${e}".`);closePendingRestoreOPS()}}))}getTextContent({stream:e,task:t,resources:a,stateManager:n=null,includeMarkedContent:s=!1,sink:o,seenStyles:c=new Set,viewBox:l,markedContentData:h=null,disableNormalization:u=!1}){a||=i.Dict.empty;n||=new StateManager(new TextState);s&&(h||={level:0});const d={items:[],styles:Object.create(null)},f={initialized:!1,str:[],totalWidth:0,totalHeight:0,width:0,height:0,vertical:!1,prevTransform:null,textAdvanceScale:0,spaceInFlowMin:0,spaceInFlowMax:0,trackingSpaceMin:1/0,negativeSpaceMax:-1/0,notASpace:-1/0,transform:null,fontName:null,hasEOL:!1},p=[" "," "];let y=0;function saveLastChar(e){const t=(y+1)%2,a=" "!==p[y]&&" "===p[t];p[y]=e;y=t;return a}function shouldAddWhitepsace(){return" "!==p[y]&&" "===p[(y+1)%2]}function resetLastChars(){p[0]=p[1]=" ";y=0}const w=this,S=this.xref,x=[];let C=null;const k=new g.LocalImageCache,v=new g.LocalGStateCache,F=new EvaluatorPreprocessor(e,S,n);let O;function pushWhitespace({width:e=0,height:t=0,transform:a=f.prevTransform,fontName:r=f.fontName}){d.items.push({str:" ",dir:"ltr",width:e,height:t,transform:a,fontName:r,hasEOL:!1})}function getCurrentTextTransform(){const e=O.font,t=[O.fontSize*O.textHScale,0,0,O.fontSize,0,O.textRise];if(e.isType3Font&&(O.fontSize<=1||e.isCharBBox)&&!(0,r.isArrayEqual)(O.fontMatrix,r.FONT_IDENTITY_MATRIX)){const a=e.bbox[3]-e.bbox[1];a>0&&(t[3]*=a*O.fontMatrix[3])}return r.Util.transform(O.ctm,r.Util.transform(O.textMatrix,t))}function ensureTextContentItem(){if(f.initialized)return f;const{font:e,loadedName:t}=O;if(!c.has(t)){c.add(t);d.styles[t]={fontFamily:e.fallbackName,ascent:e.ascent,descent:e.descent,vertical:e.vertical}}f.fontName=t;const a=f.transform=getCurrentTextTransform();if(e.vertical){f.width=f.totalWidth=Math.hypot(a[0],a[1]);f.height=f.totalHeight=0;f.vertical=!0}else{f.width=f.totalWidth=0;f.height=f.totalHeight=Math.hypot(a[2],a[3]);f.vertical=!1}const r=Math.hypot(O.textLineMatrix[0],O.textLineMatrix[1]),n=Math.hypot(O.ctm[0],O.ctm[1]);f.textAdvanceScale=n*r;const{fontSize:i}=O;f.trackingSpaceMin=.102*i;f.notASpace=.03*i;f.negativeSpaceMax=-.2*i;f.spaceInFlowMin=.102*i;f.spaceInFlowMax=.6*i;f.hasEOL=!1;f.initialized=!0;return f}function updateAdvanceScale(){if(!f.initialized)return;const e=Math.hypot(O.textLineMatrix[0],O.textLineMatrix[1]),t=Math.hypot(O.ctm[0],O.ctm[1])*e;if(t!==f.textAdvanceScale){if(f.vertical){f.totalHeight+=f.height*f.textAdvanceScale;f.height=0}else{f.totalWidth+=f.width*f.textAdvanceScale;f.width=0}f.textAdvanceScale=t}}function handleSetFont(e,n){return w.loadFont(e,n,a).then((function(e){return e.font.isType3Font?e.loadType3Data(w,a,t).catch((function(){})).then((function(){return e})):e})).then((function(e){O.loadedName=e.loadedName;O.font=e.font;O.fontMatrix=e.font.fontMatrix||r.FONT_IDENTITY_MATRIX}))}function applyInverseRotation(e,t,a){const r=Math.hypot(a[0],a[1]);return[(a[0]*e+a[1]*t)/r,(a[2]*e+a[3]*t)/r]}function compareWithLastPosition(e){const t=getCurrentTextTransform();let a=t[4],r=t[5];if(O.font?.vertical){if(al[2]||r+el[3])return!1}else if(a+el[2]||rl[3])return!1;if(!O.font||!f.prevTransform)return!0;let n=f.prevTransform[4],i=f.prevTransform[5];if(n===a&&i===r)return!0;let s=-1;t[0]&&0===t[1]&&0===t[2]?s=t[0]>0?0:180:t[1]&&0===t[0]&&0===t[3]&&(s=t[1]>0?90:270);switch(s){case 0:break;case 90:[a,r]=[r,a];[n,i]=[i,n];break;case 180:[a,r,n,i]=[-a,-r,-n,-i];break;case 270:[a,r]=[-r,-a];[n,i]=[-i,-n];break;default:[a,r]=applyInverseRotation(a,r,t);[n,i]=applyInverseRotation(n,i,f.prevTransform)}if(O.font.vertical){const e=(i-r)/f.textAdvanceScale,t=a-n,s=Math.sign(f.height);if(e.5*f.width){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(t)>f.width){appendEOL();return!0}e<=s*f.notASpace&&resetLastChars();if(e<=s*f.trackingSpaceMin)if(shouldAddWhitepsace()){resetLastChars();flushTextContentItem();pushWhitespace({height:Math.abs(e)})}else f.height+=e;else if(!addFakeSpaces(e,f.prevTransform,s))if(0===f.str.length){resetLastChars();pushWhitespace({height:Math.abs(e)})}else f.height+=e;Math.abs(t)>.25*f.width&&flushTextContentItem();return!0}const o=(a-n)/f.textAdvanceScale,c=r-i,h=Math.sign(f.width);if(o.5*f.height){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(c)>f.height){appendEOL();return!0}o<=h*f.notASpace&&resetLastChars();if(o<=h*f.trackingSpaceMin)if(shouldAddWhitepsace()){resetLastChars();flushTextContentItem();pushWhitespace({width:Math.abs(o)})}else f.width+=o;else if(!addFakeSpaces(o,f.prevTransform,h))if(0===f.str.length){resetLastChars();pushWhitespace({width:Math.abs(o)})}else f.width+=o;Math.abs(c)>.25*f.height&&flushTextContentItem();return!0}function buildTextContentItem({chars:e,extraSpacing:t}){const a=O.font;if(!e){const e=O.charSpacing+t;e&&(a.vertical?O.translateTextMatrix(0,-e):O.translateTextMatrix(e*O.textHScale,0));return}const r=a.charsToGlyphs(e),n=O.fontMatrix[0]*O.fontSize;for(let e=0,i=r.length;e0){const e=x.join("");x.length=0;buildTextContentItem({chars:e,extraSpacing:0})}break;case r.OPS.showText:if(!n.state.font){w.ensureStateFont(n.state);continue}buildTextContentItem({chars:b[0],extraSpacing:0});break;case r.OPS.nextLineShowText:if(!n.state.font){w.ensureStateFont(n.state);continue}O.carriageReturn();buildTextContentItem({chars:b[0],extraSpacing:0});break;case r.OPS.nextLineSetSpacingShowText:if(!n.state.font){w.ensureStateFont(n.state);continue}O.wordSpacing=b[0];O.charSpacing=b[1];O.carriageReturn();buildTextContentItem({chars:b[2],extraSpacing:0});break;case r.OPS.paintXObject:flushTextContentItem();C||(C=a.get("XObject")||i.Dict.empty);var D=b[0]instanceof i.Name,E=b[0].name;if(D&&k.getByName(E))break;next(new Promise((function(e,d){if(!D)throw new r.FormatError("XObject must be referred to by name.");let f=C.getRaw(E);if(f instanceof i.Ref){if(k.getByRef(f)){e();return}if(w.globalImageCache.getData(f,w.pageIndex)){e();return}f=S.fetch(f)}if(!(f instanceof m.BaseStream))throw new r.FormatError("XObject should be a stream");const g=f.dict.get("Subtype");if(!(g instanceof i.Name))throw new r.FormatError("XObject should have a Name subtype");if("Form"!==g.name){k.set(E,f.dict.objId,!0);e();return}const p=n.state.clone(),b=new StateManager(p),y=f.dict.getArray("Matrix");Array.isArray(y)&&6===y.length&&b.transform(y);enqueueChunk();const x={enqueueInvoked:!1,enqueue(e,t){this.enqueueInvoked=!0;o.enqueue(e,t)},get desiredSize(){return o.desiredSize},get ready(){return o.ready}};w.getTextContent({stream:f,task:t,resources:f.dict.get("Resources")||a,stateManager:b,includeMarkedContent:s,sink:x,seenStyles:c,viewBox:l,markedContentData:h,disableNormalization:u}).then((function(){x.enqueueInvoked||k.set(E,f.dict.objId,!0);e()}),d)})).catch((function(e){if(!(e instanceof r.AbortException)){if(!w.options.ignoreErrors)throw e;(0,r.warn)(`getTextContent - ignoring XObject: "${e}".`)}})));return;case r.OPS.setGState:D=b[0]instanceof i.Name;E=b[0].name;if(D&&v.getByName(E))break;next(new Promise((function(e,t){if(!D)throw new r.FormatError("GState must be referred to by name.");const n=a.get("ExtGState");if(!(n instanceof i.Dict))throw new r.FormatError("ExtGState should be a dictionary.");const s=n.get(E);if(!(s instanceof i.Dict))throw new r.FormatError("GState should be a dictionary.");const o=s.get("Font");if(o){flushTextContentItem();O.fontName=null;O.fontSize=o[1];handleSetFont(null,o[0]).then(e,t)}else{v.set(E,s.objId,!0);e()}})).catch((function(e){if(!(e instanceof r.AbortException)){if(!w.options.ignoreErrors)throw e;(0,r.warn)(`getTextContent - ignoring ExtGState: "${e}".`)}})));return;case r.OPS.beginMarkedContent:flushTextContentItem();if(s){h.level++;d.items.push({type:"beginMarkedContent",tag:b[0]instanceof i.Name?b[0].name:null})}break;case r.OPS.beginMarkedContentProps:flushTextContentItem();if(s){h.level++;let e=null;b[1]instanceof i.Dict&&(e=b[1].get("MCID"));d.items.push({type:"beginMarkedContentProps",id:Number.isInteger(e)?`${w.idFactory.getPageObjId()}_mc${e}`:null,tag:b[0]instanceof i.Name?b[0].name:null})}break;case r.OPS.endMarkedContent:flushTextContentItem();if(s){if(0===h.level)break;h.level--;d.items.push({type:"endMarkedContent"})}break;case r.OPS.restore:!e||e.font===O.font&&e.fontSize===O.fontSize&&e.fontName===O.fontName||flushTextContentItem()}if(d.items.length>=o.desiredSize){p=!0;break}}if(p)next(R);else{flushTextContentItem();enqueueChunk();e()}})).catch((e=>{if(!(e instanceof r.AbortException)){if(!this.options.ignoreErrors)throw e;(0,r.warn)(`getTextContent - ignoring errors during "${t.name}" task: "${e}".`);flushTextContentItem();enqueueChunk()}}))}extractDataStructures(e,t,a){const n=this.xref;let s;const l=this.readToUnicode(a.toUnicode||e.get("ToUnicode")||t.get("ToUnicode"));if(a.composite){const t=e.get("CIDSystemInfo");t instanceof i.Dict&&(a.cidSystemInfo={registry:(0,r.stringToPDFString)(t.get("Registry")),ordering:(0,r.stringToPDFString)(t.get("Ordering")),supplement:t.get("Supplement")});try{const t=e.get("CIDToGIDMap");t instanceof m.BaseStream&&(s=t.getBytes())}catch(e){if(!this.options.ignoreErrors)throw e;(0,r.warn)(`extractDataStructures - ignoring CIDToGIDMap data: "${e}".`)}}const h=[];let u,d=null;if(e.has("Encoding")){u=e.get("Encoding");if(u instanceof i.Dict){d=u.get("BaseEncoding");d=d instanceof i.Name?d.name:null;if(u.has("Differences")){const e=u.get("Differences");let t=0;for(const a of e){const e=n.fetchIfRef(a);if("number"==typeof e)t=e;else{if(!(e instanceof i.Name))throw new r.FormatError(`Invalid entry in 'Differences' array: ${e}`);h[t++]=e.name}}}}else if(u instanceof i.Name)d=u.name;else{const e="Encoding is not a Name nor a Dict";if(!this.options.ignoreErrors)throw new r.FormatError(e);(0,r.warn)(e)}"MacRomanEncoding"!==d&&"MacExpertEncoding"!==d&&"WinAnsiEncoding"!==d&&(d=null)}const f=!a.file||a.isInternalFont,g=(0,c.getSymbolsFonts)()[a.name];d&&f&&g&&(d=null);if(d)a.defaultEncoding=(0,o.getEncoding)(d);else{const e=!!(a.flags&S.FontFlags.Symbolic),t=!!(a.flags&S.FontFlags.Nonsymbolic);u=o.StandardEncoding;"TrueType"!==a.type||t||(u=o.WinAnsiEncoding);if(e||g){u=o.MacRomanEncoding;f&&(/Symbol/i.test(a.name)?u=o.SymbolSetEncoding:/Dingbats/i.test(a.name)?u=o.ZapfDingbatsEncoding:/Wingdings/i.test(a.name)&&(u=o.WinAnsiEncoding))}a.defaultEncoding=u}a.differences=h;a.baseEncodingName=d;a.hasEncoding=!!d||h.length>0;a.dict=e;return l.then((e=>{a.toUnicode=e;return this.buildToUnicode(a)})).then((e=>{a.toUnicode=e;s&&(a.cidToGidMap=this.readCidToGidMap(s,e));return a}))}_simpleFontToUnicode(e,t=!1){(0,r.assert)(!e.composite,"Must be a simple font.");const a=[],n=e.defaultEncoding.slice(),i=e.baseEncodingName,s=e.differences;for(const e in s){const t=s[e];".notdef"!==t&&(n[e]=t)}const c=(0,C.getGlyphsUnicode)();for(const r in n){let s=n[r];if(""===s)continue;let l=c[s];if(void 0!==l){a[r]=String.fromCharCode(l);continue}let h=0;switch(s[0]){case"G":3===s.length&&(h=parseInt(s.substring(1),16));break;case"g":5===s.length&&(h=parseInt(s.substring(1),16));break;case"C":case"c":if(s.length>=3&&s.length<=4){const a=s.substring(1);if(t){h=parseInt(a,16);break}h=+a;if(Number.isNaN(h)&&Number.isInteger(parseInt(a,16)))return this._simpleFontToUnicode(e,!0)}break;case"u":l=(0,v.getUnicodeForGlyph)(s,c);-1!==l&&(h=l);break;default:switch(s){case"f_h":case"f_t":case"T_h":a[r]=s.replaceAll("_","");continue}}if(h>0&&h<=1114111&&Number.isInteger(h)){if(i&&h===+r){const e=(0,o.getEncoding)(i);if(e&&(s=e[r])){a[r]=String.fromCharCode(c[s]);continue}}a[r]=String.fromCodePoint(h)}}return a}async buildToUnicode(e){e.hasIncludedToUnicodeMap=e.toUnicode?.length>0;if(e.hasIncludedToUnicodeMap){!e.composite&&e.hasEncoding&&(e.fallbackToUnicode=this._simpleFontToUnicode(e));return e.toUnicode}if(!e.composite)return new u.ToUnicodeMap(this._simpleFontToUnicode(e));if(e.composite&&(e.cMap.builtInCMap&&!(e.cMap instanceof n.IdentityCMap)||"Adobe"===e.cidSystemInfo.registry&&("GB1"===e.cidSystemInfo.ordering||"CNS1"===e.cidSystemInfo.ordering||"Japan1"===e.cidSystemInfo.ordering||"Korea1"===e.cidSystemInfo.ordering))){const{registry:t,ordering:a}=e.cidSystemInfo,s=i.Name.get(`${t}-${a}-UCS2`),o=await n.CMapFactory.create({encoding:s,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}),c=[],l=[];e.cMap.forEach((function(e,t){if(t>65535)throw new r.FormatError("Max size of CID is 65,535");const a=o.lookup(t);if(a){l.length=0;for(let e=0,t=a.length;e{if(e instanceof r.AbortException)return null;if(this.options.ignoreErrors){(0,r.warn)(`readToUnicode - ignoring ToUnicode data: "${e}".`);return null}throw e})):Promise.resolve(null):Promise.resolve(null)}readCidToGidMap(e,t){const a=[];for(let r=0,n=e.length;r>1;(0!==n||t.has(i))&&(a[i]=n)}return a}extractWidths(e,t,a){const r=this.xref;let n=[],s=0;const o=[];let c,l,h,u,d,f,g,p;if(a.composite){s=e.has("DW")?e.get("DW"):1e3;p=e.get("W");if(p)for(l=0,h=p.length;l{if(g){const e=[];let a=u;for(const t of g)e[a++]=this.xref.fetchIfRef(t);t.widths=e}else t.widths=this.buildCharCodeToWidth(n.widths,t);return new s.Font(e,y,t)}))}(e=new i.Dict(null)).set("FontName",i.Name.get(l));e.set("FontBBox",t.getArray("FontBBox")||[0,0,0,0])}let y=e.get("FontName"),w=t.get("BaseFont");"string"==typeof y&&(y=i.Name.get(y));"string"==typeof w&&(w=i.Name.get(w));const C=y?.name,k=w?.name;if(!m&&C!==k){(0,r.info)(`The FontDescriptor's FontName is "${C}" but should be the same as the Font's BaseFont "${k}".`);C&&k&&(k.startsWith(C)||!(0,c.isKnownFontName)(C)&&(0,c.isKnownFontName)(k))&&(y=null)}y||=w;if(!(y instanceof i.Name))throw new r.FormatError("invalid font name");let v,F,O,T,M;try{v=e.get("FontFile","FontFile2","FontFile3")}catch(e){if(!this.options.ignoreErrors)throw e;(0,r.warn)(`translateFont - fetching "${y.name}" font file: "${e}".`);v=new p.NullStream}let D=!1,E=null,N=null;if(v){if(v.dict){const e=v.dict.get("Subtype");e instanceof i.Name&&(F=e.name);O=v.dict.get("Length1");T=v.dict.get("Length2");M=v.dict.get("Length3")}}else if(g){const e=(0,h.getXfaFontName)(y.name);if(e){g.fontFamily=`${g.fontFamily}-PdfJS-XFA`;g.metrics=e.metrics||null;E=e.factors||null;v=await this.fetchStandardFontData(e.name);D=!!v;a=t=(0,h.getXfaFontDict)(y.name);o=!0}}else if(!m){const e=(0,c.getStandardFontName)(y.name);if(e){v=await this.fetchStandardFontData(e);D=!!v}!D&&this.options.useSystemFonts&&(N=(0,x.getFontSubstitution)(this.systemFontCache,this.idFactory,this.options.standardFontDataUrl,y.name,e))}b={type:l,name:y.name,subtype:F,file:v,length1:O,length2:T,length3:M,isInternalFont:D,loadedName:a.loadedName,composite:o,fixedPitch:!1,fontMatrix:t.getArray("FontMatrix")||r.FONT_IDENTITY_MATRIX,firstChar:u,lastChar:d,toUnicode:f,bbox:e.getArray("FontBBox")||t.getArray("FontBBox"),ascent:e.get("Ascent"),descent:e.get("Descent"),xHeight:e.get("XHeight")||0,capHeight:e.get("CapHeight")||0,flags:e.get("Flags"),italicAngle:e.get("ItalicAngle")||0,isType3Font:m,cssFontInfo:g,scaleFactors:E,systemFontInfo:N};if(o){const e=a.get("Encoding");e instanceof i.Name&&(b.cidEncoding=e.name);const t=await n.CMapFactory.create({encoding:e,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null});b.cMap=t;b.vertical=b.cMap.vertical}return this.extractDataStructures(t,a,b).then((a=>{this.extractWidths(t,e,a);return new s.Font(y.name,v,a)}))}static buildFontPaths(e,t,a,n){function buildPath(t){const i=`${e.loadedName}_path_${t}`;try{if(e.renderer.hasBuiltPath(t))return;a.send("commonobj",[i,"FontPath",e.renderer.getPathJs(t)])}catch(e){if(n.ignoreErrors){(0,r.warn)(`buildFontPaths - ignoring ${i} glyph: "${e}".`);return}throw e}}for(const e of t){buildPath(e.fontChar);const t=e.accent;t?.fontChar&&buildPath(t.fontChar)}}static get fallbackFontDict(){const e=new i.Dict;e.set("BaseFont",i.Name.get("Helvetica"));e.set("Type",i.Name.get("FallbackType"));e.set("Subtype",i.Name.get("FallbackType"));e.set("Encoding",i.Name.get("WinAnsiEncoding"));return(0,r.shadow)(this,"fallbackFontDict",e)}}t.PartialEvaluator=PartialEvaluator;class TranslatedFont{constructor({loadedName:e,font:t,dict:a,evaluatorOptions:r}){this.loadedName=e;this.font=t;this.dict=a;this._evaluatorOptions=r||D;this.type3Loaded=null;this.type3Dependencies=t.isType3Font?new Set:null;this.sent=!1}send(e){if(!this.sent){this.sent=!0;e.send("commonobj",[this.loadedName,"Font",this.font.exportData(this._evaluatorOptions.fontExtraProperties)])}}fallback(e){if(this.font.data){this.font.disableFontFace=!0;PartialEvaluator.buildFontPaths(this.font,this.font.glyphCacheValues,e,this._evaluatorOptions)}}loadType3Data(e,t,a){if(this.type3Loaded)return this.type3Loaded;if(!this.font.isType3Font)throw new Error("Must be a Type3 font.");const n=e.clone({ignoreErrors:!1});n.parsingType3Font=!0;const s=new i.RefSet(e.type3FontRefs);this.dict.objId&&!s.has(this.dict.objId)&&s.put(this.dict.objId);n.type3FontRefs=s;const o=this.font,c=this.type3Dependencies;let l=Promise.resolve();const h=this.dict.get("CharProcs"),u=this.dict.get("Resources")||t,d=Object.create(null),f=r.Util.normalizeRect(o.bbox||[0,0,0,0]),g=f[2]-f[0],p=f[3]-f[1],m=Math.hypot(g,p);for(const e of h.getKeys())l=l.then((()=>{const t=h.get(e),i=new T.OperatorList;return n.getOperatorList({stream:t,task:a,resources:u,operatorList:i}).then((()=>{i.fnArray[0]===r.OPS.setCharWidthAndBounds&&this._removeType3ColorOperators(i,m);d[e]=i.getIR();for(const e of i.dependencies)c.add(e)})).catch((function(t){(0,r.warn)(`Type3 font resource "${e}" is not available.`);const a=new T.OperatorList;d[e]=a.getIR()}))}));this.type3Loaded=l.then((()=>{o.charProcOperatorList=d;if(this._bbox){o.isCharBBox=!0;o.bbox=this._bbox}}));return this.type3Loaded}_removeType3ColorOperators(e,t=NaN){const a=r.Util.normalizeRect(e.argsArray[0].slice(2)),n=a[2]-a[0],i=a[3]-a[1],s=Math.hypot(n,i);if(0===n||0===i){e.fnArray.splice(0,1);e.argsArray.splice(0,1)}else if(0===t||Math.round(s/t)>=10){this._bbox||(this._bbox=[1/0,1/0,-1/0,-1/0]);this._bbox[0]=Math.min(this._bbox[0],a[0]);this._bbox[1]=Math.min(this._bbox[1],a[1]);this._bbox[2]=Math.max(this._bbox[2],a[2]);this._bbox[3]=Math.max(this._bbox[3],a[3])}let o=0,c=e.length;for(;o=r.OPS.moveTo&&s<=r.OPS.endPath;if(i.variableArgs)c>o&&(0,r.info)(`Command ${n}: expected [0, ${o}] args, but received ${c} args.`);else{if(c!==o){const e=this.nonProcessedArgs;for(;c>o;){e.push(t.shift());c--}for(;cEvaluatorPreprocessor.MAX_INVALID_PATH_OPS)throw new r.FormatError(`Invalid ${e}`);(0,r.warn)(`Skipping ${e}`);null!==t&&(t.length=0);continue}}this.preprocessCommand(s,t);e.fn=s;e.args=t;return!0}if(a===i.EOF)return!1;if(null!==a){null===t&&(t=[]);t.push(a);if(t.length>33)throw new r.FormatError("Too many arguments")}}}preprocessCommand(e,t){switch(0|e){case r.OPS.save:this.stateManager.save();break;case r.OPS.restore:this.stateManager.restore();break;case r.OPS.transform:this.stateManager.transform(t)}}}t.EvaluatorPreprocessor=EvaluatorPreprocessor},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.IdentityCMap=t.CMapFactory=t.CMap=void 0;var r=a(2),n=a(4),i=a(5),s=a(15),o=a(16),c=a(3),l=a(8);const h=["Adobe-GB1-UCS2","Adobe-CNS1-UCS2","Adobe-Japan1-UCS2","Adobe-Korea1-UCS2","78-EUC-H","78-EUC-V","78-H","78-RKSJ-H","78-RKSJ-V","78-V","78ms-RKSJ-H","78ms-RKSJ-V","83pv-RKSJ-H","90ms-RKSJ-H","90ms-RKSJ-V","90msp-RKSJ-H","90msp-RKSJ-V","90pv-RKSJ-H","90pv-RKSJ-V","Add-H","Add-RKSJ-H","Add-RKSJ-V","Add-V","Adobe-CNS1-0","Adobe-CNS1-1","Adobe-CNS1-2","Adobe-CNS1-3","Adobe-CNS1-4","Adobe-CNS1-5","Adobe-CNS1-6","Adobe-GB1-0","Adobe-GB1-1","Adobe-GB1-2","Adobe-GB1-3","Adobe-GB1-4","Adobe-GB1-5","Adobe-Japan1-0","Adobe-Japan1-1","Adobe-Japan1-2","Adobe-Japan1-3","Adobe-Japan1-4","Adobe-Japan1-5","Adobe-Japan1-6","Adobe-Korea1-0","Adobe-Korea1-1","Adobe-Korea1-2","B5-H","B5-V","B5pc-H","B5pc-V","CNS-EUC-H","CNS-EUC-V","CNS1-H","CNS1-V","CNS2-H","CNS2-V","ETHK-B5-H","ETHK-B5-V","ETen-B5-H","ETen-B5-V","ETenms-B5-H","ETenms-B5-V","EUC-H","EUC-V","Ext-H","Ext-RKSJ-H","Ext-RKSJ-V","Ext-V","GB-EUC-H","GB-EUC-V","GB-H","GB-V","GBK-EUC-H","GBK-EUC-V","GBK2K-H","GBK2K-V","GBKp-EUC-H","GBKp-EUC-V","GBT-EUC-H","GBT-EUC-V","GBT-H","GBT-V","GBTpc-EUC-H","GBTpc-EUC-V","GBpc-EUC-H","GBpc-EUC-V","H","HKdla-B5-H","HKdla-B5-V","HKdlb-B5-H","HKdlb-B5-V","HKgccs-B5-H","HKgccs-B5-V","HKm314-B5-H","HKm314-B5-V","HKm471-B5-H","HKm471-B5-V","HKscs-B5-H","HKscs-B5-V","Hankaku","Hiragana","KSC-EUC-H","KSC-EUC-V","KSC-H","KSC-Johab-H","KSC-Johab-V","KSC-V","KSCms-UHC-H","KSCms-UHC-HW-H","KSCms-UHC-HW-V","KSCms-UHC-V","KSCpc-EUC-H","KSCpc-EUC-V","Katakana","NWP-H","NWP-V","RKSJ-H","RKSJ-V","Roman","UniCNS-UCS2-H","UniCNS-UCS2-V","UniCNS-UTF16-H","UniCNS-UTF16-V","UniCNS-UTF32-H","UniCNS-UTF32-V","UniCNS-UTF8-H","UniCNS-UTF8-V","UniGB-UCS2-H","UniGB-UCS2-V","UniGB-UTF16-H","UniGB-UTF16-V","UniGB-UTF32-H","UniGB-UTF32-V","UniGB-UTF8-H","UniGB-UTF8-V","UniJIS-UCS2-H","UniJIS-UCS2-HW-H","UniJIS-UCS2-HW-V","UniJIS-UCS2-V","UniJIS-UTF16-H","UniJIS-UTF16-V","UniJIS-UTF32-H","UniJIS-UTF32-V","UniJIS-UTF8-H","UniJIS-UTF8-V","UniJIS2004-UTF16-H","UniJIS2004-UTF16-V","UniJIS2004-UTF32-H","UniJIS2004-UTF32-V","UniJIS2004-UTF8-H","UniJIS2004-UTF8-V","UniJISPro-UCS2-HW-V","UniJISPro-UCS2-V","UniJISPro-UTF8-V","UniJISX0213-UTF32-H","UniJISX0213-UTF32-V","UniJISX02132004-UTF32-H","UniJISX02132004-UTF32-V","UniKS-UCS2-H","UniKS-UCS2-V","UniKS-UTF16-H","UniKS-UTF16-V","UniKS-UTF32-H","UniKS-UTF32-V","UniKS-UTF8-H","UniKS-UTF8-V","V","WP-Symbol"],u=2**24-1;class CMap{constructor(e=!1){this.codespaceRanges=[[],[],[],[]];this.numCodespaceRanges=0;this._map=[];this.name="";this.vertical=!1;this.useCMap=null;this.builtInCMap=e}addCodespaceRange(e,t,a){this.codespaceRanges[e-1].push(t,a);this.numCodespaceRanges++}mapCidRange(e,t,a){if(t-e>u)throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");for(;e<=t;)this._map[e++]=a++}mapBfRange(e,t,a){if(t-e>u)throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");const r=a.length-1;for(;e<=t;){this._map[e++]=a;const t=a.charCodeAt(r)+1;t>255?a=a.substring(0,r-1)+String.fromCharCode(a.charCodeAt(r-1)+1)+"\0":a=a.substring(0,r)+String.fromCharCode(t)}}mapBfRangeToArray(e,t,a){if(t-e>u)throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");const r=a.length;let n=0;for(;e<=t&&n>>0;const s=n[i];for(let e=0,t=s.length;e=t&&r<=n){a.charcode=r;a.length=i+1;return}}}a.charcode=0;a.length=1}getCharCodeLength(e){const t=this.codespaceRanges;for(let a=0,r=t.length;a=n&&e<=i)return a+1}}return 1}get length(){return this._map.length}get isIdentityCMap(){if("Identity-H"!==this.name&&"Identity-V"!==this.name)return!1;if(65536!==this._map.length)return!1;for(let e=0;e<65536;e++)if(this._map[e]!==e)return!1;return!0}}t.CMap=CMap;class IdentityCMap extends CMap{constructor(e,t){super();this.vertical=e;this.addCodespaceRange(t,0,65535)}mapCidRange(e,t,a){(0,r.unreachable)("should not call mapCidRange")}mapBfRange(e,t,a){(0,r.unreachable)("should not call mapBfRange")}mapBfRangeToArray(e,t,a){(0,r.unreachable)("should not call mapBfRangeToArray")}mapOne(e,t){(0,r.unreachable)("should not call mapCidOne")}lookup(e){return Number.isInteger(e)&&e<=65535?e:void 0}contains(e){return Number.isInteger(e)&&e<=65535}forEach(e){for(let t=0;t<=65535;t++)e(t,t)}charCodeOf(e){return Number.isInteger(e)&&e<=65535?e:-1}getMap(){const e=new Array(65536);for(let t=0;t<=65535;t++)e[t]=t;return e}get length(){return 65536}get isIdentityCMap(){(0,r.unreachable)("should not access .isIdentityCMap")}}t.IdentityCMap=IdentityCMap;function strToInt(e){let t=0;for(let a=0;a>>0}function expectString(e){if("string"!=typeof e)throw new r.FormatError("Malformed CMap: expected string.")}function expectInt(e){if(!Number.isInteger(e))throw new r.FormatError("Malformed CMap: expected int.")}function parseBfChar(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endbfchar"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=a;e.mapOne(r,i)}}function parseBfRange(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endbfrange"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=strToInt(a);a=t.getObj();if(Number.isInteger(a)||"string"==typeof a){const t=Number.isInteger(a)?String.fromCharCode(a):a;e.mapBfRange(r,i,t)}else{if(!(0,n.isCmd)(a,"["))break;{a=t.getObj();const s=[];for(;!(0,n.isCmd)(a,"]")&&a!==n.EOF;){s.push(a);a=t.getObj()}e.mapBfRangeToArray(r,i,s)}}}throw new r.FormatError("Invalid bf range.")}function parseCidChar(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endcidchar"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectInt(a);const i=a;e.mapOne(r,i)}}function parseCidRange(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endcidrange"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=strToInt(a);a=t.getObj();expectInt(a);const s=a;e.mapCidRange(r,i,s)}}function parseCodespaceRange(e,t){for(;;){let a=t.getObj();if(a===n.EOF)break;if((0,n.isCmd)(a,"endcodespacerange"))return;if("string"!=typeof a)break;const r=strToInt(a);a=t.getObj();if("string"!=typeof a)break;const i=strToInt(a);e.addCodespaceRange(a.length,r,i)}throw new r.FormatError("Invalid codespace range.")}function parseWMode(e,t){const a=t.getObj();Number.isInteger(a)&&(e.vertical=!!a)}function parseCMapName(e,t){const a=t.getObj();a instanceof n.Name&&(e.name=a.name)}async function parseCMap(e,t,a,i){let s,o;e:for(;;)try{const a=t.getObj();if(a===n.EOF)break;if(a instanceof n.Name){"WMode"===a.name?parseWMode(e,t):"CMapName"===a.name&&parseCMapName(e,t);s=a}else if(a instanceof n.Cmd)switch(a.cmd){case"endcmap":break e;case"usecmap":s instanceof n.Name&&(o=s.name);break;case"begincodespacerange":parseCodespaceRange(e,t);break;case"beginbfchar":parseBfChar(e,t);break;case"begincidchar":parseCidChar(e,t);break;case"beginbfrange":parseBfRange(e,t);break;case"begincidrange":parseCidRange(e,t)}}catch(e){if(e instanceof c.MissingDataException)throw e;(0,r.warn)("Invalid cMap data: "+e);continue}!i&&o&&(i=o);return i?extendCMap(e,a,i):e}async function extendCMap(e,t,a){e.useCMap=await createBuiltInCMap(a,t);if(0===e.numCodespaceRanges){const t=e.useCMap.codespaceRanges;for(let a=0;aextendCMap(i,t,e)));if(n===r.CMapCompressionType.NONE){const e=new o.Lexer(new l.Stream(a));return parseCMap(i,e,t,null)}throw new Error(`Invalid CMap "compressionType" value: ${n}`)}t.CMapFactory=class CMapFactory{static async create({encoding:e,fetchBuiltInCMap:t,useCMap:a}){if(e instanceof n.Name)return createBuiltInCMap(e.name,t);if(e instanceof i.BaseStream){const r=await parseCMap(new CMap,new o.Lexer(e),t,a);return r.isIdentityCMap?createBuiltInCMap(r.name,t):r}throw new Error("Encoding required.")}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.BinaryCMapReader=void 0;var r=a(2);function hexToInt(e,t){let a=0;for(let r=0;r<=t;r++)a=a<<8|e[r];return a>>>0}function hexToStr(e,t){return 1===t?String.fromCharCode(e[0],e[1]):3===t?String.fromCharCode(e[0],e[1],e[2],e[3]):String.fromCharCode(...e.subarray(0,t+1))}function addHex(e,t,a){let r=0;for(let n=a;n>=0;n--){r+=e[n]+t[n];e[n]=255&r;r>>=8}}function incHex(e,t){let a=1;for(let r=t;r>=0&&a>0;r--){a+=e[r];e[r]=255&a;a>>=8}}const n=16;class BinaryCMapStream{constructor(e){this.buffer=e;this.pos=0;this.end=e.length;this.tmpBuf=new Uint8Array(19)}readByte(){return this.pos>=this.end?-1:this.buffer[this.pos++]}readNumber(){let e,t=0;do{const a=this.readByte();if(a<0)throw new r.FormatError("unexpected EOF in bcmap");e=!(128&a);t=t<<7|127&a}while(!e);return t}readSigned(){const e=this.readNumber();return 1&e?~(e>>>1):e>>>1}readHex(e,t){e.set(this.buffer.subarray(this.pos,this.pos+t+1));this.pos+=t+1}readHexNumber(e,t){let a;const n=this.tmpBuf;let i=0;do{const e=this.readByte();if(e<0)throw new r.FormatError("unexpected EOF in bcmap");a=!(128&e);n[i++]=127&e}while(!a);let s=t,o=0,c=0;for(;s>=0;){for(;c<8&&n.length>0;){o|=n[--i]<>=8;c-=8}}readHexSigned(e,t){this.readHexNumber(e,t);const a=1&e[t]?255:0;let r=0;for(let n=0;n<=t;n++){r=(1&r)<<8|e[n];e[n]=r>>1^a}}readString(){const e=this.readNumber(),t=new Array(e);for(let a=0;a=0;){const e=f>>5;if(7===e){switch(31&f){case 0:r.readString();break;case 1:s=r.readString()}continue}const a=!!(16&f),i=15&f;if(i+1>n)throw new Error("BinaryCMapReader.process: Invalid dataSize.");const g=1,p=r.readNumber();switch(e){case 0:r.readHex(o,i);r.readHexNumber(c,i);addHex(c,o,i);t.addCodespaceRange(i+1,hexToInt(o,i),hexToInt(c,i));for(let e=1;e{Object.defineProperty(t,"__esModule",{value:!0});t.Parser=t.Linearization=t.Lexer=void 0;var r=a(2),n=a(4),i=a(3),s=a(8),o=a(17),c=a(19),l=a(20),h=a(22),u=a(23),d=a(26),f=a(29),g=a(31),p=a(32),m=a(33);class Parser{constructor({lexer:e,xref:t,allowStreams:a=!1,recoveryMode:r=!1}){this.lexer=e;this.xref=t;this.allowStreams=a;this.recoveryMode=r;this.imageCache=Object.create(null);this._imageId=0;this.refill()}refill(){this.buf1=this.lexer.getObj();this.buf2=this.lexer.getObj()}shift(){if(this.buf2 instanceof n.Cmd&&"ID"===this.buf2.cmd){this.buf1=this.buf2;this.buf2=null}else{this.buf1=this.buf2;this.buf2=this.lexer.getObj()}}tryShift(){try{this.shift();return!0}catch(e){if(e instanceof i.MissingDataException)throw e;return!1}}getObj(e=null){const t=this.buf1;this.shift();if(t instanceof n.Cmd)switch(t.cmd){case"BI":return this.makeInlineImage(e);case"[":const a=[];for(;!(0,n.isCmd)(this.buf1,"]")&&this.buf1!==n.EOF;)a.push(this.getObj(e));if(this.buf1===n.EOF){if(this.recoveryMode)return a;throw new i.ParserEOFException("End of file inside array.")}this.shift();return a;case"<<":const s=new n.Dict(this.xref);for(;!(0,n.isCmd)(this.buf1,">>")&&this.buf1!==n.EOF;){if(!(this.buf1 instanceof n.Name)){(0,r.info)("Malformed dictionary: key must be a name object");this.shift();continue}const t=this.buf1.name;this.shift();if(this.buf1===n.EOF)break;s.set(t,this.getObj(e))}if(this.buf1===n.EOF){if(this.recoveryMode)return s;throw new i.ParserEOFException("End of file inside dictionary.")}if((0,n.isCmd)(this.buf2,"stream"))return this.allowStreams?this.makeStream(s,e):s;this.shift();return s;default:return t}if(Number.isInteger(t)){if(Number.isInteger(this.buf1)&&(0,n.isCmd)(this.buf2,"R")){const e=n.Ref.get(t,this.buf1);this.shift();this.shift();return e}return t}return"string"==typeof t&&e?e.decryptString(t):t}findDefaultInlineStreamEnd(e){const{knownCommands:t}=this.lexer,a=e.pos;let o,c,l=0;for(;-1!==(o=e.getByte());)if(0===l)l=69===o?1:0;else if(1===l)l=73===o?2:0;else if(32===o||10===o||13===o){c=e.pos;const a=e.peekBytes(15),i=a.length;if(0===i)break;for(let e=0;e127))){l=0;break}}if(2!==l)continue;if(!t){(0,r.warn)("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.");continue}const h=new Lexer(new s.Stream(a.slice()),t);h._hexStringWarn=()=>{};let u=0;for(;;){const e=h.getObj();if(e===n.EOF){l=0;break}if(e instanceof n.Cmd){const a=t[e.cmd];if(!a){l=0;break}if(a.variableArgs?u<=a.numArgs:u===a.numArgs)break;u=0}else u++}if(2===l)break}else l=0;if(-1===o){(0,r.warn)("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker");if(c){(0,r.warn)('... trying to recover by using the last "EI" occurrence.');e.skip(-(e.pos-c))}}let h=4;e.skip(-h);o=e.peekByte();e.skip(h);(0,i.isWhiteSpace)(o)||h--;return e.pos-h-a}findDCTDecodeInlineStreamEnd(e){const t=e.pos;let a,n,i=!1;for(;-1!==(a=e.getByte());)if(255===a){switch(e.getByte()){case 0:break;case 255:e.skip(-1);break;case 217:i=!0;break;case 192:case 193:case 194:case 195:case 197:case 198:case 199:case 201:case 202:case 203:case 205:case 206:case 207:case 196:case 204:case 218:case 219:case 220:case 221:case 222:case 223:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239:case 254:n=e.getUint16();n>2?e.skip(n-2):e.skip(-2)}if(i)break}const s=e.pos-t;if(-1===a){(0,r.warn)("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead.");e.skip(-s);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return s}findASCII85DecodeInlineStreamEnd(e){const t=e.pos;let a;for(;-1!==(a=e.getByte());)if(126===a){const t=e.pos;a=e.peekByte();for(;(0,i.isWhiteSpace)(a);){e.skip();a=e.peekByte()}if(62===a){e.skip();break}if(e.pos>t){const t=e.peekBytes(2);if(69===t[0]&&73===t[1])break}}const n=e.pos-t;if(-1===a){(0,r.warn)("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-n);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return n}findASCIIHexDecodeInlineStreamEnd(e){const t=e.pos;let a;for(;-1!==(a=e.getByte())&&62!==a;);const n=e.pos-t;if(-1===a){(0,r.warn)("Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-n);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return n}inlineStreamSkipEI(e){let t,a=0;for(;-1!==(t=e.getByte());)if(0===a)a=69===t?1:0;else if(1===a)a=73===t?2:0;else if(2===a)break}makeInlineImage(e){const t=this.lexer,a=t.stream,i=Object.create(null);let s;for(;!(0,n.isCmd)(this.buf1,"ID")&&this.buf1!==n.EOF;){if(!(this.buf1 instanceof n.Name))throw new r.FormatError("Dictionary key must be a name object");const t=this.buf1.name;this.shift();if(this.buf1===n.EOF)break;i[t]=this.getObj(e)}-1!==t.beginInlineImagePos&&(s=a.pos-t.beginInlineImagePos);const o=this.xref.fetchIfRef(i.F||i.Filter);let c;if(o instanceof n.Name)c=o.name;else if(Array.isArray(o)){const e=this.xref.fetchIfRef(o[0]);e instanceof n.Name&&(c=e.name)}const l=a.pos;let h,u;switch(c){case"DCT":case"DCTDecode":h=this.findDCTDecodeInlineStreamEnd(a);break;case"A85":case"ASCII85Decode":h=this.findASCII85DecodeInlineStreamEnd(a);break;case"AHx":case"ASCIIHexDecode":h=this.findASCIIHexDecodeInlineStreamEnd(a);break;default:h=this.findDefaultInlineStreamEnd(a)}if(h<1e3&&s>0){const e=a.pos;a.pos=t.beginInlineImagePos;u=function getInlineImageCacheKey(e){const t=[],a=e.length;let r=0;for(;r=r){a.pos+=s;return a.pos-e}s++}a.pos+=i}return-1}makeStream(e,t){const a=this.lexer;let s=a.stream;a.skipToNextLine();const o=s.pos-1;let c=e.get("Length");if(!Number.isInteger(c)){(0,r.info)(`Bad length "${c&&c.toString()}" in stream.`);c=0}s.pos=o+c;a.nextChar();if(this.tryShift()&&(0,n.isCmd)(this.buf2,"endstream"))this.shift();else{const e=new Uint8Array([101,110,100,115,116,114,101,97,109]);let t=this._findStreamLength(o,e);if(t<0){const a=1;for(let n=1;n<=a;n++){const a=e.length-n,c=e.slice(0,a),l=this._findStreamLength(o,c);if(l>=0){const e=s.peekBytes(a+1)[a];if(!(0,i.isWhiteSpace)(e))break;(0,r.info)(`Found "${(0,r.bytesToString)(c)}" when searching for endstream command.`);t=l;break}}if(t<0)throw new r.FormatError("Missing endstream command.")}c=t;a.nextChar();this.shift();this.shift()}this.shift();s=s.makeSubStream(o,c,e);t&&(s=t.createStream(s,c));s=this.filter(s,e,c);s.dict=e;return s}filter(e,t,a){let i=t.get("F","Filter"),s=t.get("DP","DecodeParms");if(i instanceof n.Name){Array.isArray(s)&&(0,r.warn)("/DecodeParms should not be an Array, when /Filter is a Name.");return this.makeFilter(e,i.name,a,s)}let o=a;if(Array.isArray(i)){const t=i,a=s;for(let c=0,l=t.length;c=48&&e<=57?15&e:e>=65&&e<=70||e>=97&&e<=102?9+(15&e):-1}class Lexer{constructor(e,t=null){this.stream=e;this.nextChar();this.strBuf=[];this.knownCommands=t;this._hexStringNumWarn=0;this.beginInlineImagePos=-1}nextChar(){return this.currentChar=this.stream.getByte()}peekChar(){return this.stream.peekByte()}getNumber(){let e=this.currentChar,t=!1,a=0,n=1;if(45===e){n=-1;e=this.nextChar();45===e&&(e=this.nextChar())}else 43===e&&(e=this.nextChar());if(10===e||13===e)do{e=this.nextChar()}while(10===e||13===e);if(46===e){a=10;e=this.nextChar()}if(e<48||e>57){const t=`Invalid number: ${String.fromCharCode(e)} (charCode ${e})`;if((0,i.isWhiteSpace)(e)||-1===e){(0,r.info)(`Lexer.getNumber - "${t}".`);return 0}throw new r.FormatError(t)}let s=e-48,o=0,c=1;for(;(e=this.nextChar())>=0;)if(e>=48&&e<=57){const r=e-48;if(t)o=10*o+r;else{0!==a&&(a*=10);s=10*s+r}}else if(46===e){if(0!==a)break;a=1}else if(45===e)(0,r.warn)("Badly formatted number: minus sign in the middle");else{if(69!==e&&101!==e)break;e=this.peekChar();if(43===e||45===e){c=45===e?-1:1;this.nextChar()}else if(e<48||e>57)break;t=!0}0!==a&&(s/=a);t&&(s*=10**(c*o));return n*s}getString(){let e=1,t=!1;const a=this.strBuf;a.length=0;let n=this.nextChar();for(;;){let i=!1;switch(0|n){case-1:(0,r.warn)("Unterminated string");t=!0;break;case 40:++e;a.push("(");break;case 41:if(0==--e){this.nextChar();t=!0}else a.push(")");break;case 92:n=this.nextChar();switch(n){case-1:(0,r.warn)("Unterminated string");t=!0;break;case 110:a.push("\n");break;case 114:a.push("\r");break;case 116:a.push("\t");break;case 98:a.push("\b");break;case 102:a.push("\f");break;case 92:case 40:case 41:a.push(String.fromCharCode(n));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:let e=15&n;n=this.nextChar();i=!0;if(n>=48&&n<=55){e=(e<<3)+(15&n);n=this.nextChar();if(n>=48&&n<=55){i=!1;e=(e<<3)+(15&n)}}a.push(String.fromCharCode(e));break;case 13:10===this.peekChar()&&this.nextChar();break;case 10:break;default:a.push(String.fromCharCode(n))}break;default:a.push(String.fromCharCode(n))}if(t)break;i||(n=this.nextChar())}return a.join("")}getName(){let e,t;const a=this.strBuf;a.length=0;for(;(e=this.nextChar())>=0&&!b[e];)if(35===e){e=this.nextChar();if(b[e]){(0,r.warn)("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number.");a.push("#");break}const n=toHexDigit(e);if(-1!==n){t=e;e=this.nextChar();const i=toHexDigit(e);if(-1===i){(0,r.warn)(`Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`);a.push("#",String.fromCharCode(t));if(b[e])break;a.push(String.fromCharCode(e));continue}a.push(String.fromCharCode(n<<4|i))}else a.push("#",String.fromCharCode(e))}else a.push(String.fromCharCode(e));a.length>127&&(0,r.warn)(`Name token is longer than allowed by the spec: ${a.length}`);return n.Name.get(a.join(""))}_hexStringWarn(e){5!=this._hexStringNumWarn++?this._hexStringNumWarn>5||(0,r.warn)(`getHexString - ignoring invalid character: ${e}`):(0,r.warn)("getHexString - ignoring additional invalid characters.")}getHexString(){const e=this.strBuf;e.length=0;let t,a,n=this.currentChar,i=!0;this._hexStringNumWarn=0;for(;;){if(n<0){(0,r.warn)("Unterminated hex string");break}if(62===n){this.nextChar();break}if(1!==b[n]){if(i){t=toHexDigit(n);if(-1===t){this._hexStringWarn(n);n=this.nextChar();continue}}else{a=toHexDigit(n);if(-1===a){this._hexStringWarn(n);n=this.nextChar();continue}e.push(String.fromCharCode(t<<4|a))}i=!i;n=this.nextChar()}else n=this.nextChar()}return e.join("")}getObj(){let e=!1,t=this.currentChar;for(;;){if(t<0)return n.EOF;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(1!==b[t])break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return this.getNumber();case 40:return this.getString();case 47:return this.getName();case 91:this.nextChar();return n.Cmd.get("[");case 93:this.nextChar();return n.Cmd.get("]");case 60:t=this.nextChar();if(60===t){this.nextChar();return n.Cmd.get("<<")}return this.getHexString();case 62:t=this.nextChar();if(62===t){this.nextChar();return n.Cmd.get(">>")}return n.Cmd.get(">");case 123:this.nextChar();return n.Cmd.get("{");case 125:this.nextChar();return n.Cmd.get("}");case 41:this.nextChar();throw new r.FormatError(`Illegal character: ${t}`)}let a=String.fromCharCode(t);if(t<32||t>127){const e=this.peekChar();if(e>=32&&e<=127){this.nextChar();return n.Cmd.get(a)}}const i=this.knownCommands;let s=void 0!==i?.[a];for(;(t=this.nextChar())>=0&&!b[t];){const e=a+String.fromCharCode(t);if(s&&void 0===i[e])break;if(128===a.length)throw new r.FormatError(`Command token too long: ${a.length}`);a=e;s=void 0!==i?.[a]}if("true"===a)return!0;if("false"===a)return!1;if("null"===a)return null;"BI"===a&&(this.beginInlineImagePos=this.stream.pos);return n.Cmd.get(a)}skipToNextLine(){let e=this.currentChar;for(;e>=0;){if(13===e){e=this.nextChar();10===e&&this.nextChar();break}if(10===e){this.nextChar();break}e=this.nextChar()}}}t.Lexer=Lexer;t.Linearization=class Linearization{static create(e){function getInt(e,t,a=!1){const r=e.get(t);if(Number.isInteger(r)&&(a?r>=0:r>0))return r;throw new Error(`The "${t}" parameter in the linearization dictionary is invalid.`)}const t=new Parser({lexer:new Lexer(e),xref:null}),a=t.getObj(),r=t.getObj(),i=t.getObj(),s=t.getObj();let o,c;if(!(Number.isInteger(a)&&Number.isInteger(r)&&(0,n.isCmd)(i,"obj")&&s instanceof n.Dict&&"number"==typeof(o=s.get("Linearized"))&&o>0))return null;if((c=getInt(s,"L"))!==e.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.');return{length:c,hints:function getHints(e){const t=e.get("H");let a;if(Array.isArray(t)&&(2===(a=t.length)||4===a)){for(let e=0;e0))throw new Error(`Hint (${e}) in the linearization dictionary is invalid.`)}return t}throw new Error("Hint array in the linearization dictionary is invalid.")}(s),objectNumberFirst:getInt(s,"O"),endFirst:getInt(s,"E"),numPages:getInt(s,"N"),mainXRefEntriesOffset:getInt(s,"T"),pageFirst:s.has("P")?getInt(s,"P",!0):0}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Ascii85Stream=void 0;var r=a(18),n=a(3);class Ascii85Stream extends r.DecodeStream{constructor(e,t){t&&(t*=.8);super(t);this.str=e;this.dict=e.dict;this.input=new Uint8Array(5)}readBlock(){const e=this.str;let t=e.getByte();for(;(0,n.isWhiteSpace)(t);)t=e.getByte();if(-1===t||126===t){this.eof=!0;return}const a=this.bufferLength;let r,i;if(122===t){r=this.ensureBuffer(a+4);for(i=0;i<4;++i)r[a+i]=0;this.bufferLength+=4}else{const s=this.input;s[0]=t;for(i=1;i<5;++i){t=e.getByte();for(;(0,n.isWhiteSpace)(t);)t=e.getByte();s[i]=t;if(-1===t||126===t)break}r=this.ensureBuffer(a+i-1);this.bufferLength+=i-1;if(i<5){for(;i<5;++i)s[i]=117;this.eof=!0}let o=0;for(i=0;i<5;++i)o=85*o+(s[i]-33);for(i=3;i>=0;--i){r[a+i]=255&o;o>>=8}}}}t.Ascii85Stream=Ascii85Stream},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.StreamsSequenceStream=t.DecodeStream=void 0;var r=a(5),n=a(8);const i=new Uint8Array(0);class DecodeStream extends r.BaseStream{constructor(e){super();this._rawMinBufferLength=e||0;this.pos=0;this.bufferLength=0;this.eof=!1;this.buffer=i;this.minBufferLength=512;if(e)for(;this.minBufferLengthr&&(a=r)}else{for(;!this.eof;)this.readBlock();a=this.bufferLength}this.pos=a;return this.buffer.subarray(t,a)}reset(){this.pos=0}makeSubStream(e,t,a=null){if(void 0===t)for(;!this.eof;)this.readBlock();else{const a=e+t;for(;this.bufferLength<=a&&!this.eof;)this.readBlock()}return new n.Stream(this.buffer,e,t,a)}getBaseStreams(){return this.str?this.str.getBaseStreams():null}}t.DecodeStream=DecodeStream;t.StreamsSequenceStream=class StreamsSequenceStream extends DecodeStream{constructor(e,t=null){let a=0;for(const t of e)a+=t instanceof DecodeStream?t._rawMinBufferLength:t.length;super(a);this.streams=e;this._onError=t}readBlock(){const e=this.streams;if(0===e.length){this.eof=!0;return}const t=e.shift();let a;try{a=t.getBytes()}catch(e){if(this._onError){this._onError(e,t.dict?.objId);return}throw e}const r=this.bufferLength,n=r+a.length;this.ensureBuffer(n).set(a,r);this.bufferLength=n}getBaseStreams(){const e=[];for(const t of this.streams){const a=t.getBaseStreams();a&&e.push(...a)}return e.length>0?e:null}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.AsciiHexStream=void 0;var r=a(18);class AsciiHexStream extends r.DecodeStream{constructor(e,t){t&&(t*=.5);super(t);this.str=e;this.dict=e.dict;this.firstDigit=-1}readBlock(){const e=this.str.getBytes(8e3);if(!e.length){this.eof=!0;return}const t=e.length+1>>1,a=this.ensureBuffer(this.bufferLength+t);let r=this.bufferLength,n=this.firstDigit;for(const t of e){let e;if(t>=48&&t<=57)e=15&t;else{if(!(t>=65&&t<=70||t>=97&&t<=102)){if(62===t){this.eof=!0;break}continue}e=9+(15&t)}if(n<0)n=e;else{a[r++]=n<<4|e;n=-1}}if(n>=0&&this.eof){a[r++]=n<<4;n=-1}this.firstDigit=n;this.bufferLength=r}}t.AsciiHexStream=AsciiHexStream},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CCITTFaxStream=void 0;var r=a(21),n=a(18),i=a(4);class CCITTFaxStream extends n.DecodeStream{constructor(e,t,a){super(t);this.str=e;this.dict=e.dict;a instanceof i.Dict||(a=i.Dict.empty);const n={next:()=>e.getByte()};this.ccittFaxDecoder=new r.CCITTFaxDecoder(n,{K:a.get("K"),EndOfLine:a.get("EndOfLine"),EncodedByteAlign:a.get("EncodedByteAlign"),Columns:a.get("Columns"),Rows:a.get("Rows"),EndOfBlock:a.get("EndOfBlock"),BlackIs1:a.get("BlackIs1")})}readBlock(){for(;!this.eof;){const e=this.ccittFaxDecoder.readNextChar();if(-1===e){this.eof=!0;return}this.ensureBuffer(this.bufferLength+1);this.buffer[this.bufferLength++]=e}}}t.CCITTFaxStream=CCITTFaxStream},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CCITTFaxDecoder=void 0;var r=a(2);const n=-1,i=[[-1,-1],[-1,-1],[7,8],[7,7],[6,6],[6,6],[6,5],[6,5],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2]],s=[[-1,-1],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[12,1984],[12,2048],[12,2112],[12,2176],[12,2240],[12,2304],[11,1856],[11,1856],[11,1920],[11,1920],[12,2368],[12,2432],[12,2496],[12,2560]],o=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[8,29],[8,29],[8,30],[8,30],[8,45],[8,45],[8,46],[8,46],[7,22],[7,22],[7,22],[7,22],[7,23],[7,23],[7,23],[7,23],[8,47],[8,47],[8,48],[8,48],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[7,20],[7,20],[7,20],[7,20],[8,33],[8,33],[8,34],[8,34],[8,35],[8,35],[8,36],[8,36],[8,37],[8,37],[8,38],[8,38],[7,19],[7,19],[7,19],[7,19],[8,31],[8,31],[8,32],[8,32],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[8,53],[8,53],[8,54],[8,54],[7,26],[7,26],[7,26],[7,26],[8,39],[8,39],[8,40],[8,40],[8,41],[8,41],[8,42],[8,42],[8,43],[8,43],[8,44],[8,44],[7,21],[7,21],[7,21],[7,21],[7,28],[7,28],[7,28],[7,28],[8,61],[8,61],[8,62],[8,62],[8,63],[8,63],[8,0],[8,0],[8,320],[8,320],[8,384],[8,384],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[7,27],[7,27],[7,27],[7,27],[8,59],[8,59],[8,60],[8,60],[9,1472],[9,1536],[9,1600],[9,1728],[7,18],[7,18],[7,18],[7,18],[7,24],[7,24],[7,24],[7,24],[8,49],[8,49],[8,50],[8,50],[8,51],[8,51],[8,52],[8,52],[7,25],[7,25],[7,25],[7,25],[8,55],[8,55],[8,56],[8,56],[8,57],[8,57],[8,58],[8,58],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[8,448],[8,448],[8,512],[8,512],[9,704],[9,768],[8,640],[8,640],[8,576],[8,576],[9,832],[9,896],[9,960],[9,1024],[9,1088],[9,1152],[9,1216],[9,1280],[9,1344],[9,1408],[7,256],[7,256],[7,256],[7,256],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7]],c=[[-1,-1],[-1,-1],[12,-2],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[11,1792],[11,1792],[12,1984],[12,1984],[12,2048],[12,2048],[12,2112],[12,2112],[12,2176],[12,2176],[12,2240],[12,2240],[12,2304],[12,2304],[11,1856],[11,1856],[11,1856],[11,1856],[11,1920],[11,1920],[11,1920],[11,1920],[12,2368],[12,2368],[12,2432],[12,2432],[12,2496],[12,2496],[12,2560],[12,2560],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[12,52],[12,52],[13,640],[13,704],[13,768],[13,832],[12,55],[12,55],[12,56],[12,56],[13,1280],[13,1344],[13,1408],[13,1472],[12,59],[12,59],[12,60],[12,60],[13,1536],[13,1600],[11,24],[11,24],[11,24],[11,24],[11,25],[11,25],[11,25],[11,25],[13,1664],[13,1728],[12,320],[12,320],[12,384],[12,384],[12,448],[12,448],[13,512],[13,576],[12,53],[12,53],[12,54],[12,54],[13,896],[13,960],[13,1024],[13,1088],[13,1152],[13,1216],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64]],l=[[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[11,23],[11,23],[12,50],[12,51],[12,44],[12,45],[12,46],[12,47],[12,57],[12,58],[12,61],[12,256],[10,16],[10,16],[10,16],[10,16],[10,17],[10,17],[10,17],[10,17],[12,48],[12,49],[12,62],[12,63],[12,30],[12,31],[12,32],[12,33],[12,40],[12,41],[11,22],[11,22],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[12,128],[12,192],[12,26],[12,27],[12,28],[12,29],[11,19],[11,19],[11,20],[11,20],[12,34],[12,35],[12,36],[12,37],[12,38],[12,39],[11,21],[11,21],[12,42],[12,43],[10,0],[10,0],[10,0],[10,0],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12]],h=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[6,9],[6,8],[5,7],[5,7],[4,6],[4,6],[4,6],[4,6],[4,5],[4,5],[4,5],[4,5],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2]];t.CCITTFaxDecoder=class CCITTFaxDecoder{constructor(e,t={}){if(!e||"function"!=typeof e.next)throw new Error('CCITTFaxDecoder - invalid "source" parameter.');this.source=e;this.eof=!1;this.encoding=t.K||0;this.eoline=t.EndOfLine||!1;this.byteAlign=t.EncodedByteAlign||!1;this.columns=t.Columns||1728;this.rows=t.Rows||0;this.eoblock=t.EndOfBlock??!0;this.black=t.BlackIs1||!1;this.codingLine=new Uint32Array(this.columns+1);this.refLine=new Uint32Array(this.columns+2);this.codingLine[0]=this.columns;this.codingPos=0;this.row=0;this.nextLine2D=this.encoding<0;this.inputBits=0;this.inputBuf=0;this.outputBits=0;this.rowsDone=!1;let a;for(;0===(a=this._lookBits(12));)this._eatBits(1);1===a&&this._eatBits(12);if(this.encoding>0){this.nextLine2D=!this._lookBits(1);this._eatBits(1)}}readNextChar(){if(this.eof)return-1;const e=this.refLine,t=this.codingLine,a=this.columns;let i,s,o,c,l;if(0===this.outputBits){this.rowsDone&&(this.eof=!0);if(this.eof)return-1;this.err=!1;let o,l,h;if(this.nextLine2D){for(c=0;t[c]=64);do{l+=h=this._getWhiteCode()}while(h>=64)}else{do{o+=h=this._getWhiteCode()}while(h>=64);do{l+=h=this._getBlackCode()}while(h>=64)}this._addPixels(t[this.codingPos]+o,s);t[this.codingPos]0?--i:++i;for(;e[i]<=t[this.codingPos]&&e[i]0?--i:++i;for(;e[i]<=t[this.codingPos]&&e[i]0?--i:++i;for(;e[i]<=t[this.codingPos]&&e[i]=64);else do{o+=h=this._getWhiteCode()}while(h>=64);this._addPixels(t[this.codingPos]+o,s);s^=1}}let u=!1;this.byteAlign&&(this.inputBits&=-8);if(this.eoblock||this.row!==this.rows-1){o=this._lookBits(12);if(this.eoline)for(;o!==n&&1!==o;){this._eatBits(1);o=this._lookBits(12)}else for(;0===o;){this._eatBits(1);o=this._lookBits(12)}if(1===o){this._eatBits(12);u=!0}else o===n&&(this.eof=!0)}else this.rowsDone=!0;if(!this.eof&&this.encoding>0&&!this.rowsDone){this.nextLine2D=!this._lookBits(1);this._eatBits(1)}if(this.eoblock&&u&&this.byteAlign){o=this._lookBits(12);if(1===o){this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}if(this.encoding>=0)for(c=0;c<4;++c){o=this._lookBits(12);1!==o&&(0,r.info)("bad rtc code: "+o);this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}}this.eof=!0}}else if(this.err&&this.eoline){for(;;){o=this._lookBits(13);if(o===n){this.eof=!0;return-1}if(o>>1==1)break;this._eatBits(1)}this._eatBits(12);if(this.encoding>0){this._eatBits(1);this.nextLine2D=!(1&o)}}this.outputBits=t[0]>0?t[this.codingPos=0]:t[this.codingPos=1];this.row++}if(this.outputBits>=8){l=1&this.codingPos?0:255;this.outputBits-=8;if(0===this.outputBits&&t[this.codingPos]o){l<<=o;1&this.codingPos||(l|=255>>8-o);this.outputBits-=o;o=0}else{l<<=this.outputBits;1&this.codingPos||(l|=255>>8-this.outputBits);o-=this.outputBits;this.outputBits=0;if(t[this.codingPos]0){l<<=o;o=0}}}while(o)}this.black&&(l^=255);return l}_addPixels(e,t){const a=this.codingLine;let n=this.codingPos;if(e>a[n]){if(e>this.columns){(0,r.info)("row is wrong length");this.err=!0;e=this.columns}1&n^t&&++n;a[n]=e}this.codingPos=n}_addPixelsNeg(e,t){const a=this.codingLine;let n=this.codingPos;if(e>a[n]){if(e>this.columns){(0,r.info)("row is wrong length");this.err=!0;e=this.columns}1&n^t&&++n;a[n]=e}else if(e0&&e=i){const t=a[e-i];if(t[0]===r){this._eatBits(r);return[!0,t[1],!0]}}}return[!1,0,!1]}_getTwoDimCode(){let e,t=0;if(this.eoblock){t=this._lookBits(7);e=i[t];if(e?.[0]>0){this._eatBits(e[0]);return e[1]}}else{const e=this._findTableCode(1,7,i);if(e[0]&&e[2])return e[1]}(0,r.info)("Bad two dim code");return n}_getWhiteCode(){let e,t=0;if(this.eoblock){t=this._lookBits(12);if(t===n)return 1;e=t>>5==0?s[t]:o[t>>3];if(e[0]>0){this._eatBits(e[0]);return e[1]}}else{let e=this._findTableCode(1,9,o);if(e[0])return e[1];e=this._findTableCode(11,12,s);if(e[0])return e[1]}(0,r.info)("bad white code");this._eatBits(1);return 1}_getBlackCode(){let e,t;if(this.eoblock){e=this._lookBits(13);if(e===n)return 1;t=e>>7==0?c[e]:e>>9==0&&e>>7!=0?l[(e>>1)-64]:h[e>>7];if(t[0]>0){this._eatBits(t[0]);return t[1]}}else{let e=this._findTableCode(2,6,h);if(e[0])return e[1];e=this._findTableCode(7,12,l,64);if(e[0])return e[1];e=this._findTableCode(10,13,c);if(e[0])return e[1]}(0,r.info)("bad black code");this._eatBits(1);return 1}_lookBits(e){let t;for(;this.inputBits>16-e;this.inputBuf=this.inputBuf<<8|t;this.inputBits+=8}return this.inputBuf>>this.inputBits-e&65535>>16-e}_eatBits(e){(this.inputBits-=e)<0&&(this.inputBits=0)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FlateStream=void 0;var r=a(18),n=a(2);const i=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Int32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),o=new Int32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),c=[new Int32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59e4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],l=[new Int32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];class FlateStream extends r.DecodeStream{constructor(e,t){super(t);this.str=e;this.dict=e.dict;const a=e.getByte(),r=e.getByte();if(-1===a||-1===r)throw new n.FormatError(`Invalid header in flate stream: ${a}, ${r}`);if(8!=(15&a))throw new n.FormatError(`Unknown compression method in flate stream: ${a}, ${r}`);if(((a<<8)+r)%31!=0)throw new n.FormatError(`Bad FCHECK in flate stream: ${a}, ${r}`);if(32&r)throw new n.FormatError(`FDICT bit set in flate stream: ${a}, ${r}`);this.codeSize=0;this.codeBuf=0}getBits(e){const t=this.str;let a,r=this.codeSize,i=this.codeBuf;for(;r>e;this.codeSize=r-=e;return a}getCode(e){const t=this.str,a=e[0],r=e[1];let i,s=this.codeSize,o=this.codeBuf;for(;s>16,h=65535&c;if(l<1||s>l;this.codeSize=s-l;return h}generateHuffmanTable(e){const t=e.length;let a,r=0;for(a=0;ar&&(r=e[a]);const n=1<>=1}for(a=e;a>=1;if(0===u){let t;if(-1===(t=a.getByte()))throw new n.FormatError("Bad block header in flate stream");let r=t;if(-1===(t=a.getByte()))throw new n.FormatError("Bad block header in flate stream");r|=t<<8;if(-1===(t=a.getByte()))throw new n.FormatError("Bad block header in flate stream");let i=t;if(-1===(t=a.getByte()))throw new n.FormatError("Bad block header in flate stream");i|=t<<8;if(i!==(65535&~r)&&(0!==r||0!==i))throw new n.FormatError("Bad uncompressed block length in flate stream");this.codeBuf=0;this.codeSize=0;const s=this.bufferLength,o=s+r;e=this.ensureBuffer(o);this.bufferLength=o;if(0===r)-1===a.peekByte()&&(this.eof=!0);else{const t=a.getBytes(r);e.set(t,s);t.length0;)u[o++]=g}r=this.generateHuffmanTable(u.subarray(0,e));h=this.generateHuffmanTable(u.subarray(e,l))}}e=this.buffer;let d=e?e.length:0,f=this.bufferLength;for(;;){let a=this.getCode(r);if(a<256){if(f+1>=d){e=this.ensureBuffer(f+1);d=e.length}e[f++]=a;continue}if(256===a){this.bufferLength=f;return}a-=257;a=s[a];let n=a>>16;n>0&&(n=this.getBits(n));t=(65535&a)+n;a=this.getCode(h);a=o[a];n=a>>16;n>0&&(n=this.getBits(n));const i=(65535&a)+n;if(f+t>=d){e=this.ensureBuffer(f+t);d=e.length}for(let a=0;a{Object.defineProperty(t,"__esModule",{value:!0});t.Jbig2Stream=void 0;var r=a(5),n=a(18),i=a(4),s=a(24),o=a(2);class Jbig2Stream extends n.DecodeStream{constructor(e,t,a){super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=a}get bytes(){return(0,o.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e=new s.Jbig2Image,t=[];if(this.params instanceof i.Dict){const e=this.params.get("JBIG2Globals");if(e instanceof r.BaseStream){const a=e.getBytes();t.push({data:a,start:0,end:a.length})}}t.push({data:this.bytes,start:0,end:this.bytes.length});const a=e.parseChunks(t),n=a.length;for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0});t.Jbig2Image=void 0;var r=a(2),n=a(3),i=a(25),s=a(21);class Jbig2Error extends r.BaseException{constructor(e){super(`JBIG2 error: ${e}`,"Jbig2Error")}}class ContextCache{getContexts(e){return e in this?this[e]:this[e]=new Int8Array(65536)}}class DecodingContext{constructor(e,t,a){this.data=e;this.start=t;this.end=a}get decoder(){const e=new i.ArithmeticDecoder(this.data,this.start,this.end);return(0,r.shadow)(this,"decoder",e)}get contextCache(){const e=new ContextCache;return(0,r.shadow)(this,"contextCache",e)}}const o=2**31-1,c=-(2**31);function decodeInteger(e,t,a){const r=e.getContexts(t);let n=1;function readBits(e){let t=0;for(let i=0;i>>0}const i=readBits(1),s=readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(32)+4436:readBits(12)+340:readBits(8)+84:readBits(6)+20:readBits(4)+4:readBits(2);let l;0===i?l=s:s>0&&(l=-s);return l>=c&&l<=o?l:null}function decodeIAID(e,t,a){const r=e.getContexts("IAID");let n=1;for(let e=0;e=O&&$=T){q=q<<1&y;for(b=0;b=0&&j=0){U=N[_][j];U&&(q|=U<=e?l<<=1:l=l<<1|k[o][c]}for(p=0;p=x||c<0||c>=S?l<<=1:l=l<<1|r[o][c]}const u=v.readBit(F,l);t[s]=u}}return k}function decodeTextRegion(e,t,a,r,n,i,s,o,c,l,h,u,d,f,g,p,m,b,y){if(e&&t)throw new Jbig2Error("refinement with Huffman is not supported");const w=[];let S,x;for(S=0;S1&&(n=e?y.readBits(b):decodeInteger(k,"IAIT",C));const i=s*v+n,F=e?f.symbolIDTable.decode(y):decodeIAID(k,C,c),O=t&&(e?y.readBit():decodeInteger(k,"IARI",C));let T=o[F],M=T[0].length,D=T.length;if(O){const e=decodeInteger(k,"IARDW",C),t=decodeInteger(k,"IARDH",C);M+=e;D+=t;T=decodeRefinement(M,D,g,T,(e>>1)+decodeInteger(k,"IARDX",C),(t>>1)+decodeInteger(k,"IARDY",C),!1,p,m)}const E=i-(1&u?0:D-1),N=r-(2&u?M-1:0);let R,L,$;if(l){for(R=0;R>5&7;const h=[31&o];let u=t+6;if(7===o){c=536870911&(0,n.readUint32)(e,u-1);u+=3;let t=c+7>>3;h[0]=e[u++];for(;--t>0;)h.push(e[u++])}else if(5===o||6===o)throw new Jbig2Error("invalid referred-to flags");a.retainBits=h;let d=4;a.number<=256?d=1:a.number<=65536&&(d=2);const f=[];let p,m;for(p=0;p>>24&255;i[3]=t.height>>16&255;i[4]=t.height>>8&255;i[5]=255&t.height;for(p=u,m=e.length;p>2&3;e.huffmanDWSelector=t>>4&3;e.bitmapSizeSelector=t>>6&1;e.aggregationInstancesSelector=t>>7&1;e.bitmapCodingContextUsed=!!(256&t);e.bitmapCodingContextRetained=!!(512&t);e.template=t>>10&3;e.refinementTemplate=t>>12&1;h+=2;if(!e.huffman){l=0===e.template?4:1;o=[];for(c=0;c>2&3;u.stripSize=1<>4&3;u.transposed=!!(64&d);u.combinationOperator=d>>7&3;u.defaultPixelValue=d>>9&1;u.dsOffset=d<<17>>27;u.refinementTemplate=d>>15&1;if(u.huffman){const e=(0,n.readUint16)(r,h);h+=2;u.huffmanFS=3&e;u.huffmanDS=e>>2&3;u.huffmanDT=e>>4&3;u.huffmanRefinementDW=e>>6&3;u.huffmanRefinementDH=e>>8&3;u.huffmanRefinementDX=e>>10&3;u.huffmanRefinementDY=e>>12&3;u.huffmanRefinementSizeSelector=!!(16384&e)}if(u.refinement&&!u.refinementTemplate){o=[];for(c=0;c<2;c++){o.push({x:(0,n.readInt8)(r,h),y:(0,n.readInt8)(r,h+1)});h+=2}u.refinementAt=o}u.numberOfSymbolInstances=(0,n.readUint32)(r,h);h+=4;s=[u,a.referredTo,r,h,i];break;case 16:const f={},p=r[h++];f.mmr=!!(1&p);f.template=p>>1&3;f.patternWidth=r[h++];f.patternHeight=r[h++];f.maxPatternIndex=(0,n.readUint32)(r,h);h+=4;s=[f,a.number,r,h,i];break;case 22:case 23:const m={};m.info=readRegionSegmentInformation(r,h);h+=g;const b=r[h++];m.mmr=!!(1&b);m.template=b>>1&3;m.enableSkip=!!(8&b);m.combinationOperator=b>>4&7;m.defaultPixelValue=b>>7&1;m.gridWidth=(0,n.readUint32)(r,h);h+=4;m.gridHeight=(0,n.readUint32)(r,h);h+=4;m.gridOffsetX=4294967295&(0,n.readUint32)(r,h);h+=4;m.gridOffsetY=4294967295&(0,n.readUint32)(r,h);h+=4;m.gridVectorX=(0,n.readUint16)(r,h);h+=2;m.gridVectorY=(0,n.readUint16)(r,h);h+=2;s=[m,a.referredTo,r,h,i];break;case 38:case 39:const y={};y.info=readRegionSegmentInformation(r,h);h+=g;const w=r[h++];y.mmr=!!(1&w);y.template=w>>1&3;y.prediction=!!(8&w);if(!y.mmr){l=0===y.template?4:1;o=[];for(c=0;c>2&1;S.combinationOperator=x>>3&3;S.requiresBuffer=!!(32&x);S.combinationOperatorOverride=!!(64&x);s=[S];break;case 49:case 50:case 51:case 62:break;case 53:s=[a.number,r,h,i];break;default:throw new Jbig2Error(`segment type ${a.typeName}(${a.type}) is not implemented`)}const u="on"+a.typeName;u in t&&t[u].apply(t,s)}function processSegments(e,t){for(let a=0,r=e.length;a>3,a=new Uint8ClampedArray(t*e.height);e.defaultPixelValue&&a.fill(255);this.buffer=a}drawBitmap(e,t){const a=this.currentPageInfo,r=e.width,n=e.height,i=a.width+7>>3,s=a.combinationOperatorOverride?e.combinationOperator:a.combinationOperator,o=this.buffer,c=128>>(7&e.x);let l,h,u,d,f=e.y*i+(e.x>>3);switch(s){case 0:for(l=0;l>=1;if(!u){u=128;d++}}f+=i}break;case 2:for(l=0;l>=1;if(!u){u=128;d++}}f+=i}break;default:throw new Jbig2Error(`operator ${s} is not supported`)}}onImmediateGenericRegion(e,t,a,r){const n=e.info,i=new DecodingContext(t,a,r),s=decodeBitmap(e.mmr,n.width,n.height,e.template,e.prediction,null,e.at,i);this.drawBitmap(n,s)}onImmediateLosslessGenericRegion(){this.onImmediateGenericRegion(...arguments)}onSymbolDictionary(e,t,a,r,i,s){let o,c;if(e.huffman){o=function getSymbolDictionaryHuffmanTables(e,t,a){let r,n,i,s,o=0;switch(e.huffmanDHSelector){case 0:case 1:r=getStandardTable(e.huffmanDHSelector+4);break;case 3:r=getCustomHuffmanTable(o,t,a);o++;break;default:throw new Jbig2Error("invalid Huffman DH selector")}switch(e.huffmanDWSelector){case 0:case 1:n=getStandardTable(e.huffmanDWSelector+2);break;case 3:n=getCustomHuffmanTable(o,t,a);o++;break;default:throw new Jbig2Error("invalid Huffman DW selector")}if(e.bitmapSizeSelector){i=getCustomHuffmanTable(o,t,a);o++}else i=getStandardTable(1);s=e.aggregationInstancesSelector?getCustomHuffmanTable(o,t,a):getStandardTable(1);return{tableDeltaHeight:r,tableDeltaWidth:n,tableBitmapSize:i,tableAggregateInstances:s}}(e,a,this.customTables);c=new Reader(r,i,s)}let l=this.symbols;l||(this.symbols=l={});const h=[];for(const e of a){const t=l[e];t&&h.push(...t)}const u=new DecodingContext(r,i,s);l[t]=function decodeSymbolDictionary(e,t,a,r,i,s,o,c,l,h,u,d){if(e&&t)throw new Jbig2Error("symbol refinement with Huffman is not supported");const f=[];let g=0,p=(0,n.log2)(a.length+r);const m=u.decoder,b=u.contextCache;let y,w;if(e){y=getStandardTable(1);w=[];p=Math.max(p,1)}for(;f.length1)y=decodeTextRegion(e,t,r,g,0,n,1,a.concat(f),p,0,0,1,0,s,l,h,u,0,d);else{const e=decodeIAID(b,m,p),t=decodeInteger(b,"IARDX",m),n=decodeInteger(b,"IARDY",m);y=decodeRefinement(r,g,l,e=32){let a,r,s;switch(t){case 32:if(0===e)throw new Jbig2Error("no previous value in symbol ID table");r=n.readBits(2)+3;a=i[e-1].prefixLength;break;case 33:r=n.readBits(3)+3;a=0;break;case 34:r=n.readBits(7)+11;a=0;break;default:throw new Jbig2Error("invalid code length in symbol ID table")}for(s=0;s=0;b--){M=e?decodeMMRBitmap(T,l,h,!0):decodeBitmap(!1,l,h,a,!1,null,F,p);O[b]=M}for(D=0;D=0;y--){N^=O[y][D][E];R|=N<>8;_=d+D*f-E*g>>8;if($>=0&&$+C<=r&&_>=0&&_+k<=i)for(b=0;b=i)){U=m[t];j=L[b];for(y=0;y=0&&e>1&7),l=1+(r>>4&7),h=[];let u,d,f=i;do{u=o.readBits(c);d=o.readBits(l);h.push(new HuffmanLine([f,u,d,0]));f+=1<>t&1;if(t<=0)this.children[a]=new HuffmanTreeNode(e);else{let r=this.children[a];r||(this.children[a]=r=new HuffmanTreeNode(null));r.buildTree(e,t-1)}}decodeNode(e){if(this.isLeaf){if(this.isOOB)return null;const t=e.readBits(this.rangeLength);return this.rangeLow+(this.isLowerRange?-t:t)}const t=this.children[e.readBit()];if(!t)throw new Jbig2Error("invalid Huffman data");return t.decodeNode(e)}}class HuffmanTable{constructor(e,t){t||this.assignPrefixCodes(e);this.rootNode=new HuffmanTreeNode(null);for(let t=0,a=e.length;t0&&this.rootNode.buildTree(a,a.prefixLength-1)}}decode(e){return this.rootNode.decodeNode(e)}assignPrefixCodes(e){const t=e.length;let a=0;for(let r=0;r=this.end)throw new Jbig2Error("end of data while reading bit");this.currentByte=this.data[this.position++];this.shift=7}const e=this.currentByte>>this.shift&1;this.shift--;return e}readBits(e){let t,a=0;for(t=e-1;t>=0;t--)a|=this.readBit()<=this.end?-1:this.data[this.position++]}}function getCustomHuffmanTable(e,t,a){let r=0;for(let n=0,i=t.length;n>a&1;a--}}if(r&&!l){const e=5;for(let t=0;t{Object.defineProperty(t,"__esModule",{value:!0});t.ArithmeticDecoder=void 0;const a=[{qe:22017,nmps:1,nlps:1,switchFlag:1},{qe:13313,nmps:2,nlps:6,switchFlag:0},{qe:6145,nmps:3,nlps:9,switchFlag:0},{qe:2753,nmps:4,nlps:12,switchFlag:0},{qe:1313,nmps:5,nlps:29,switchFlag:0},{qe:545,nmps:38,nlps:33,switchFlag:0},{qe:22017,nmps:7,nlps:6,switchFlag:1},{qe:21505,nmps:8,nlps:14,switchFlag:0},{qe:18433,nmps:9,nlps:14,switchFlag:0},{qe:14337,nmps:10,nlps:14,switchFlag:0},{qe:12289,nmps:11,nlps:17,switchFlag:0},{qe:9217,nmps:12,nlps:18,switchFlag:0},{qe:7169,nmps:13,nlps:20,switchFlag:0},{qe:5633,nmps:29,nlps:21,switchFlag:0},{qe:22017,nmps:15,nlps:14,switchFlag:1},{qe:21505,nmps:16,nlps:14,switchFlag:0},{qe:20737,nmps:17,nlps:15,switchFlag:0},{qe:18433,nmps:18,nlps:16,switchFlag:0},{qe:14337,nmps:19,nlps:17,switchFlag:0},{qe:13313,nmps:20,nlps:18,switchFlag:0},{qe:12289,nmps:21,nlps:19,switchFlag:0},{qe:10241,nmps:22,nlps:19,switchFlag:0},{qe:9217,nmps:23,nlps:20,switchFlag:0},{qe:8705,nmps:24,nlps:21,switchFlag:0},{qe:7169,nmps:25,nlps:22,switchFlag:0},{qe:6145,nmps:26,nlps:23,switchFlag:0},{qe:5633,nmps:27,nlps:24,switchFlag:0},{qe:5121,nmps:28,nlps:25,switchFlag:0},{qe:4609,nmps:29,nlps:26,switchFlag:0},{qe:4353,nmps:30,nlps:27,switchFlag:0},{qe:2753,nmps:31,nlps:28,switchFlag:0},{qe:2497,nmps:32,nlps:29,switchFlag:0},{qe:2209,nmps:33,nlps:30,switchFlag:0},{qe:1313,nmps:34,nlps:31,switchFlag:0},{qe:1089,nmps:35,nlps:32,switchFlag:0},{qe:673,nmps:36,nlps:33,switchFlag:0},{qe:545,nmps:37,nlps:34,switchFlag:0},{qe:321,nmps:38,nlps:35,switchFlag:0},{qe:273,nmps:39,nlps:36,switchFlag:0},{qe:133,nmps:40,nlps:37,switchFlag:0},{qe:73,nmps:41,nlps:38,switchFlag:0},{qe:37,nmps:42,nlps:39,switchFlag:0},{qe:21,nmps:43,nlps:40,switchFlag:0},{qe:9,nmps:44,nlps:41,switchFlag:0},{qe:5,nmps:45,nlps:42,switchFlag:0},{qe:1,nmps:45,nlps:43,switchFlag:0},{qe:22017,nmps:46,nlps:46,switchFlag:0}];t.ArithmeticDecoder=class ArithmeticDecoder{constructor(e,t,a){this.data=e;this.bp=t;this.dataEnd=a;this.chigh=e[t];this.clow=0;this.byteIn();this.chigh=this.chigh<<7&65535|this.clow>>9&127;this.clow=this.clow<<7&65535;this.ct-=7;this.a=32768}byteIn(){const e=this.data;let t=this.bp;if(255===e[t])if(e[t+1]>143){this.clow+=65280;this.ct=8}else{t++;this.clow+=e[t]<<9;this.ct=7;this.bp=t}else{t++;this.clow+=t65535){this.chigh+=this.clow>>16;this.clow&=65535}}readBit(e,t){let r=e[t]>>1,n=1&e[t];const i=a[r],s=i.qe;let o,c=this.a-s;if(this.chigh>15&1;this.clow=this.clow<<1&65535;this.ct--}while(0==(32768&c));this.a=c;e[t]=r<<1|n;return o}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.JpegStream=void 0;var r=a(18),n=a(4),i=a(27),s=a(2);class JpegStream extends r.DecodeStream{constructor(e,t,a){let r;for(;-1!==(r=e.getByte());)if(255===r){e.skip(-1);break}super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=a}get bytes(){return(0,s.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e={decodeTransform:void 0,colorTransform:void 0},t=this.dict.getArray("D","Decode");if((this.forceRGBA||this.forceRGB)&&Array.isArray(t)){const a=this.dict.get("BPC","BitsPerComponent")||8,r=t.length,n=new Int32Array(r);let i=!1;const s=(1<{Object.defineProperty(t,"__esModule",{value:!0});t.JpegImage=void 0;var r=a(2),n=a(28),i=a(3);class JpegError extends r.BaseException{constructor(e){super(`JPEG error: ${e}`,"JpegError")}}class DNLMarkerError extends r.BaseException{constructor(e,t){super(e,"DNLMarkerError");this.scanLines=t}}class EOIMarkerError extends r.BaseException{constructor(e){super(e,"EOIMarkerError")}}const s=new Uint8Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),o=4017,c=799,l=3406,h=2276,u=1567,d=3784,f=5793,g=2896;function buildHuffmanTable(e,t){let a,r,n=0,i=16;for(;i>0&&!e[i-1];)i--;const s=[{children:[],index:0}];let o,c=s[0];for(a=0;a0;)c=s.pop();c.index++;s.push(c);for(;s.length<=a;){s.push(o={children:[],index:0});c.children[c.index]=o.children;c=o}n++}if(a+10){b--;return m>>b&1}m=e[t++];if(255===m){const r=e[t++];if(r){if(220===r&&d){t+=2;const r=(0,i.readUint16)(e,t);t+=2;if(r>0&&r!==a.scanLines)throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data",r)}else if(217===r){if(d){const e=x*(8===a.precision?8:0);if(e>0&&Math.round(a.scanLines/e)>=5)throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter",e)}throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data")}throw new JpegError(`unexpected marker ${(m<<8|r).toString(16)}`)}}b=7;return m>>>7}function decodeHuffman(e){let t=e;for(;;){t=t[readBit()];switch(typeof t){case"number":return t;case"object":continue}throw new JpegError("invalid huffman sequence")}}function receive(e){let t=0;for(;e>0;){t=t<<1|readBit();e--}return t}function receiveAndExtend(e){if(1===e)return 1===readBit()?1:-1;const t=receive(e);return t>=1<0){y--;return}let a=c;const r=l;for(;a<=r;){const r=decodeHuffman(e.huffmanTableAC),n=15&r,i=r>>4;if(0===n){if(i<15){y=receive(i)+(1<>4;if(0===n)if(o<15){y=receive(o)+(1<>4;if(0===r){if(i<15)break;n+=16;continue}n+=i;const o=s[n];e.blockData[t+o]=receiveAndExtend(r);n++}};let D,E=0;const N=1===C?n[0].blocksPerLine*n[0].blocksPerColumn:f*a.mcusPerColumn;let R,L;for(;E<=N;){const a=o?Math.min(N-E,o):N;if(a>0){for(v=0;v0?"unexpected":"excessive";(0,r.warn)(`decodeScan - ${e} MCU data, current marker is: ${D.invalid}`);t=D.offset}if(!(D.marker>=65488&&D.marker<=65495))break;t+=2}return t-p}function quantizeAndInverse(e,t,a){const r=e.quantizationTable,n=e.blockData;let i,s,p,m,b,y,w,S,x,C,k,v,F,O,T,M,D;if(!r)throw new JpegError("missing required Quantization Table.");for(let e=0;e<64;e+=8){x=n[t+e];C=n[t+e+1];k=n[t+e+2];v=n[t+e+3];F=n[t+e+4];O=n[t+e+5];T=n[t+e+6];M=n[t+e+7];x*=r[e];if(0!=(C|k|v|F|O|T|M)){C*=r[e+1];k*=r[e+2];v*=r[e+3];F*=r[e+4];O*=r[e+5];T*=r[e+6];M*=r[e+7];i=f*x+128>>8;s=f*F+128>>8;p=k;m=T;b=g*(C-M)+128>>8;S=g*(C+M)+128>>8;y=v<<4;w=O<<4;i=i+s+1>>1;s=i-s;D=p*d+m*u+128>>8;p=p*u-m*d+128>>8;m=D;b=b+w+1>>1;w=b-w;S=S+y+1>>1;y=S-y;i=i+m+1>>1;m=i-m;s=s+p+1>>1;p=s-p;D=b*h+S*l+2048>>12;b=b*l-S*h+2048>>12;S=D;D=y*c+w*o+2048>>12;y=y*o-w*c+2048>>12;w=D;a[e]=i+S;a[e+7]=i-S;a[e+1]=s+w;a[e+6]=s-w;a[e+2]=p+y;a[e+5]=p-y;a[e+3]=m+b;a[e+4]=m-b}else{D=f*x+512>>10;a[e]=D;a[e+1]=D;a[e+2]=D;a[e+3]=D;a[e+4]=D;a[e+5]=D;a[e+6]=D;a[e+7]=D}}for(let e=0;e<8;++e){x=a[e];C=a[e+8];k=a[e+16];v=a[e+24];F=a[e+32];O=a[e+40];T=a[e+48];M=a[e+56];if(0!=(C|k|v|F|O|T|M)){i=f*x+2048>>12;s=f*F+2048>>12;p=k;m=T;b=g*(C-M)+2048>>12;S=g*(C+M)+2048>>12;y=v;w=O;i=4112+(i+s+1>>1);s=i-s;D=p*d+m*u+2048>>12;p=p*u-m*d+2048>>12;m=D;b=b+w+1>>1;w=b-w;S=S+y+1>>1;y=S-y;i=i+m+1>>1;m=i-m;s=s+p+1>>1;p=s-p;D=b*h+S*l+2048>>12;b=b*l-S*h+2048>>12;S=D;D=y*c+w*o+2048>>12;y=y*o-w*c+2048>>12;w=D;x=i+S;M=i-S;C=s+w;T=s-w;k=p+y;O=p-y;v=m+b;F=m-b;x<16?x=0:x>=4080?x=255:x>>=4;C<16?C=0:C>=4080?C=255:C>>=4;k<16?k=0:k>=4080?k=255:k>>=4;v<16?v=0:v>=4080?v=255:v>>=4;F<16?F=0:F>=4080?F=255:F>>=4;O<16?O=0:O>=4080?O=255:O>>=4;T<16?T=0:T>=4080?T=255:T>>=4;M<16?M=0:M>=4080?M=255:M>>=4;n[t+e]=x;n[t+e+8]=C;n[t+e+16]=k;n[t+e+24]=v;n[t+e+32]=F;n[t+e+40]=O;n[t+e+48]=T;n[t+e+56]=M}else{D=f*x+8192>>14;D=D<-2040?0:D>=2024?255:D+2056>>4;n[t+e]=D;n[t+e+8]=D;n[t+e+16]=D;n[t+e+24]=D;n[t+e+32]=D;n[t+e+40]=D;n[t+e+48]=D;n[t+e+56]=D}}}function buildComponentData(e,t){const a=t.blocksPerLine,r=t.blocksPerColumn,n=new Int16Array(64);for(let e=0;e=r)return null;const s=(0,i.readUint16)(e,t);if(s>=65472&&s<=65534)return{invalid:null,marker:s,offset:t};let o=(0,i.readUint16)(e,n);for(;!(o>=65472&&o<=65534);){if(++n>=r)return null;o=(0,i.readUint16)(e,n)}return{invalid:s.toString(16),marker:o,offset:n}}t.JpegImage=class JpegImage{constructor({decodeTransform:e=null,colorTransform:t=-1}={}){this._decodeTransform=e;this._colorTransform=t}parse(e,{dnlScanLines:t=null}={}){function readDataBlock(){const t=(0,i.readUint16)(e,o);o+=2;let a=o+t-2;const n=findNextFileMarker(e,a,o);if(n?.invalid){(0,r.warn)("readDataBlock - incorrect length, current marker is: "+n.invalid);a=n.offset}const s=e.subarray(o,a);o+=s.length;return s}function prepareComponents(e){const t=Math.ceil(e.samplesPerLine/8/e.maxH),a=Math.ceil(e.scanLines/8/e.maxV);for(const r of e.components){const n=Math.ceil(Math.ceil(e.samplesPerLine/8)*r.h/e.maxH),i=Math.ceil(Math.ceil(e.scanLines/8)*r.v/e.maxV),s=t*r.h,o=64*(a*r.v)*(s+1);r.blockData=new Int16Array(o);r.blocksPerLine=n;r.blocksPerColumn=i}e.mcusPerLine=t;e.mcusPerColumn=a}let a,n,o=0,c=null,l=null,h=0;const u=[],d=[],f=[];let g=(0,i.readUint16)(e,o);o+=2;if(65496!==g)throw new JpegError("SOI not found");g=(0,i.readUint16)(e,o);o+=2;e:for(;65497!==g;){let p,m,b;switch(g){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:const y=readDataBlock();65504===g&&74===y[0]&&70===y[1]&&73===y[2]&&70===y[3]&&0===y[4]&&(c={version:{major:y[5],minor:y[6]},densityUnits:y[7],xDensity:y[8]<<8|y[9],yDensity:y[10]<<8|y[11],thumbWidth:y[12],thumbHeight:y[13],thumbData:y.subarray(14,14+3*y[12]*y[13])});65518===g&&65===y[0]&&100===y[1]&&111===y[2]&&98===y[3]&&101===y[4]&&(l={version:y[5]<<8|y[6],flags0:y[7]<<8|y[8],flags1:y[9]<<8|y[10],transformCode:y[11]});break;case 65499:const w=(0,i.readUint16)(e,o);o+=2;const S=w+o-2;let x;for(;o>4==0)for(m=0;m<64;m++){x=s[m];a[x]=e[o++]}else{if(t>>4!=1)throw new JpegError("DQT - invalid table spec");for(m=0;m<64;m++){x=s[m];a[x]=(0,i.readUint16)(e,o);o+=2}}u[15&t]=a}break;case 65472:case 65473:case 65474:if(a)throw new JpegError("Only single frame JPEGs supported");o+=2;a={};a.extended=65473===g;a.progressive=65474===g;a.precision=e[o++];const C=(0,i.readUint16)(e,o);o+=2;a.scanLines=t||C;a.samplesPerLine=(0,i.readUint16)(e,o);o+=2;a.components=[];a.componentIds={};const k=e[o++];let v=0,F=0;for(p=0;p>4,n=15&e[o+1];v>4==0?f:d)[15&t]=buildHuffmanTable(a,n)}break;case 65501:o+=2;n=(0,i.readUint16)(e,o);o+=2;break;case 65498:const T=1==++h&&!t;o+=2;const M=e[o++],D=[];for(p=0;p>4];n.huffmanTableAC=d[15&i];D.push(n)}const E=e[o++],N=e[o++],R=e[o++];try{const t=decodeScan(e,o,a,D,n,E,N,R>>4,15&R,T);o+=t}catch(t){if(t instanceof DNLMarkerError){(0,r.warn)(`${t.message} -- attempting to re-parse the JPEG image.`);return this.parse(e,{dnlScanLines:t.scanLines})}if(t instanceof EOIMarkerError){(0,r.warn)(`${t.message} -- ignoring the rest of the image data.`);break e}throw t}break;case 65500:o+=4;break;case 65535:255!==e[o]&&o--;break;default:const L=findNextFileMarker(e,o-2,o-3);if(L?.invalid){(0,r.warn)("JpegImage.parse - unexpected data, current marker is: "+L.invalid);o=L.offset;break}if(!L||o>=e.length-1){(0,r.warn)("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).");break e}throw new JpegError("JpegImage.parse - unknown marker: "+g.toString(16))}g=(0,i.readUint16)(e,o);o+=2}this.width=a.samplesPerLine;this.height=a.scanLines;this.jfif=c;this.adobe=l;this.components=[];for(const e of a.components){const t=u[e.quantizationId];t&&(e.quantizationTable=t);this.components.push({index:e.index,output:buildComponentData(0,e),scaleX:e.h/a.maxH,scaleY:e.v/a.maxV,blocksPerLine:e.blocksPerLine,blocksPerColumn:e.blocksPerColumn})}this.numComponents=this.components.length}_getLinearizedBlockData(e,t,a=!1){const r=this.width/e,n=this.height/t;let i,s,o,c,l,h,u,d,f,g,p,m=0;const b=this.components.length,y=e*t*b,w=new Uint8ClampedArray(y),S=new Uint32Array(e),x=4294967288;let C;for(u=0;u>8)+k[f+1];return w}get _isColorConversionNeeded(){return this.adobe?!!this.adobe.transformCode:3===this.numComponents?0!==this._colorTransform&&(82!==this.components[0].index||71!==this.components[1].index||66!==this.components[2].index):1===this._colorTransform}_convertYccToRgb(e){let t,a,r;for(let n=0,i=e.length;n4)throw new JpegError("Unsupported color mode");const s=this._getLinearizedBlockData(e,t,i);if(1===this.numComponents&&(a||r)){const e=s.length*(a?4:3),t=new Uint8ClampedArray(e);let r=0;if(a)(0,n.grayToRGBA)(s,new Uint32Array(t.buffer));else for(const e of s){t[r++]=e;t[r++]=e;t[r++]=e}return t}if(3===this.numComponents&&this._isColorConversionNeeded){if(a){const e=new Uint8ClampedArray(s.length/3*4);return this._convertYccToRgba(s,e)}return this._convertYccToRgb(s)}if(4===this.numComponents){if(this._isColorConversionNeeded)return a?this._convertYcckToRgba(s):r?this._convertYcckToRgb(s):this._convertYcckToCmyk(s);if(a)return this._convertCmykToRgba(s);if(r)return this._convertCmykToRgb(s)}return s}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.convertBlackAndWhiteToRGBA=convertBlackAndWhiteToRGBA;t.convertToRGBA=function convertToRGBA(e){switch(e.kind){case r.ImageKind.GRAYSCALE_1BPP:return convertBlackAndWhiteToRGBA(e);case r.ImageKind.RGB_24BPP:return function convertRGBToRGBA({src:e,srcPos:t=0,dest:a,destPos:n=0,width:i,height:s}){let o=0;const c=e.length>>2,l=new Uint32Array(e.buffer,t,c);if(r.FeatureTest.isLittleEndian){for(;o>>24|t<<8|4278190080;a[n+2]=t>>>16|r<<16|4278190080;a[n+3]=r>>>8|4278190080}for(let t=4*o,r=e.length;t>>8|255;a[n+2]=t<<16|r>>>16|255;a[n+3]=r<<8|255}for(let t=4*o,r=e.length;t>3,d=7&n,f=e.length;a=new Uint32Array(a.buffer);let g=0;for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0});t.JpxStream=void 0;var r=a(18),n=a(30),i=a(2);class JpxStream extends r.DecodeStream{constructor(e,t,a){super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=a}get bytes(){return(0,i.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e=new n.JpxImage;e.parse(this.bytes);const t=e.width,a=e.height,r=e.componentsCount,i=e.tiles.length;if(1===i)this.buffer=e.tiles[0].items;else{const n=new Uint8ClampedArray(t*a*r);for(let a=0;a{Object.defineProperty(t,"__esModule",{value:!0});t.JpxImage=void 0;var r=a(2),n=a(3),i=a(25);class JpxError extends r.BaseException{constructor(e){super(`JPX error: ${e}`,"JpxError")}}const s={LL:0,LH:1,HL:1,HH:2};t.JpxImage=class JpxImage{constructor(){this.failOnCorruptedImage=!1}parse(e){if(65359===(0,n.readUint16)(e,0)){this.parseCodestream(e,0,e.length);return}const t=e.length;let a=0;for(;a>24&255,o>>16&255,o>>8&255,255&o);(0,r.warn)(`Unsupported header type ${o} (${i}).`)}l&&(a+=c)}}parseImageProperties(e){let t=e.getByte();for(;t>=0;){const a=t;t=e.getByte();if(65361===(a<<8|t)){e.skip(4);const t=e.getInt32()>>>0,a=e.getInt32()>>>0,r=e.getInt32()>>>0,n=e.getInt32()>>>0;e.skip(16);const i=e.getUint16();this.width=t-r;this.height=a-n;this.componentsCount=i;this.bitsPerComponent=8;return}}throw new JpxError("No size marker found in JPX stream")}parseCodestream(e,t,a){const i={};let s=!1;try{let o=t;for(;o+1>5;l=[];for(;a>3;t.mu=0}else{t.epsilon=e[a]>>3;t.mu=(7&e[a])<<8|e[a+1];a+=2}l.push(t)}b.SPqcds=l;if(i.mainHeader)i.QCD=b;else{i.currentTile.QCD=b;i.currentTile.QCC=[]}break;case 65373:f=(0,n.readUint16)(e,o);const y={};a=o+2;let w;if(i.SIZ.Csiz<257)w=e[a++];else{w=(0,n.readUint16)(e,a);a+=2}c=e[a++];switch(31&c){case 0:h=8;u=!0;break;case 1:h=16;u=!1;break;case 2:h=16;u=!0;break;default:throw new Error("Invalid SQcd value "+c)}y.noQuantization=8===h;y.scalarExpounded=u;y.guardBits=c>>5;l=[];for(;a>3;t.mu=0}else{t.epsilon=e[a]>>3;t.mu=(7&e[a])<<8|e[a+1];a+=2}l.push(t)}y.SPqcds=l;i.mainHeader?i.QCC[w]=y:i.currentTile.QCC[w]=y;break;case 65362:f=(0,n.readUint16)(e,o);const S={};a=o+2;const x=e[a++];S.entropyCoderWithCustomPrecincts=!!(1&x);S.sopMarkerUsed=!!(2&x);S.ephMarkerUsed=!!(4&x);S.progressionOrder=e[a++];S.layersCount=(0,n.readUint16)(e,a);a+=2;S.multipleComponentTransform=e[a++];S.decompositionLevelsCount=e[a++];S.xcb=2+(15&e[a++]);S.ycb=2+(15&e[a++]);const C=e[a++];S.selectiveArithmeticCodingBypass=!!(1&C);S.resetContextProbabilities=!!(2&C);S.terminationOnEachCodingPass=!!(4&C);S.verticallyStripe=!!(8&C);S.predictableTermination=!!(16&C);S.segmentationSymbolUsed=!!(32&C);S.reversibleTransformation=e[a++];if(S.entropyCoderWithCustomPrecincts){const t=[];for(;a>4})}S.precinctsSizes=t}const k=[];S.selectiveArithmeticCodingBypass&&k.push("selectiveArithmeticCodingBypass");S.terminationOnEachCodingPass&&k.push("terminationOnEachCodingPass");S.verticallyStripe&&k.push("verticallyStripe");S.predictableTermination&&k.push("predictableTermination");if(k.length>0){s=!0;(0,r.warn)(`JPX: Unsupported COD options (${k.join(", ")}).`)}if(i.mainHeader)i.COD=S;else{i.currentTile.COD=S;i.currentTile.COC=[]}break;case 65424:f=(0,n.readUint16)(e,o);d={};d.index=(0,n.readUint16)(e,o+2);d.length=(0,n.readUint32)(e,o+4);d.dataEnd=d.length+o-2;d.partIndex=e[o+8];d.partsCount=e[o+9];i.mainHeader=!1;if(0===d.partIndex){d.COD=i.COD;d.COC=i.COC.slice(0);d.QCD=i.QCD;d.QCC=i.QCC.slice(0)}i.currentTile=d;break;case 65427:d=i.currentTile;if(0===d.partIndex){initializeTile(i,d.index);buildPackets(i)}f=d.dataEnd-o;parseTilePackets(i,e,o,f);break;case 65363:(0,r.warn)("JPX: Codestream code 0xFF53 (COC) is not implemented.");case 65365:case 65367:case 65368:case 65380:f=(0,n.readUint16)(e,o);break;default:throw new Error("Unknown codestream code: "+t.toString(16))}o+=f}}catch(e){if(s||this.failOnCorruptedImage)throw new JpxError(e.message);(0,r.warn)(`JPX: Trying to recover from: "${e.message}".`)}this.tiles=function transformComponents(e){const t=e.SIZ,a=e.components,r=t.Csiz,n=[];for(let t=0,i=e.tiles.length;t>2);c[b++]=e+m>>h;c[b++]=e>>h;c[b++]=e+p>>h}else for(d=0;d>h;c[b++]=g-.34413*p-.71414*m>>h;c[b++]=g+1.772*p>>h}if(e)for(d=0,b=3;d>h}else for(let e=0;e>h;b+=r}}n.push(l)}return n}(i);this.width=i.SIZ.Xsiz-i.SIZ.XOsiz;this.height=i.SIZ.Ysiz-i.SIZ.YOsiz;this.componentsCount=i.SIZ.Csiz}};function calculateComponentDimensions(e,t){e.x0=Math.ceil(t.XOsiz/e.XRsiz);e.x1=Math.ceil(t.Xsiz/e.XRsiz);e.y0=Math.ceil(t.YOsiz/e.YRsiz);e.y1=Math.ceil(t.Ysiz/e.YRsiz);e.width=e.x1-e.x0;e.height=e.y1-e.y0}function calculateTileGrids(e,t){const a=e.SIZ,r=[];let n;const i=Math.ceil((a.Xsiz-a.XTOsiz)/a.XTsiz),s=Math.ceil((a.Ysiz-a.YTOsiz)/a.YTsiz);for(let e=0;e0?Math.min(r.xcb,n.PPx-1):Math.min(r.xcb,n.PPx);n.ycb_=a>0?Math.min(r.ycb,n.PPy-1):Math.min(r.ycb,n.PPy);return n}function buildPrecincts(e,t,a){const r=1<t.trx0?Math.ceil(t.trx1/r)-Math.floor(t.trx0/r):0,l=t.try1>t.try0?Math.ceil(t.try1/n)-Math.floor(t.try0/n):0,h=c*l;t.precinctParameters={precinctWidth:r,precinctHeight:n,numprecinctswide:c,numprecinctshigh:l,numprecincts:h,precinctWidthInSubband:s,precinctHeightInSubband:o}}function buildCodeblocks(e,t,a){const r=a.xcb_,n=a.ycb_,i=1<>r,c=t.tby0>>n,l=t.tbx1+i-1>>r,h=t.tby1+s-1>>n,u=t.resolution.precinctParameters,d=[],f=[];let g,p,m,b;for(p=c;pe.cbxMax&&(e.cbxMax=g);pe.cbyMax&&(e.cbyMax=p)}else f[b]=e={cbxMin:g,cbyMin:p,cbxMax:g,cbyMax:p};m.precinct=e}t.codeblockParameters={codeblockWidth:r,codeblockHeight:n,numcodeblockwide:l-o+1,numcodeblockhigh:h-c+1};t.codeblocks=d;t.precincts=f}function createPacket(e,t,a){const r=[],n=e.subbands;for(let e=0,a=n.length;ee.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[c],a=t.precinctParameters.numprecincts;for(;he.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[o],a=t.precinctParameters.numprecincts;for(;he.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[o],a=t.precinctParameters.numprecincts;if(!(l>=a)){for(;s=0;--e){const a=t.resolutions[e],r=g*a.precinctParameters.precinctWidth,n=g*a.precinctParameters.precinctHeight;h=Math.min(h,r);u=Math.min(u,n);d=Math.max(d,a.precinctParameters.numprecinctswide);f=Math.max(f,a.precinctParameters.numprecinctshigh);l[e]={width:r,height:n};g<<=1}a=Math.min(a,h);r=Math.min(r,u);n=Math.max(n,d);i=Math.max(i,f);s[o]={resolutions:l,minWidth:h,minHeight:u,maxNumWide:d,maxNumHigh:f}}return{components:s,minWidth:a,minHeight:r,maxNumWide:n,maxNumHigh:i}}function buildPackets(e){const t=e.SIZ,a=e.currentTile.index,r=e.tiles[a],n=t.Csiz;for(let e=0;e>>o&(1<0;){const e=i.shift();o=e.codeblock;void 0===o.data&&(o.data=[]);o.data.push({data:t,start:a+s,end:a+s+e.dataLength,codingpasses:e.codingpasses});s+=e.dataLength}}return s}function copyCoefficients(e,t,a,r,n,s,o,c,l){const h=r.tbx0,u=r.tby0,d=r.tbx1-r.tbx0,f=r.codeblocks,g="H"===r.type.charAt(0)?1:0,p="H"===r.type.charAt(1)?t:0;for(let a=0,m=f.length;a=s?j:j*(1<0?1-e:0)}const p=t.subbands[r],m=s[p.type];copyCoefficients(i,a,0,p,g?1:2**(f+m-o)*(1+n/2048),h+o-1,g,u,d)}m.push({width:a,height:n,items:i})}const y=p.calculate(m,r.tcx0,r.tcy0);return{left:r.tcx0,top:r.tcy0,width:y.width,height:y.height,items:y.items}}function initializeTile(e,t){const a=e.SIZ.Csiz,r=e.tiles[t];for(let t=0;t>=1;t>>=1;r++}r--;a=this.levels[r];a.items[a.index]=n;this.currentLevel=r;delete this.value}incrementValue(){const e=this.levels[this.currentLevel];e.items[e.index]++}nextLevel(){let e=this.currentLevel,t=this.levels[e];const a=t.items[t.index];e--;if(e<0){this.value=a;return!1}this.currentLevel=e;t=this.levels[e];t.items[t.index]=a;return!0}}class InclusionTree{constructor(e,t,a){const r=(0,n.log2)(Math.max(e,t))+1;this.levels=[];for(let n=0;na){this.currentLevel=r;this.propagateValues();return!1}e>>=1;t>>=1;r++}this.currentLevel=r-1;return!0}incrementValue(e){const t=this.levels[this.currentLevel];t.items[t.index]=e+1;this.propagateValues()}propagateValues(){let e=this.currentLevel,t=this.levels[e];const a=t.items[t.index];for(;--e>=0;){t=this.levels[e];t.items[t.index]=a}}nextLevel(){let e=this.currentLevel,t=this.levels[e];const a=t.items[t.index];t.items[t.index]=255;e--;if(e<0)return!1;this.currentLevel=e;t=this.levels[e];t.items[t.index]=a;return!0}}class BitModel{static UNIFORM_CONTEXT=17;static RUNLENGTH_CONTEXT=18;static LLAndLHContextsLabel=new Uint8Array([0,5,8,0,3,7,8,0,4,7,8,0,0,0,0,0,1,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8]);static HLContextLabel=new Uint8Array([0,3,4,0,5,7,7,0,8,8,8,0,0,0,0,0,1,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8]);static HHContextLabel=new Uint8Array([0,1,2,0,1,2,2,0,2,2,2,0,0,0,0,0,3,4,5,0,4,5,5,0,5,5,5,0,0,0,0,0,6,7,7,0,7,7,7,0,7,7,7,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8]);constructor(e,t,a,r,n){this.width=e;this.height=t;let i;i="HH"===a?BitModel.HHContextLabel:"HL"===a?BitModel.HLContextLabel:BitModel.LLAndLHContextsLabel;this.contextLabelTable=i;const s=e*t;this.neighborsSignificance=new Uint8Array(s);this.coefficentsSign=new Uint8Array(s);let o;o=n>14?new Uint32Array(s):n>6?new Uint16Array(s):new Uint8Array(s);this.coefficentsMagnitude=o;this.processingFlags=new Uint8Array(s);const c=new Uint8Array(s);if(0!==r)for(let e=0;e0,o=t+10){c=a-n;s&&(r[c-1]+=16);o&&(r[c+1]+=16);r[c]+=4}if(e+1=a)break;s[d]&=-2;if(r[d]||!i[d])continue;const g=c[i[d]];if(e.readBit(o,g)){const e=this.decodeSignBit(t,u,d);n[d]=e;r[d]=1;this.setNeighborsSignificance(t,u,d);s[d]|=2}l[d]++;s[d]|=1}}}decodeSignBit(e,t,a){const r=this.width,n=this.height,i=this.coefficentsMagnitude,s=this.coefficentsSign;let o,c,l,h,u,d;h=t>0&&0!==i[a-1];if(t+10&&0!==i[a-r];if(e+1=0){u=9+o;d=this.decoder.readBit(this.contexts,u)}else{u=9-o;d=1^this.decoder.readBit(this.contexts,u)}return d}runMagnitudeRefinementPass(){const e=this.decoder,t=this.width,a=this.height,r=this.coefficentsMagnitude,n=this.neighborsSignificance,i=this.contexts,s=this.bitsDecoded,o=this.processingFlags,c=t*a,l=4*t;for(let a,h=0;h>1;let n,i,s,o;const c=-1.586134342059924,l=-.052980118572961,h=.882911075530934,u=.443506852043971,d=1.230174104914001;n=(t|=0)-3;for(i=r+4;i--;n+=2)e[n]*=.8128930661159609;n=t-2;s=u*e[n-1];for(i=r+3;i--;n+=2){o=u*e[n+1];e[n]=d*e[n]-s-o;if(!i--)break;n+=2;s=u*e[n+1];e[n]=d*e[n]-s-o}n=t-1;s=h*e[n-1];for(i=r+2;i--;n+=2){o=h*e[n+1];e[n]-=s+o;if(!i--)break;n+=2;s=h*e[n+1];e[n]-=s+o}n=t;s=l*e[n-1];for(i=r+1;i--;n+=2){o=l*e[n+1];e[n]-=s+o;if(!i--)break;n+=2;s=l*e[n+1];e[n]-=s+o}if(0!==r){n=t+1;s=c*e[n-1];for(i=r;i--;n+=2){o=c*e[n+1];e[n]-=s+o;if(!i--)break;n+=2;s=c*e[n+1];e[n]-=s+o}}}}class ReversibleTransform extends Transform{filter(e,t,a){const r=a>>1;let n,i;for(n=t|=0,i=r+1;i--;n+=2)e[n]-=e[n-1]+e[n+1]+2>>2;for(n=t+1,i=r;i--;n+=2)e[n]+=e[n-1]+e[n+1]>>1}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.LZWStream=void 0;var r=a(18);class LZWStream extends r.DecodeStream{constructor(e,t,a){super(t);this.str=e;this.dict=e.dict;this.cachedData=0;this.bitsCached=0;const r=4096,n={earlyChange:a,codeLength:9,nextCode:258,dictionaryValues:new Uint8Array(r),dictionaryLengths:new Uint16Array(r),dictionaryPrevCodes:new Uint16Array(r),currentSequence:new Uint8Array(r),currentSequenceLength:0};for(let e=0;e<256;++e){n.dictionaryValues[e]=e;n.dictionaryLengths[e]=1}this.lzwState=n}readBits(e){let t=this.bitsCached,a=this.cachedData;for(;t>>t&(1<0;if(e<256){d[0]=e;f=1}else{if(!(e>=258)){if(256===e){h=9;s=258;f=0;continue}this.eof=!0;delete this.lzwState;break}if(e=0;t--){d[t]=o[a];a=l[a]}}else d[f++]=d[0]}if(n){l[s]=u;c[s]=c[u]+1;o[s]=d[0];s++;h=s+i&s+i-1?h:0|Math.min(Math.log(s+i)/.6931471805599453+1,12)}u=e;g+=f;if(r{Object.defineProperty(t,"__esModule",{value:!0});t.PredictorStream=void 0;var r=a(18),n=a(4),i=a(2);class PredictorStream extends r.DecodeStream{constructor(e,t,a){super(t);if(!(a instanceof n.Dict))return e;const r=this.predictor=a.get("Predictor")||1;if(r<=1)return e;if(2!==r&&(r<10||r>15))throw new i.FormatError(`Unsupported predictor: ${r}`);this.readBlock=2===r?this.readBlockTiff:this.readBlockPng;this.str=e;this.dict=e.dict;const s=this.colors=a.get("Colors")||1,o=this.bits=a.get("BPC","BitsPerComponent")||8,c=this.columns=a.get("Columns")||1;this.pixBytes=s*o+7>>3;this.rowBytes=c*s*o+7>>3;return this}readBlockTiff(){const e=this.rowBytes,t=this.bufferLength,a=this.ensureBuffer(t+e),r=this.bits,n=this.colors,i=this.str.getBytes(e);this.eof=!i.length;if(this.eof)return;let s,o=0,c=0,l=0,h=0,u=t;if(1===r&&1===n)for(s=0;s>1;e^=e>>2;e^=e>>4;o=(1&e)<<7;a[u++]=e}else if(8===r){for(s=0;s>8&255;a[u++]=255&e}}else{const e=new Uint8Array(n+1),u=(1<>l-r)&u;l-=r;c=c<=8){a[f++]=c>>h-8&255;h-=8}}h>0&&(a[f++]=(c<<8-h)+(o&(1<<8-h)-1))}this.bufferLength+=e}readBlockPng(){const e=this.rowBytes,t=this.pixBytes,a=this.str.getByte(),r=this.str.getBytes(e);this.eof=!r.length;if(this.eof)return;const n=this.bufferLength,s=this.ensureBuffer(n+e);let o=s.subarray(n-e,n);0===o.length&&(o=new Uint8Array(e));let c,l,h,u=n;switch(a){case 0:for(c=0;c>1)+r[c];for(;c>1)+r[c]&255;u++}break;case 4:for(c=0;c{Object.defineProperty(t,"__esModule",{value:!0});t.RunLengthStream=void 0;var r=a(18);class RunLengthStream extends r.DecodeStream{constructor(e,t){super(t);this.str=e;this.dict=e.dict}readBlock(){const e=this.str.getBytes(2);if(!e||e.length<2||128===e[0]){this.eof=!0;return}let t,a=this.bufferLength,r=e[0];if(r<128){t=this.ensureBuffer(a+r+1);t[a++]=e[1];if(r>0){const e=this.str.getBytes(r);t.set(e,a);a+=r}}else{r=257-r;const n=e[1];t=this.ensureBuffer(a+r+1);for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0});t.Font=t.ErrorFont=void 0;var r=a(2),n=a(35),i=a(38),s=a(40),o=a(39),c=a(37),l=a(41),h=a(42),u=a(43),d=a(44),f=a(45),g=a(46),p=a(14),m=a(47),b=a(3),y=a(8),w=a(48);const S=[[57344,63743],[1048576,1114109]],x=1e3,C=["ascent","bbox","black","bold","charProcOperatorList","composite","cssFontInfo","data","defaultVMetrics","defaultWidth","descent","fallbackName","fontMatrix","isInvalidPDFjsFont","isType3Font","italic","loadedName","mimetype","missingFile","name","remeasure","subtype","systemFontInfo","type","vertical"],k=["cMap","defaultEncoding","differences","isMonospace","isSerifFont","isSymbolicFont","seacMap","toFontChar","toUnicode","vmetrics","widths"];function adjustWidths(e){if(!e.fontMatrix)return;if(e.fontMatrix[0]===r.FONT_IDENTITY_MATRIX[0])return;const t=.001/e.fontMatrix[0],a=e.widths;for(const e in a)a[e]*=t;e.defaultWidth*=t}function amendFallbackToUnicode(e){if(!e.fallbackToUnicode)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;const t=[];for(const a in e.fallbackToUnicode)e.toUnicode.has(a)||(t[a]=e.fallbackToUnicode[a]);t.length>0&&e.toUnicode.amend(t)}class Glyph{constructor(e,t,a,r,n,i,s,o,c){this.originalCharCode=e;this.fontChar=t;this.unicode=a;this.accent=r;this.width=n;this.vmetric=i;this.operatorListId=s;this.isSpace=o;this.isInFont=c}get category(){return(0,r.shadow)(this,"category",(0,s.getCharUnicodeCategory)(this.unicode),!0)}}function int16(e,t){return(e<<8)+t}function writeSignedInt16(e,t,a){e[t+1]=a;e[t]=a>>>8}function signedInt16(e,t){const a=(e<<8)+t;return 32768&a?a-65536:a}function string16(e){return String.fromCharCode(e>>8&255,255&e)}function safeString16(e){e>32767?e=32767:e<-32768&&(e=-32768);return String.fromCharCode(e>>8&255,255&e)}function isTrueTypeCollectionFile(e){const t=e.peekBytes(4);return"ttcf"===(0,r.bytesToString)(t)}function getFontFileType(e,{type:t,subtype:a,composite:n}){let i,s;if(function isTrueTypeFile(e){const t=e.peekBytes(4);return 65536===(0,b.readUint32)(t,0)||"true"===(0,r.bytesToString)(t)}(e)||isTrueTypeCollectionFile(e))i=n?"CIDFontType2":"TrueType";else if(function isOpenTypeFile(e){const t=e.peekBytes(4);return"OTTO"===(0,r.bytesToString)(t)}(e))i=n?"CIDFontType2":"OpenType";else if(function isType1File(e){const t=e.peekBytes(2);return 37===t[0]&&33===t[1]||128===t[0]&&1===t[1]}(e))i=n?"CIDFontType0":"MMType1"===t?"MMType1":"Type1";else if(function isCFFFile(e){const t=e.peekBytes(4);return t[0]>=1&&t[3]>=1&&t[3]<=4}(e))if(n){i="CIDFontType0";s="CIDFontType0C"}else{i="MMType1"===t?"MMType1":"Type1";s="Type1C"}else{(0,r.warn)("getFontFileType: Unable to detect correct font file Type/Subtype.");i=t;s=a}return[i,s]}function applyStandardFontGlyphMap(e,t){for(const a in t)e[+a]=t[a]}function buildToFontChar(e,t,a){const r=[];let n;for(let a=0,i=e.length;au){l++;if(l>=S.length){(0,r.warn)("Ran out of space in font private use area.");break}h=S[l][0];u=S[l][1]}const p=h++;0===g&&(g=a);let m=n.get(f);"string"==typeof m&&(m=m.codePointAt(0));if(m&&!(d=m,S[0][0]<=d&&d<=S[0][1]||S[1][0]<=d&&d<=S[1][1])&&!c.has(g)){s.set(m,g);c.add(g)}i[p]=g;o[f]=p}var d;return{toFontChar:o,charCodeToGlyphId:i,toUnicodeExtraMap:s,nextAvailableFontCharCode:h}}function createCmapTable(e,t,a){const n=function getRanges(e,t,a){const r=[];for(const t in e)e[t]>=a||r.push({fontCharCode:0|t,glyphId:e[t]});if(t)for(const[e,n]of t)n>=a||r.push({fontCharCode:e,glyphId:n});0===r.length&&r.push({fontCharCode:0,glyphId:0});r.sort((function fontGetRangesSort(e,t){return e.fontCharCode-t.fontCharCode}));const n=[],i=r.length;for(let e=0;e65535?2:1;let s,o,c,l,h="\0\0"+string16(i)+"\0\0"+(0,r.string32)(4+8*i);for(s=n.length-1;s>=0&&!(n[s][0]<=65535);--s);const u=s+1;n[s][0]<65535&&65535===n[s][1]&&(n[s][1]=65534);const d=n[s][1]<65535?1:0,f=u+d,g=m.OpenTypeFileBuilder.getSearchParams(f,2);let p,b,y,w,S="",x="",C="",k="",v="",F=0;for(s=0,o=u;s0){x+="ÿÿ";S+="ÿÿ";C+="\0";k+="\0\0"}const O="\0\0"+string16(2*f)+string16(g.range)+string16(g.entry)+string16(g.rangeShift)+x+"\0\0"+S+C+k+v;let T="",M="";if(i>1){h+="\0\0\n"+(0,r.string32)(4+8*i+4+O.length);T="";for(s=0,o=n.length;se||!l)&&(l=e);h 123 are reserved for internal usage");c|=1<65535&&(h=65535)}else{l=0;h=255}const d=e.bbox||[0,0,0,0],f=a.unitsPerEm||1/(e.fontMatrix||r.FONT_IDENTITY_MATRIX)[0],g=e.ascentScaled?1:f/x,p=a.ascent||Math.round(g*(e.ascent||d[3]));let m=a.descent||Math.round(g*(e.descent||d[1]));m>0&&e.descent>0&&d[1]<0&&(m=-m);const b=a.yMax||p,y=-a.yMin||-m;return"\0$ô\0\0\0Š»\0\0\0ŒŠ»\0\0ß\x001\0\0\0\0"+String.fromCharCode(e.fixedPitch?9:0)+"\0\0\0\0\0\0"+(0,r.string32)(n)+(0,r.string32)(i)+(0,r.string32)(o)+(0,r.string32)(c)+"*21*"+string16(e.italicAngle?1:0)+string16(l||e.firstChar)+string16(h||e.lastChar)+string16(p)+string16(m)+"\0d"+string16(b)+string16(y)+"\0\0\0\0\0\0\0\0"+string16(e.xHeight)+string16(e.capHeight)+string16(0)+string16(l||e.firstChar)+"\0"}function createPostTable(e){const t=Math.floor(65536*e.italicAngle);return"\0\0\0"+(0,r.string32)(t)+"\0\0\0\0"+(0,r.string32)(e.fixedPitch?1:0)+"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}function createPostscriptName(e){return e.replaceAll(/[^\x21-\x7E]|[[\](){}<>/%]/g,"").slice(0,63)}function createNameTable(e,t){t||(t=[[],[]]);const a=[t[0][0]||"Original licence",t[0][1]||e,t[0][2]||"Unknown",t[0][3]||"uniqueID",t[0][4]||e,t[0][5]||"Version 0.11",t[0][6]||createPostscriptName(e),t[0][7]||"Unknown",t[0][8]||"Unknown",t[0][9]||"Unknown"],r=[];let n,i,s,o,c;for(n=0,i=a.length;n0;if((d||g)&&"CIDFontType2"===a&&this.cidEncoding.startsWith("Identity-")){const a=e.cidToGidMap,r=[];applyStandardFontGlyphMap(r,(0,l.getGlyphMapForStandardFonts)());/Arial-?Black/i.test(t)?applyStandardFontGlyphMap(r,(0,l.getSupplementalGlyphMapForArialBlack)()):/Calibri/i.test(t)&&applyStandardFontGlyphMap(r,(0,l.getSupplementalGlyphMapForCalibri)());if(a){for(const e in r){const t=r[e];void 0!==a[t]&&(r[+e]=a[t])}a.length!==this.toUnicode.length&&e.hasIncludedToUnicodeMap&&this.toUnicode instanceof h.IdentityToUnicodeMap&&this.toUnicode.forEach((function(e,t){const n=r[e];void 0===a[n]&&(r[+e]=t)}))}this.toUnicode instanceof h.IdentityToUnicodeMap||this.toUnicode.forEach((function(e,t){r[+e]=t}));this.toFontChar=r;this.toUnicode=new h.ToUnicodeMap(r)}else if(/Symbol/i.test(r))this.toFontChar=buildToFontChar(c.SymbolSetEncoding,(0,o.getGlyphsUnicode)(),this.differences);else if(/Dingbats/i.test(r))this.toFontChar=buildToFontChar(c.ZapfDingbatsEncoding,(0,o.getDingbatsGlyphsUnicode)(),this.differences);else if(d){const e=buildToFontChar(this.defaultEncoding,(0,o.getGlyphsUnicode)(),this.differences);"CIDFontType2"!==a||this.cidEncoding.startsWith("Identity-")||this.toUnicode instanceof h.IdentityToUnicodeMap||this.toUnicode.forEach((function(t,a){e[+t]=a}));this.toFontChar=e}else{const e=(0,o.getGlyphsUnicode)(),a=[];this.toUnicode.forEach(((t,r)=>{if(!this.composite){const a=this.differences[t]||this.defaultEncoding[t],n=(0,s.getUnicodeForGlyph)(a,e);-1!==n&&(r=n)}a[+t]=r}));this.composite&&this.toUnicode instanceof h.IdentityToUnicodeMap&&/Tahoma|Verdana/i.test(t)&&applyStandardFontGlyphMap(a,(0,l.getGlyphMapForStandardFonts)());this.toFontChar=a}amendFallbackToUnicode(e);this.loadedName=r.split("-")[0]}checkAndRepair(e,t,a){const s=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "];function readTables(e,t){const a=Object.create(null);a["OS/2"]=null;a.cmap=null;a.head=null;a.hhea=null;a.hmtx=null;a.maxp=null;a.name=null;a.post=null;for(let r=0;r>>0,r=e.getInt32()>>>0,n=e.getInt32()>>>0,i=e.pos;e.pos=e.start||0;e.skip(r);const s=e.getBytes(n);e.pos=i;if("head"===t){s[8]=s[9]=s[10]=s[11]=0;s[17]|=32}return{tag:t,checksum:a,length:n,offset:r,data:s}}function readOpenTypeHeader(e){return{version:e.getString(4),numTables:e.getUint16(),searchRange:e.getUint16(),entrySelector:e.getUint16(),rangeShift:e.getUint16()}}function sanitizeGlyph(e,t,a,r,n,i){const s={length:0,sizeOfInstructions:0};if(t<0||t>=e.length||a>e.length||a-t<=12)return s;const o=e.subarray(t,a),c=signedInt16(o[2],o[3]),l=signedInt16(o[4],o[5]),h=signedInt16(o[6],o[7]),u=signedInt16(o[8],o[9]);if(c>h){writeSignedInt16(o,2,h);writeSignedInt16(o,6,c)}if(l>u){writeSignedInt16(o,4,u);writeSignedInt16(o,8,l)}const d=signedInt16(o[0],o[1]);if(d<0){if(d<-1)return s;r.set(o,n);s.length=o.length;return s}let f,g=10,p=0;for(f=0;fo.length)return s;if(!i&&b>0){r.set(o.subarray(0,m),n);r.set([0,0],n+m);r.set(o.subarray(y,S),n+m+2);S-=b;o.length-S>3&&(S=S+3&-4);s.length=S;return s}if(o.length-S>3){S=S+3&-4;r.set(o.subarray(0,S),n);s.length=S;return s}r.set(o,n);s.length=o.length;return s}function readNameTable(e){const a=(t.start||0)+e.offset;t.pos=a;const r=[[],[]],n=[],i=e.length,s=a+i;if(0!==t.getUint16()||i<6)return[r,n];const o=t.getUint16(),c=t.getUint16();let l,h;for(l=0;ls)continue;t.pos=i;const o=e.name;if(e.encoding){let a="";for(let r=0,n=e.length;r0&&(h+=e-1)}}else{if(b||w){(0,r.warn)("TT: nested FDEFs not allowed");m=!0}b=!0;d=h;s=f.pop();t.functionsDefined[s]={data:c,i:h}}else if(!b&&!w){s=f.at(-1);if(isNaN(s))(0,r.info)("TT: CALL empty stack (or invalid entry).");else{t.functionsUsed[s]=!0;if(s in t.functionsStackDeltas){const e=f.length+t.functionsStackDeltas[s];if(e<0){(0,r.warn)("TT: CALL invalid functions stack delta.");t.hintsValid=!1;return}f.length=e}else if(s in t.functionsDefined&&!p.includes(s)){g.push({data:c,i:h,stackTop:f.length-1});p.push(s);o=t.functionsDefined[s];if(!o){(0,r.warn)("TT: CALL non-existent function");t.hintsValid=!1;return}c=o.data;h=o.i}}}if(!b&&!w){let t=0;e<=142?t=l[e]:e>=192&&e<=223?t=-1:e>=224&&(t=-2);if(e>=113&&e<=117){n=f.pop();isNaN(n)||(t=2*-n)}for(;t<0&&f.length>0;){f.pop();t++}for(;t>0;){f.push(NaN);t--}}}t.tooComplexToFollowFunctions=m;const S=[c];h>c.length&&S.push(new Uint8Array(h-c.length));if(d>u){(0,r.warn)("TT: complementing a missing function tail");S.push(new Uint8Array([34,45]))}!function foldTTTable(e,t){if(t.length>1){let a,r,n=0;for(a=0,r=t.length;a>>0,s=[];for(let t=0;t>>0);const o={ttcTag:t,majorVersion:a,minorVersion:n,numFonts:i,offsetTable:s};switch(a){case 1:return o;case 2:o.dsigTag=e.getInt32()>>>0;o.dsigLength=e.getInt32()>>>0;o.dsigOffset=e.getInt32()>>>0;return o}throw new r.FormatError(`Invalid TrueType Collection majorVersion: ${a}.`)}(e),i=t.split("+");let s;for(let o=0;o0||!(a.cMap instanceof p.IdentityCMap));if("OTTO"===d.version&&!t||!f.head||!f.hhea||!f.maxp||!f.post){w=new y.Stream(f["CFF "].data);b=new u.CFFFont(w,a);adjustWidths(a);return this.convert(e,b,a)}delete f.glyf;delete f.loca;delete f.fpgm;delete f.prep;delete f["cvt "];this.isOpenType=!0}if(!f.maxp)throw new r.FormatError('Required "maxp" table is not found');t.pos=(t.start||0)+f.maxp.offset;const x=t.getInt32(),C=t.getUint16();if(a.scaleFactors?.length===C&&S){const{scaleFactors:e}=a,t=int16(f.head.data[50],f.head.data[51]),r=new g.GlyfTable({glyfTable:f.glyf.data,isGlyphLocationsLong:t,locaTable:f.loca.data,numGlyphs:C});r.scale(e);const{glyf:n,loca:i,isLocationLong:s}=r.write();f.glyf.data=n;f.loca.data=i;if(s!==!!t){f.head.data[50]=0;f.head.data[51]=s?1:0}const o=f.hmtx.data;for(let t=0;t>8&255;o[a+1]=255&r;writeSignedInt16(o,a+2,Math.round(e[t]*signedInt16(o[a+2],o[a+3])))}}let k=C+1,v=!0;if(k>65535){v=!1;k=C;(0,r.warn)("Not enough space in glyfs to duplicate first glyph.")}let F=0,O=0;if(x>=65536&&f.maxp.length>=22){t.pos+=8;if(t.getUint16()>2){f.maxp.data[14]=0;f.maxp.data[15]=2}t.pos+=4;F=t.getUint16();t.pos+=4;O=t.getUint16()}f.maxp.data[4]=k>>8;f.maxp.data[5]=255&k;const T=function sanitizeTTPrograms(e,t,a,n){const i={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1,hintsValid:!0};e&&sanitizeTTProgram(e,i);t&&sanitizeTTProgram(t,i);e&&function checkInvalidFunctions(e,t){if(!e.tooComplexToFollowFunctions)if(e.functionsDefined.length>t){(0,r.warn)("TT: more functions defined than expected");e.hintsValid=!1}else for(let a=0,n=e.functionsUsed.length;at){(0,r.warn)("TT: invalid function id: "+a);e.hintsValid=!1;return}if(e.functionsUsed[a]&&!e.functionsDefined[a]){(0,r.warn)("TT: undefined function: "+a);e.hintsValid=!1;return}}}(i,n);if(a&&1&a.length){const e=new Uint8Array(a.length+1);e.set(a.data);a.data=e}return i.hintsValid}(f.fpgm,f.prep,f["cvt "],F);if(!T){delete f.fpgm;delete f.prep;delete f["cvt "]}!function sanitizeMetrics(e,t,a,n,i,s){if(!t){a&&(a.data=null);return}e.pos=(e.start||0)+t.offset;e.pos+=4;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;const o=e.getUint16();e.pos+=8;e.pos+=2;let c=e.getUint16();if(0!==o){if(!(2&int16(n.data[44],n.data[45]))){t.data[22]=0;t.data[23]=0}}if(c>i){(0,r.info)(`The numOfMetrics (${c}) should not be greater than the numGlyphs (${i}).`);c=i;t.data[34]=(65280&c)>>8;t.data[35]=255&c}const l=i-c-(a.length-4*c>>1);if(l>0){const e=new Uint8Array(a.length+2*l);e.set(a.data);if(s){e[a.length]=a.data[2];e[a.length+1]=a.data[3]}a.data=e}}(t,f.hhea,f.hmtx,f.head,k,v);if(!f.head)throw new r.FormatError('Required "head" table is not found');!function sanitizeHead(e,t,a){const n=e.data,i=function int32(e,t,a,r){return(e<<24)+(t<<16)+(a<<8)+r}(n[0],n[1],n[2],n[3]);if(i>>16!=1){(0,r.info)("Attempting to fix invalid version in head table: "+i);n[0]=0;n[1]=1;n[2]=0;n[3]=0}const s=int16(n[50],n[51]);if(s<0||s>1){(0,r.info)("Attempting to fix invalid indexToLocFormat in head table: "+s);const e=t+1;if(a===e<<1){n[50]=0;n[51]=0}else{if(a!==e<<2)throw new r.FormatError("Could not fix indexToLocFormat: "+s);n[50]=0;n[51]=1}}}(f.head,C,S?f.loca.length:0);let M=Object.create(null);if(S){const e=int16(f.head.data[50],f.head.data[51]),t=function sanitizeGlyphLocations(e,t,a,r,n,i,s){let o,c,l;if(r){o=4;c=function fontItemDecodeLong(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]};l=function fontItemEncodeLong(e,t,a){e[t]=a>>>24&255;e[t+1]=a>>16&255;e[t+2]=a>>8&255;e[t+3]=255&a}}else{o=2;c=function fontItemDecode(e,t){return e[t]<<9|e[t+1]<<1};l=function fontItemEncode(e,t,a){e[t]=a>>9&255;e[t+1]=a>>1&255}}const h=i?a+1:a,u=o*(1+h),d=new Uint8Array(u);d.set(e.data.subarray(0,u));e.data=d;const f=t.data,g=f.length,p=new Uint8Array(g);let m,b;const y=[];for(m=0,b=0;mg&&(e=g);y.push({index:m,offset:e,endOffset:0})}y.sort(((e,t)=>e.offset-t.offset));for(m=0;me.index-t.index));for(m=0;ms&&(s=e.sizeOfInstructions);S+=t;l(d,b,S)}if(0===S){const e=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(m=0,b=o;ma+S)t.data=p.subarray(0,a+S);else{t.data=new Uint8Array(a+S);t.data.set(p.subarray(0,S))}t.data.set(p.subarray(0,a),S);l(e.data,d.length-o,S+a)}else t.data=p.subarray(0,S);return{missingGlyphs:w,maxSizeOfInstructions:s}}(f.loca,f.glyf,C,e,T,v,O);M=t.missingGlyphs;if(x>=65536&&f.maxp.length>=22){f.maxp.data[26]=t.maxSizeOfInstructions>>8;f.maxp.data[27]=255&t.maxSizeOfInstructions}}if(!f.hhea)throw new r.FormatError('Required "hhea" table is not found');if(0===f.hhea.data[10]&&0===f.hhea.data[11]){f.hhea.data[10]=255;f.hhea.data[11]=255}const D={unitsPerEm:int16(f.head.data[18],f.head.data[19]),yMax:signedInt16(f.head.data[42],f.head.data[43]),yMin:signedInt16(f.head.data[38],f.head.data[39]),ascent:signedInt16(f.hhea.data[4],f.hhea.data[5]),descent:signedInt16(f.hhea.data[6],f.hhea.data[7]),lineGap:signedInt16(f.hhea.data[8],f.hhea.data[9])};this.ascent=D.ascent/D.unitsPerEm;this.descent=D.descent/D.unitsPerEm;this.lineGap=D.lineGap/D.unitsPerEm;if(this.cssFontInfo?.lineHeight){this.lineHeight=this.cssFontInfo.metrics.lineHeight;this.lineGap=this.cssFontInfo.metrics.lineGap}else this.lineHeight=this.ascent-this.descent+this.lineGap;f.post&&function readPostScriptTable(e,a,n){const s=(t.start||0)+e.offset;t.pos=s;const o=s+e.length,c=t.getInt32();t.skip(28);let l,h,u=!0;switch(c){case 65536:l=i.MacStandardGlyphOrdering;break;case 131072:const e=t.getUint16();if(e!==n){u=!1;break}const s=[];for(h=0;h=32768){u=!1;break}s.push(e)}if(!u)break;const d=[],f=[];for(;t.pos65535)throw new r.FormatError("Max size of CID is 65,535");let i=-1;t?i=n:void 0!==e[n]&&(i=e[n]);i>=0&&i>>0;let h=!1;if(c?.platformId!==r||c?.encodingId!==i){if(0!==r||0!==i&&1!==i&&3!==i)if(1===r&&0===i)h=!0;else if(3!==r||1!==i||!n&&c){if(a&&3===r&&0===i){h=!0;let a=!0;if(e>3;e.push(r);a=Math.max(r,a)}const r=[];for(let e=0;e<=a;e++)r.push({firstCode:t.getUint16(),entryCount:t.getUint16(),idDelta:signedInt16(t.getByte(),t.getByte()),idRangePos:t.pos+t.getUint16()});for(let a=0;a<256;a++)if(0===e[a]){t.pos=r[0].idRangePos+2*a;g=t.getUint16();d.push({charCode:a,glyphId:g})}else{const n=r[e[a]];for(f=0;f>1;t.skip(6);const a=[];let r;for(r=0;r>1)-(e-r);i.offsetIndex=n;o=Math.max(o,n+i.end-i.start+1)}else i.offsetIndex=-1}const c=[];for(f=0;f>>0;for(f=0;f>>0,a=t.getInt32()>>>0;let r=t.getInt32()>>>0;for(let t=e;t<=a;t++)d.push({charCode:t,glyphId:r++})}}}d.sort((function(e,t){return e.charCode-t.charCode}));for(let e=1;e=61440&&t<=61695&&(t&=255);E[t]=e.glyphId}if(a.glyphNames&&(u.length||this.differences.length))for(let e=0;e<256;++e){if(!d&&void 0!==E[e])continue;const t=this.differences[e]||u[e];if(!t)continue;const r=a.glyphNames.indexOf(t);r>0&&hasGlyph(r)&&(E[e]=r)}}0===E.length&&(E[0]=0);let N=k-1;v||(N=0);if(!a.cssFontInfo){const e=adjustMapping(E,hasGlyph,N,this.toUnicode);this.toFontChar=e.toFontChar;f.cmap={tag:"cmap",data:createCmapTable(e.charCodeToGlyphId,e.toUnicodeExtraMap,k)};f["OS/2"]&&function validateOS2Table(e,t){t.pos=(t.start||0)+e.offset;const a=t.getUint16();t.skip(60);const r=t.getUint16();if(a<4&&768&r)return!1;if(t.getUint16()>t.getUint16())return!1;t.skip(6);if(0===t.getUint16())return!1;e.data[8]=e.data[9]=0;return!0}(f["OS/2"],t)||(f["OS/2"]={tag:"OS/2",data:createOS2Table(a,e.charCodeToGlyphId,D)})}if(!S)try{w=new y.Stream(f["CFF "].data);b=new n.CFFParser(w,a,i.SEAC_ANALYSIS_ENABLED).parse();b.duplicateFirstGlyph();const e=new n.CFFCompiler(b);f["CFF "].data=e.compile()}catch{(0,r.warn)("Failed to compile font "+a.loadedName)}if(f.name){const[t,r]=readNameTable(f.name);f.name.data=createNameTable(e,t);this.psName=t[0][6]||null;a.composite||function adjustTrueTypeToUnicode(e,t,a){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(e.hasEncoding)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;if(!t)return;if(0===a.length)return;if(e.defaultEncoding===c.WinAnsiEncoding)return;for(const e of a)if(!isWinNameRecord(e))return;const r=c.WinAnsiEncoding,n=[],i=(0,o.getGlyphsUnicode)();for(const e in r){const t=r[e];if(""===t)continue;const a=i[t];void 0!==a&&(n[e]=String.fromCharCode(a))}n.length>0&&e.toUnicode.amend(n)}(a,this.isSymbolicFont,r)}else f.name={tag:"name",data:createNameTable(this.name)};const R=new m.OpenTypeFileBuilder(d.version);for(const e in f)R.addTable(e,f[e].data);return R.toArray()}convert(e,t,a){a.fixedPitch=!1;a.builtInEncoding&&function adjustType1ToUnicode(e,t){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(t===e.defaultEncoding)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;const a=[],r=(0,o.getGlyphsUnicode)();for(const n in t){if(e.hasEncoding&&(e.baseEncodingName||void 0!==e.differences[n]))continue;const i=t[n],o=(0,s.getUnicodeForGlyph)(i,r);-1!==o&&(a[n]=String.fromCharCode(o))}a.length>0&&e.toUnicode.amend(a)}(a,a.builtInEncoding);let n=1;t instanceof u.CFFFont&&(n=t.numGlyphs-1);const l=t.getGlyphMapping(a);let d=null,f=l,g=null;if(!a.cssFontInfo){d=adjustMapping(l,t.hasGlyphId.bind(t),n,this.toUnicode);this.toFontChar=d.toFontChar;f=d.charCodeToGlyphId;g=d.toUnicodeExtraMap}const p=t.numGlyphs;function getCharCodes(e,t){let a=null;for(const r in e)t===e[r]&&(a||=[]).push(0|r);return a}function createCharCode(e,t){for(const a in e)if(t===e[a])return 0|a;d.charCodeToGlyphId[d.nextAvailableFontCharCode]=t;return d.nextAvailableFontCharCode++}const b=t.seacs;if(d&&i.SEAC_ANALYSIS_ENABLED&&b?.length){const e=a.fontMatrix||r.FONT_IDENTITY_MATRIX,n=t.getCharset(),i=Object.create(null);for(let t in b){t|=0;const a=b[t],r=c.StandardEncoding[a[2]],s=c.StandardEncoding[a[3]],o=n.indexOf(r),h=n.indexOf(s);if(o<0||h<0)continue;const u={x:a[0]*e[0]+a[1]*e[2]+e[4],y:a[0]*e[1]+a[1]*e[3]+e[5]},f=getCharCodes(l,t);if(f)for(const e of f){const t=d.charCodeToGlyphId,a=createCharCode(t,o),r=createCharCode(t,h);i[e]={baseFontCharCode:a,accentFontCharCode:r,accentOffset:u}}}a.seacMap=i}const y=1/(a.fontMatrix||r.FONT_IDENTITY_MATRIX)[0],w=new m.OpenTypeFileBuilder("OTTO");w.addTable("CFF ",t.data);w.addTable("OS/2",createOS2Table(a,f));w.addTable("cmap",createCmapTable(f,g,p));w.addTable("head","\0\0\0\0\0\0\0\0\0\0_<õ\0\0"+safeString16(y)+"\0\0\0\0ž\v~'\0\0\0\0ž\v~'\0\0"+safeString16(a.descent)+"ÿ"+safeString16(a.ascent)+string16(a.italicAngle?2:0)+"\0\0\0\0\0\0\0");w.addTable("hhea","\0\0\0"+safeString16(a.ascent)+safeString16(a.descent)+"\0\0ÿÿ\0\0\0\0\0\0"+safeString16(a.capHeight)+safeString16(Math.tan(a.italicAngle)*a.xHeight)+"\0\0\0\0\0\0\0\0\0\0\0\0"+string16(p));w.addTable("hmtx",function fontFieldsHmtx(){const e=t.charstrings,a=t.cff?t.cff.widths:null;let r="\0\0\0\0";for(let t=1,n=p;tt.length%2==1,r=this.toUnicode instanceof h.IdentityToUnicodeMap?e=>this.toUnicode.charCodeOf(e):e=>this.toUnicode.charCodeOf(String.fromCodePoint(e));for(let n=0,i=e.length;n55295&&(i<57344||i>65533)&&n++;if(this.toUnicode){const e=r(i);if(-1!==e){if(hasCurrentBufErrors()){t.push(a.join(""));a.length=0}for(let t=(this.cMap?this.cMap.getCharCodeLength(e):1)-1;t>=0;t--)a.push(String.fromCharCode(e>>8*t&255));continue}}if(!hasCurrentBufErrors()){t.push(a.join(""));a.length=0}a.push(String.fromCodePoint(i))}t.push(a.join(""));return t}};t.ErrorFont=class ErrorFont{constructor(e){this.error=e;this.loadedName="g_font_error";this.missingFile=!0}charsToGlyphs(){return[]}encodeString(e){return[e]}exportData(e=!1){return{error:this.error}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CFFTopDict=t.CFFStrings=t.CFFStandardStrings=t.CFFPrivateDict=t.CFFParser=t.CFFIndex=t.CFFHeader=t.CFFFDSelect=t.CFFCompiler=t.CFFCharset=t.CFF=void 0;var r=a(2),n=a(36),i=a(37);const s=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"];t.CFFStandardStrings=s;const o=391,c=[null,{id:"hstem",min:2,stackClearing:!0,stem:!0},null,{id:"vstem",min:2,stackClearing:!0,stem:!0},{id:"vmoveto",min:1,stackClearing:!0},{id:"rlineto",min:2,resetStack:!0},{id:"hlineto",min:1,resetStack:!0},{id:"vlineto",min:1,resetStack:!0},{id:"rrcurveto",min:6,resetStack:!0},null,{id:"callsubr",min:1,undefStack:!0},{id:"return",min:0,undefStack:!0},null,null,{id:"endchar",min:0,stackClearing:!0},null,null,null,{id:"hstemhm",min:2,stackClearing:!0,stem:!0},{id:"hintmask",min:0,stackClearing:!0},{id:"cntrmask",min:0,stackClearing:!0},{id:"rmoveto",min:2,stackClearing:!0},{id:"hmoveto",min:1,stackClearing:!0},{id:"vstemhm",min:2,stackClearing:!0,stem:!0},{id:"rcurveline",min:8,resetStack:!0},{id:"rlinecurve",min:8,resetStack:!0},{id:"vvcurveto",min:4,resetStack:!0},{id:"hhcurveto",min:4,resetStack:!0},null,{id:"callgsubr",min:1,undefStack:!0},{id:"vhcurveto",min:4,resetStack:!0},{id:"hvcurveto",min:4,resetStack:!0}],l=[null,null,null,{id:"and",min:2,stackDelta:-1},{id:"or",min:2,stackDelta:-1},{id:"not",min:1,stackDelta:0},null,null,null,{id:"abs",min:1,stackDelta:0},{id:"add",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]+e[t-1]}},{id:"sub",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]-e[t-1]}},{id:"div",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]/e[t-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn(e,t){e[t-1]=-e[t-1]}},{id:"eq",min:2,stackDelta:-1},null,null,{id:"drop",min:1,stackDelta:-1},null,{id:"put",min:2,stackDelta:-2},{id:"get",min:1,stackDelta:0},{id:"ifelse",min:4,stackDelta:-3},{id:"random",min:0,stackDelta:1},{id:"mul",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]*e[t-1]}},null,{id:"sqrt",min:1,stackDelta:0},{id:"dup",min:1,stackDelta:1},{id:"exch",min:2,stackDelta:0},{id:"index",min:2,stackDelta:0},{id:"roll",min:3,stackDelta:-2},null,null,null,{id:"hflex",min:7,resetStack:!0},{id:"flex",min:13,resetStack:!0},{id:"hflex1",min:9,resetStack:!0},{id:"flex1",min:11,resetStack:!0}];t.CFFParser=class CFFParser{constructor(e,t,a){this.bytes=e.getBytes();this.properties=t;this.seacAnalysisEnabled=!!a}parse(){const e=this.properties,t=new CFF;this.cff=t;const a=this.parseHeader(),r=this.parseIndex(a.endPos),n=this.parseIndex(r.endPos),i=this.parseIndex(n.endPos),s=this.parseIndex(i.endPos),o=this.parseDict(n.obj.get(0)),c=this.createDict(CFFTopDict,o,t.strings);t.header=a.obj;t.names=this.parseNameIndex(r.obj);t.strings=this.parseStringIndex(i.obj);t.topDict=c;t.globalSubrIndex=s.obj;this.parsePrivateDict(t.topDict);t.isCIDFont=c.hasName("ROS");const l=c.getByName("CharStrings"),h=this.parseIndex(l).obj,u=c.getByName("FontMatrix");u&&(e.fontMatrix=u);const d=c.getByName("FontBBox");if(d){e.ascent=Math.max(d[3],d[1]);e.descent=Math.min(d[1],d[3]);e.ascentScaled=!0}let f,g;if(t.isCIDFont){const e=this.parseIndex(c.getByName("FDArray")).obj;for(let a=0,r=e.count;a=t)throw new r.FormatError("Invalid CFF header");if(0!==a){(0,r.info)("cff data is shifted");e=e.subarray(a);this.bytes=e}const n=e[0],i=e[1],s=e[2],o=e[3];return{obj:new CFFHeader(n,i,s,o),endPos:s}}parseDict(e){let t=0;function parseOperand(){let a=e[t++];if(30===a)return function parseFloatOperand(){let a="";const r=15,n=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],i=e.length;for(;t>4,o=15&i;if(s===r)break;a+=n[s];if(o===r)break;a+=n[o]}return parseFloat(a)}();if(28===a){a=e[t++];a=(a<<24|e[t++]<<16)>>16;return a}if(29===a){a=e[t++];a=a<<8|e[t++];a=a<<8|e[t++];a=a<<8|e[t++];return a}if(a>=32&&a<=246)return a-139;if(a>=247&&a<=250)return 256*(a-247)+e[t++]+108;if(a>=251&&a<=254)return-256*(a-251)-e[t++]-108;(0,r.warn)('CFFParser_parseDict: "'+a+'" is a reserved command.');return NaN}let a=[];const n=[];t=0;const i=e.length;for(;t10)return!1;let i=e.stackSize;const s=e.stack;let o=t.length;for(let h=0;h>16;h+=2;i++}else if(14===u){if(i>=4){i-=4;if(this.seacAnalysisEnabled){e.seac=s.slice(i,i+4);return!1}}d=c[u]}else if(u>=32&&u<=246){s[i]=u-139;i++}else if(u>=247&&u<=254){s[i]=u<251?(u-247<<8)+t[h]+108:-(u-251<<8)-t[h]-108;h++;i++}else if(255===u){s[i]=(t[h]<<24|t[h+1]<<16|t[h+2]<<8|t[h+3])/65536;h+=4;i++}else if(19===u||20===u){e.hints+=i>>1;if(0===e.hints){t.copyWithin(h-1,h,-1);h-=1;o-=1;continue}h+=e.hints+7>>3;i%=2;d=c[u]}else{if(10===u||29===u){const t=10===u?a:n;if(!t){d=c[u];(0,r.warn)("Missing subrsIndex for "+d.id);return!1}let o=32768;t.count<1240?o=107:t.count<33900&&(o=1131);const l=s[--i]+o;if(l<0||l>=t.count||isNaN(l)){d=c[u];(0,r.warn)("Out of bounds subrIndex for "+d.id);return!1}e.stackSize=i;e.callDepth++;if(!this.parseCharString(e,t.get(l),a,n))return!1;e.callDepth--;i=e.stackSize;continue}if(11===u){e.stackSize=i;return!0}if(0===u&&h===t.length){t[h-1]=14;d=c[14]}else{if(9===u){t.copyWithin(h-1,h,-1);h-=1;o-=1;continue}d=c[u]}}if(d){if(d.stem){e.hints+=i>>1;if(3===u||23===u)e.hasVStems=!0;else if(e.hasVStems&&(1===u||18===u)){(0,r.warn)("CFF stem hints are in wrong order");t[h-1]=1===u?3:23}}if("min"in d&&!e.undefStack&&i=2&&d.stem?i%=2:i>1&&(0,r.warn)("Found too many parameters for stack-clearing command");i>0&&(e.width=s[i-1])}if("stackDelta"in d){"stackFn"in d&&d.stackFn(s,i);i+=d.stackDelta}else if(d.stackClearing)i=0;else if(d.resetStack){i=0;e.undefStack=!1}else if(d.undefStack){i=0;e.undefStack=!0;e.firstStackClearing=!1}}}o=i.length){(0,r.warn)("Invalid fd index for glyph index.");d=!1}if(d){g=i[e].privateDict;f=g.subrsIndex}}else t&&(f=t);d&&(d=this.parseCharString(u,l,f,a));if(null!==u.width){const e=g.getByName("nominalWidthX");c[h]=e+u.width}else{const e=g.getByName("defaultWidthX");c[h]=e}null!==u.seac&&(o[h]=u.seac);d||e.set(h,new Uint8Array([14]))}return{charStrings:e,seacs:o,widths:c}}emptyPrivateDictionary(e){const t=this.createDict(CFFPrivateDict,[],e.strings);e.setByKey(18,[0,0]);e.privateDict=t}parsePrivateDict(e){if(!e.hasName("Private")){this.emptyPrivateDictionary(e);return}const t=e.getByName("Private");if(!Array.isArray(t)||2!==t.length){e.removeByName("Private");return}const a=t[0],r=t[1];if(0===a||r>=this.bytes.length){this.emptyPrivateDictionary(e);return}const n=r+a,i=this.bytes.subarray(r,n),s=this.parseDict(i),o=this.createDict(CFFPrivateDict,s,e.strings);e.privateDict=o;0===o.getByName("ExpansionFactor")&&o.setByName("ExpansionFactor",.06);if(!o.getByName("Subrs"))return;const c=o.getByName("Subrs"),l=r+c;if(0===c||l>=this.bytes.length){this.emptyPrivateDictionary(e);return}const h=this.parseIndex(l);o.subrsIndex=h.obj}parseCharsets(e,t,a,i){if(0===e)return new CFFCharset(!0,d.ISO_ADOBE,n.ISOAdobeCharset);if(1===e)return new CFFCharset(!0,d.EXPERT,n.ExpertCharset);if(2===e)return new CFFCharset(!0,d.EXPERT_SUBSET,n.ExpertSubsetCharset);const s=this.bytes,o=e,c=s[e++],l=[i?0:".notdef"];let h,u,f;t-=1;switch(c){case 0:for(f=0;f=65535){(0,r.warn)("Not enough space in charstrings to duplicate first glyph.");return}const e=this.charStrings.get(0);this.charStrings.add(e);this.isCIDFont&&this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0])}hasGlyphId(e){if(e<0||e>=this.charStrings.count)return!1;return this.charStrings.get(e).length>0}}t.CFF=CFF;class CFFHeader{constructor(e,t,a,r){this.major=e;this.minor=t;this.hdrSize=a;this.offSize=r}}t.CFFHeader=CFFHeader;class CFFStrings{constructor(){this.strings=[]}get(e){return e>=0&&e<=390?s[e]:e-o<=this.strings.length?this.strings[e-o]:s[0]}getSID(e){let t=s.indexOf(e);if(-1!==t)return t;t=this.strings.indexOf(e);return-1!==t?t+o:-1}add(e){this.strings.push(e)}get count(){return this.strings.length}}t.CFFStrings=CFFStrings;class CFFIndex{constructor(){this.objects=[];this.length=0}add(e){this.length+=e.length;this.objects.push(e)}set(e,t){this.length+=t.length-this.objects[e].length;this.objects[e]=t}get(e){return this.objects[e]}get count(){return this.objects.length}}t.CFFIndex=CFFIndex;class CFFDict{constructor(e,t){this.keyToNameMap=e.keyToNameMap;this.nameToKeyMap=e.nameToKeyMap;this.defaults=e.defaults;this.types=e.types;this.opcodes=e.opcodes;this.order=e.order;this.strings=t;this.values=Object.create(null)}setByKey(e,t){if(!(e in this.keyToNameMap))return!1;if(0===t.length)return!0;for(const a of t)if(isNaN(a)){(0,r.warn)(`Invalid CFFDict value: "${t}" for key "${e}".`);return!0}const a=this.types[e];"num"!==a&&"sid"!==a&&"offset"!==a||(t=t[0]);this.values[e]=t;return!0}setByName(e,t){if(!(e in this.nameToKeyMap))throw new r.FormatError(`Invalid dictionary name "${e}"`);this.values[this.nameToKeyMap[e]]=t}hasName(e){return this.nameToKeyMap[e]in this.values}getByName(e){if(!(e in this.nameToKeyMap))throw new r.FormatError(`Invalid dictionary name ${e}"`);const t=this.nameToKeyMap[e];return t in this.values?this.values[t]:this.defaults[t]}removeByName(e){delete this.values[this.nameToKeyMap[e]]}static createTables(e){const t={keyToNameMap:{},nameToKeyMap:{},defaults:{},types:{},opcodes:{},order:[]};for(const a of e){const e=Array.isArray(a[0])?(a[0][0]<<8)+a[0][1]:a[0];t.keyToNameMap[e]=a[1];t.nameToKeyMap[a[1]]=e;t.types[e]=a[2];t.defaults[e]=a[3];t.opcodes[e]=Array.isArray(a[0])?a[0]:[a[0]];t.order.push(e)}return t}}const h=[[[12,30],"ROS",["sid","sid","num"],null],[[12,20],"SyntheticBase","num",null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","num",0],[[12,2],"ItalicAngle","num",0],[[12,3],"UnderlinePosition","num",-100],[[12,4],"UnderlineThickness","num",50],[[12,5],"PaintType","num",0],[[12,6],"CharstringType","num",2],[[12,7],"FontMatrix",["num","num","num","num","num","num"],[.001,0,0,.001,0,0]],[13,"UniqueID","num",null],[5,"FontBBox",["num","num","num","num"],[0,0,0,0]],[[12,8],"StrokeWidth","num",0],[14,"XUID","array",null],[15,"charset","offset",0],[16,"Encoding","offset",0],[17,"CharStrings","offset",0],[18,"Private",["offset","offset"],null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","num",0],[[12,32],"CIDFontRevision","num",0],[[12,33],"CIDFontType","num",0],[[12,34],"CIDCount","num",8720],[[12,35],"UIDBase","num",null],[[12,37],"FDSelect","offset",null],[[12,36],"FDArray","offset",null],[[12,38],"FontName","sid",null]];class CFFTopDict extends CFFDict{static get tables(){return(0,r.shadow)(this,"tables",this.createTables(h))}constructor(e){super(CFFTopDict.tables,e);this.privateDict=null}}t.CFFTopDict=CFFTopDict;const u=[[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","num",.039625],[[12,10],"BlueShift","num",7],[[12,11],"BlueFuzz","num",1],[10,"StdHW","num",null],[11,"StdVW","num",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","num",0],[[12,17],"LanguageGroup","num",0],[[12,18],"ExpansionFactor","num",.06],[[12,19],"initialRandomSeed","num",0],[20,"defaultWidthX","num",0],[21,"nominalWidthX","num",0],[19,"Subrs","offset",null]];class CFFPrivateDict extends CFFDict{static get tables(){return(0,r.shadow)(this,"tables",this.createTables(u))}constructor(e){super(CFFPrivateDict.tables,e);this.subrsIndex=null}}t.CFFPrivateDict=CFFPrivateDict;const d={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2};class CFFCharset{constructor(e,t,a,r){this.predefined=e;this.format=t;this.charset=a;this.raw=r}}t.CFFCharset=CFFCharset;class CFFEncoding{constructor(e,t,a,r){this.predefined=e;this.format=t;this.encoding=a;this.raw=r}}class CFFFDSelect{constructor(e,t){this.format=e;this.fdSelect=t}getFDIndex(e){return e<0||e>=this.fdSelect.length?-1:this.fdSelect[e]}}t.CFFFDSelect=CFFFDSelect;class CFFOffsetTracker{constructor(){this.offsets=Object.create(null)}isTracking(e){return e in this.offsets}track(e,t){if(e in this.offsets)throw new r.FormatError(`Already tracking location of ${e}`);this.offsets[e]=t}offset(e){for(const t in this.offsets)this.offsets[t]+=e}setEntryLocation(e,t,a){if(!(e in this.offsets))throw new r.FormatError(`Not tracking location of ${e}`);const n=a.data,i=this.offsets[e];for(let e=0,a=t.length;e>24&255;n[o]=h>>16&255;n[c]=h>>8&255;n[l]=255&h}}}class CFFCompiler{constructor(e){this.cff=e}compile(){const e=this.cff,t={data:[],length:0,add(e){try{this.data.push(...e)}catch{this.data=this.data.concat(e)}this.length=this.data.length}},a=this.compileHeader(e.header);t.add(a);const n=this.compileNameIndex(e.names);t.add(n);if(e.isCIDFont&&e.topDict.hasName("FontMatrix")){const t=e.topDict.getByName("FontMatrix");e.topDict.removeByName("FontMatrix");for(const a of e.fdArray){let e=t.slice(0);a.hasName("FontMatrix")&&(e=r.Util.transform(e,a.getByName("FontMatrix")));a.setByName("FontMatrix",e)}}const i=e.topDict.getByName("XUID");i?.length>16&&e.topDict.removeByName("XUID");e.topDict.setByName("charset",0);let s=this.compileTopDicts([e.topDict],t.length,e.isCIDFont);t.add(s.output);const o=s.trackers[0],c=this.compileStringIndex(e.strings.strings);t.add(c);const l=this.compileIndex(e.globalSubrIndex);t.add(l);if(e.encoding&&e.topDict.hasName("Encoding"))if(e.encoding.predefined)o.setEntryLocation("Encoding",[e.encoding.format],t);else{const a=this.compileEncoding(e.encoding);o.setEntryLocation("Encoding",[t.length],t);t.add(a)}const h=this.compileCharset(e.charset,e.charStrings.count,e.strings,e.isCIDFont);o.setEntryLocation("charset",[t.length],t);t.add(h);const u=this.compileCharStrings(e.charStrings);o.setEntryLocation("CharStrings",[t.length],t);t.add(u);if(e.isCIDFont){o.setEntryLocation("FDSelect",[t.length],t);const a=this.compileFDSelect(e.fdSelect);t.add(a);s=this.compileTopDicts(e.fdArray,t.length,!0);o.setEntryLocation("FDArray",[t.length],t);t.add(s.output);const r=s.trackers;this.compilePrivateDicts(e.fdArray,r,t)}this.compilePrivateDicts([e.topDict],[o],t);t.add([0]);return t.data}encodeNumber(e){return Number.isInteger(e)?this.encodeInteger(e):this.encodeFloat(e)}static get EncodeFloatRegExp(){return(0,r.shadow)(this,"EncodeFloatRegExp",/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/)}encodeFloat(e){let t=e.toString();const a=CFFCompiler.EncodeFloatRegExp.exec(t);if(a){const r=parseFloat("1e"+((a[2]?+a[2]:0)+a[1].length));t=(Math.round(e*r)/r).toString()}let r,n,i="";for(r=0,n=t.length;r=-107&&e<=107?[e+139]:e>=108&&e<=1131?[247+((e-=108)>>8),255&e]:e>=-1131&&e<=-108?[251+((e=-e-108)>>8),255&e]:e>=-32768&&e<=32767?[28,e>>8&255,255&e]:[29,e>>24&255,e>>16&255,e>>8&255,255&e];return t}compileHeader(e){return[e.major,e.minor,4,e.offSize]}compileNameIndex(e){const t=new CFFIndex;for(const a of e){const e=Math.min(a.length,127);let n=new Array(e);for(let t=0;t"~"||"["===e||"]"===e||"("===e||")"===e||"{"===e||"}"===e||"<"===e||">"===e||"/"===e||"%"===e)&&(e="_");n[t]=e}n=n.join("");""===n&&(n="Bad_Font_Name");t.add((0,r.stringToBytes)(n))}return this.compileIndex(t)}compileTopDicts(e,t,a){const r=[];let n=new CFFIndex;for(const i of e){if(a){i.removeByName("CIDFontVersion");i.removeByName("CIDFontRevision");i.removeByName("CIDFontType");i.removeByName("CIDCount");i.removeByName("UIDBase")}const e=new CFFOffsetTracker,s=this.compileDict(i,e);r.push(e);n.add(s);e.offset(t)}n=this.compileIndex(n,r);return{trackers:r,output:n}}compilePrivateDicts(e,t,a){for(let n=0,i=e.length;n>8&255,255&s]);else{i=new Uint8Array(1+2*s);i[0]=0;let t=0;const n=e.charset.length;let o=!1;for(let s=1;s>8&255;i[s+1]=255&c}}return this.compileTypedArray(i)}compileEncoding(e){return this.compileTypedArray(e.raw)}compileFDSelect(e){const t=e.format;let a,r;switch(t){case 0:a=new Uint8Array(1+e.fdSelect.length);a[0]=t;for(r=0;r>8&255,255&n,i];for(r=1;r>8&255,255&r,t);i=t}}const o=(s.length-3)/3;s[1]=o>>8&255;s[2]=255&o;s.push(r>>8&255,255&r);a=new Uint8Array(s)}return this.compileTypedArray(a)}compileTypedArray(e){return Array.from(e)}compileIndex(e,t=[]){const a=e.objects,r=a.length;if(0===r)return[0,0];const n=[r>>8&255,255&r];let i,s,o=1;for(i=0;i>8&255,255&c):3===s?n.push(c>>16&255,c>>8&255,255&c):n.push(c>>>24&255,c>>16&255,c>>8&255,255&c);a[i]&&(c+=a[i].length)}for(i=0;i{Object.defineProperty(t,"__esModule",{value:!0});t.ISOAdobeCharset=t.ExpertSubsetCharset=t.ExpertCharset=void 0;t.ISOAdobeCharset=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"];t.ExpertCharset=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"];t.ExpertSubsetCharset=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"]},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ZapfDingbatsEncoding=t.WinAnsiEncoding=t.SymbolSetEncoding=t.StandardEncoding=t.MacRomanEncoding=t.ExpertEncoding=void 0;t.getEncoding=function getEncoding(e){switch(e){case"WinAnsiEncoding":return s;case"StandardEncoding":return i;case"MacRomanEncoding":return n;case"SymbolSetEncoding":return o;case"ZapfDingbatsEncoding":return c;case"ExpertEncoding":return a;case"MacExpertEncoding":return r;default:return null}};const a=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"];t.ExpertEncoding=a;const r=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","centoldstyle","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","","threequartersemdash","","questionsmall","","","","","Ethsmall","","","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","","","","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hypheninferior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","asuperior","centsuperior","","","","","Aacutesmall","Agravesmall","Acircumflexsmall","Adieresissmall","Atildesmall","Aringsmall","Ccedillasmall","Eacutesmall","Egravesmall","Ecircumflexsmall","Edieresissmall","Iacutesmall","Igravesmall","Icircumflexsmall","Idieresissmall","Ntildesmall","Oacutesmall","Ogravesmall","Ocircumflexsmall","Odieresissmall","Otildesmall","Uacutesmall","Ugravesmall","Ucircumflexsmall","Udieresissmall","","eightsuperior","fourinferior","threeinferior","sixinferior","eightinferior","seveninferior","Scaronsmall","","centinferior","twoinferior","","Dieresissmall","","Caronsmall","osuperior","fiveinferior","","commainferior","periodinferior","Yacutesmall","","dollarinferior","","","Thornsmall","","nineinferior","zeroinferior","Zcaronsmall","AEsmall","Oslashsmall","questiondownsmall","oneinferior","Lslashsmall","","","","","","","Cedillasmall","","","","","","OEsmall","figuredash","hyphensuperior","","","","","exclamdownsmall","","Ydieresissmall","","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","ninesuperior","zerosuperior","","esuperior","rsuperior","tsuperior","","","isuperior","ssuperior","dsuperior","","","","","","lsuperior","Ogoneksmall","Brevesmall","Macronsmall","bsuperior","nsuperior","msuperior","commasuperior","periodsuperior","Dotaccentsmall","Ringsmall","","","",""],n=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","space","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron"];t.MacRomanEncoding=n;const i=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls","","","",""];t.StandardEncoding=i;const s=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","bullet","Euro","bullet","quotesinglbase","florin","quotedblbase","ellipsis","dagger","daggerdbl","circumflex","perthousand","Scaron","guilsinglleft","OE","bullet","Zcaron","bullet","bullet","quoteleft","quoteright","quotedblleft","quotedblright","bullet","endash","emdash","tilde","trademark","scaron","guilsinglright","oe","bullet","zcaron","Ydieresis","space","exclamdown","cent","sterling","currency","yen","brokenbar","section","dieresis","copyright","ordfeminine","guillemotleft","logicalnot","hyphen","registered","macron","degree","plusminus","twosuperior","threesuperior","acute","mu","paragraph","periodcentered","cedilla","onesuperior","ordmasculine","guillemotright","onequarter","onehalf","threequarters","questiondown","Agrave","Aacute","Acircumflex","Atilde","Adieresis","Aring","AE","Ccedilla","Egrave","Eacute","Ecircumflex","Edieresis","Igrave","Iacute","Icircumflex","Idieresis","Eth","Ntilde","Ograve","Oacute","Ocircumflex","Otilde","Odieresis","multiply","Oslash","Ugrave","Uacute","Ucircumflex","Udieresis","Yacute","Thorn","germandbls","agrave","aacute","acircumflex","atilde","adieresis","aring","ae","ccedilla","egrave","eacute","ecircumflex","edieresis","igrave","iacute","icircumflex","idieresis","eth","ntilde","ograve","oacute","ocircumflex","otilde","odieresis","divide","oslash","ugrave","uacute","ucircumflex","udieresis","yacute","thorn","ydieresis"];t.WinAnsiEncoding=s;const o=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","universal","numbersign","existential","percent","ampersand","suchthat","parenleft","parenright","asteriskmath","plus","comma","minus","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","congruent","Alpha","Beta","Chi","Delta","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","bracketleft","therefore","bracketright","perpendicular","underscore","radicalex","alpha","beta","chi","delta","epsilon","phi","gamma","eta","iota","phi1","kappa","lambda","mu","nu","omicron","pi","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","braceleft","bar","braceright","similar","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Euro","Upsilon1","minute","lessequal","fraction","infinity","florin","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","degree","plusminus","second","greaterequal","multiply","proportional","partialdiff","bullet","divide","notequal","equivalence","approxequal","ellipsis","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","element","notelement","angle","gradient","registerserif","copyrightserif","trademarkserif","product","radical","dotmath","logicalnot","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","lozenge","angleleft","registersans","copyrightsans","trademarksans","summation","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt",""];t.SymbolSetEncoding=o;const c=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","a1","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","","","","","","","","","","","","","","","","","","","","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191",""];t.ZapfDingbatsEncoding=c},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.SEAC_ANALYSIS_ENABLED=t.MacStandardGlyphOrdering=t.FontFlags=void 0;t.normalizeFontName=function normalizeFontName(e){return e.replaceAll(/[,_]/g,"-").replaceAll(/\s/g,"")};t.recoverGlyphName=recoverGlyphName;t.type1FontGlyphMapping=function type1FontGlyphMapping(e,t,a){const i=Object.create(null);let s,c,l;const h=!!(e.flags&o.Symbolic);if(e.isInternalFont){l=t;for(c=0;c=0?s:0}}else if(e.baseEncodingName){l=(0,r.getEncoding)(e.baseEncodingName);for(c=0;c=0?s:0}}else if(h)for(c in t)i[c]=t[c];else{l=r.StandardEncoding;for(c=0;c=0?s:0}}const u=e.differences;let d;if(u)for(c in u){const e=u[c];s=a.indexOf(e);if(-1===s){d||(d=(0,n.getGlyphsUnicode)());const t=recoverGlyphName(e,d);t!==e&&(s=a.indexOf(t))}i[c]=s>=0?s:0}return i};var r=a(37),n=a(39),i=a(40),s=a(2);t.SEAC_ANALYSIS_ENABLED=!0;const o={FixedPitch:1,Serif:2,Symbolic:4,Script:8,Nonsymbolic:32,Italic:64,AllCap:65536,SmallCap:131072,ForceBold:262144};t.FontFlags=o;t.MacStandardGlyphOrdering=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"];function recoverGlyphName(e,t){if(void 0!==t[e])return e;const a=(0,i.getUnicodeForGlyph)(e,t);if(-1!==a)for(const e in t)if(t[e]===a)return e;(0,s.info)("Unable to recover a standard glyph name for: "+e);return e}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.getGlyphsUnicode=t.getDingbatsGlyphsUnicode=void 0;var r=a(3);const n=(0,r.getLookupTableFactory)((function(e){e.A=65;e.AE=198;e.AEacute=508;e.AEmacron=482;e.AEsmall=63462;e.Aacute=193;e.Aacutesmall=63457;e.Abreve=258;e.Abreveacute=7854;e.Abrevecyrillic=1232;e.Abrevedotbelow=7862;e.Abrevegrave=7856;e.Abrevehookabove=7858;e.Abrevetilde=7860;e.Acaron=461;e.Acircle=9398;e.Acircumflex=194;e.Acircumflexacute=7844;e.Acircumflexdotbelow=7852;e.Acircumflexgrave=7846;e.Acircumflexhookabove=7848;e.Acircumflexsmall=63458;e.Acircumflextilde=7850;e.Acute=63177;e.Acutesmall=63412;e.Acyrillic=1040;e.Adblgrave=512;e.Adieresis=196;e.Adieresiscyrillic=1234;e.Adieresismacron=478;e.Adieresissmall=63460;e.Adotbelow=7840;e.Adotmacron=480;e.Agrave=192;e.Agravesmall=63456;e.Ahookabove=7842;e.Aiecyrillic=1236;e.Ainvertedbreve=514;e.Alpha=913;e.Alphatonos=902;e.Amacron=256;e.Amonospace=65313;e.Aogonek=260;e.Aring=197;e.Aringacute=506;e.Aringbelow=7680;e.Aringsmall=63461;e.Asmall=63329;e.Atilde=195;e.Atildesmall=63459;e.Aybarmenian=1329;e.B=66;e.Bcircle=9399;e.Bdotaccent=7682;e.Bdotbelow=7684;e.Becyrillic=1041;e.Benarmenian=1330;e.Beta=914;e.Bhook=385;e.Blinebelow=7686;e.Bmonospace=65314;e.Brevesmall=63220;e.Bsmall=63330;e.Btopbar=386;e.C=67;e.Caarmenian=1342;e.Cacute=262;e.Caron=63178;e.Caronsmall=63221;e.Ccaron=268;e.Ccedilla=199;e.Ccedillaacute=7688;e.Ccedillasmall=63463;e.Ccircle=9400;e.Ccircumflex=264;e.Cdot=266;e.Cdotaccent=266;e.Cedillasmall=63416;e.Chaarmenian=1353;e.Cheabkhasiancyrillic=1212;e.Checyrillic=1063;e.Chedescenderabkhasiancyrillic=1214;e.Chedescendercyrillic=1206;e.Chedieresiscyrillic=1268;e.Cheharmenian=1347;e.Chekhakassiancyrillic=1227;e.Cheverticalstrokecyrillic=1208;e.Chi=935;e.Chook=391;e.Circumflexsmall=63222;e.Cmonospace=65315;e.Coarmenian=1361;e.Csmall=63331;e.D=68;e.DZ=497;e.DZcaron=452;e.Daarmenian=1332;e.Dafrican=393;e.Dcaron=270;e.Dcedilla=7696;e.Dcircle=9401;e.Dcircumflexbelow=7698;e.Dcroat=272;e.Ddotaccent=7690;e.Ddotbelow=7692;e.Decyrillic=1044;e.Deicoptic=1006;e.Delta=8710;e.Deltagreek=916;e.Dhook=394;e.Dieresis=63179;e.DieresisAcute=63180;e.DieresisGrave=63181;e.Dieresissmall=63400;e.Digammagreek=988;e.Djecyrillic=1026;e.Dlinebelow=7694;e.Dmonospace=65316;e.Dotaccentsmall=63223;e.Dslash=272;e.Dsmall=63332;e.Dtopbar=395;e.Dz=498;e.Dzcaron=453;e.Dzeabkhasiancyrillic=1248;e.Dzecyrillic=1029;e.Dzhecyrillic=1039;e.E=69;e.Eacute=201;e.Eacutesmall=63465;e.Ebreve=276;e.Ecaron=282;e.Ecedillabreve=7708;e.Echarmenian=1333;e.Ecircle=9402;e.Ecircumflex=202;e.Ecircumflexacute=7870;e.Ecircumflexbelow=7704;e.Ecircumflexdotbelow=7878;e.Ecircumflexgrave=7872;e.Ecircumflexhookabove=7874;e.Ecircumflexsmall=63466;e.Ecircumflextilde=7876;e.Ecyrillic=1028;e.Edblgrave=516;e.Edieresis=203;e.Edieresissmall=63467;e.Edot=278;e.Edotaccent=278;e.Edotbelow=7864;e.Efcyrillic=1060;e.Egrave=200;e.Egravesmall=63464;e.Eharmenian=1335;e.Ehookabove=7866;e.Eightroman=8551;e.Einvertedbreve=518;e.Eiotifiedcyrillic=1124;e.Elcyrillic=1051;e.Elevenroman=8554;e.Emacron=274;e.Emacronacute=7702;e.Emacrongrave=7700;e.Emcyrillic=1052;e.Emonospace=65317;e.Encyrillic=1053;e.Endescendercyrillic=1186;e.Eng=330;e.Enghecyrillic=1188;e.Enhookcyrillic=1223;e.Eogonek=280;e.Eopen=400;e.Epsilon=917;e.Epsilontonos=904;e.Ercyrillic=1056;e.Ereversed=398;e.Ereversedcyrillic=1069;e.Escyrillic=1057;e.Esdescendercyrillic=1194;e.Esh=425;e.Esmall=63333;e.Eta=919;e.Etarmenian=1336;e.Etatonos=905;e.Eth=208;e.Ethsmall=63472;e.Etilde=7868;e.Etildebelow=7706;e.Euro=8364;e.Ezh=439;e.Ezhcaron=494;e.Ezhreversed=440;e.F=70;e.Fcircle=9403;e.Fdotaccent=7710;e.Feharmenian=1366;e.Feicoptic=996;e.Fhook=401;e.Fitacyrillic=1138;e.Fiveroman=8548;e.Fmonospace=65318;e.Fourroman=8547;e.Fsmall=63334;e.G=71;e.GBsquare=13191;e.Gacute=500;e.Gamma=915;e.Gammaafrican=404;e.Gangiacoptic=1002;e.Gbreve=286;e.Gcaron=486;e.Gcedilla=290;e.Gcircle=9404;e.Gcircumflex=284;e.Gcommaaccent=290;e.Gdot=288;e.Gdotaccent=288;e.Gecyrillic=1043;e.Ghadarmenian=1346;e.Ghemiddlehookcyrillic=1172;e.Ghestrokecyrillic=1170;e.Gheupturncyrillic=1168;e.Ghook=403;e.Gimarmenian=1331;e.Gjecyrillic=1027;e.Gmacron=7712;e.Gmonospace=65319;e.Grave=63182;e.Gravesmall=63328;e.Gsmall=63335;e.Gsmallhook=667;e.Gstroke=484;e.H=72;e.H18533=9679;e.H18543=9642;e.H18551=9643;e.H22073=9633;e.HPsquare=13259;e.Haabkhasiancyrillic=1192;e.Hadescendercyrillic=1202;e.Hardsigncyrillic=1066;e.Hbar=294;e.Hbrevebelow=7722;e.Hcedilla=7720;e.Hcircle=9405;e.Hcircumflex=292;e.Hdieresis=7718;e.Hdotaccent=7714;e.Hdotbelow=7716;e.Hmonospace=65320;e.Hoarmenian=1344;e.Horicoptic=1e3;e.Hsmall=63336;e.Hungarumlaut=63183;e.Hungarumlautsmall=63224;e.Hzsquare=13200;e.I=73;e.IAcyrillic=1071;e.IJ=306;e.IUcyrillic=1070;e.Iacute=205;e.Iacutesmall=63469;e.Ibreve=300;e.Icaron=463;e.Icircle=9406;e.Icircumflex=206;e.Icircumflexsmall=63470;e.Icyrillic=1030;e.Idblgrave=520;e.Idieresis=207;e.Idieresisacute=7726;e.Idieresiscyrillic=1252;e.Idieresissmall=63471;e.Idot=304;e.Idotaccent=304;e.Idotbelow=7882;e.Iebrevecyrillic=1238;e.Iecyrillic=1045;e.Ifraktur=8465;e.Igrave=204;e.Igravesmall=63468;e.Ihookabove=7880;e.Iicyrillic=1048;e.Iinvertedbreve=522;e.Iishortcyrillic=1049;e.Imacron=298;e.Imacroncyrillic=1250;e.Imonospace=65321;e.Iniarmenian=1339;e.Iocyrillic=1025;e.Iogonek=302;e.Iota=921;e.Iotaafrican=406;e.Iotadieresis=938;e.Iotatonos=906;e.Ismall=63337;e.Istroke=407;e.Itilde=296;e.Itildebelow=7724;e.Izhitsacyrillic=1140;e.Izhitsadblgravecyrillic=1142;e.J=74;e.Jaarmenian=1345;e.Jcircle=9407;e.Jcircumflex=308;e.Jecyrillic=1032;e.Jheharmenian=1355;e.Jmonospace=65322;e.Jsmall=63338;e.K=75;e.KBsquare=13189;e.KKsquare=13261;e.Kabashkircyrillic=1184;e.Kacute=7728;e.Kacyrillic=1050;e.Kadescendercyrillic=1178;e.Kahookcyrillic=1219;e.Kappa=922;e.Kastrokecyrillic=1182;e.Kaverticalstrokecyrillic=1180;e.Kcaron=488;e.Kcedilla=310;e.Kcircle=9408;e.Kcommaaccent=310;e.Kdotbelow=7730;e.Keharmenian=1364;e.Kenarmenian=1343;e.Khacyrillic=1061;e.Kheicoptic=998;e.Khook=408;e.Kjecyrillic=1036;e.Klinebelow=7732;e.Kmonospace=65323;e.Koppacyrillic=1152;e.Koppagreek=990;e.Ksicyrillic=1134;e.Ksmall=63339;e.L=76;e.LJ=455;e.LL=63167;e.Lacute=313;e.Lambda=923;e.Lcaron=317;e.Lcedilla=315;e.Lcircle=9409;e.Lcircumflexbelow=7740;e.Lcommaaccent=315;e.Ldot=319;e.Ldotaccent=319;e.Ldotbelow=7734;e.Ldotbelowmacron=7736;e.Liwnarmenian=1340;e.Lj=456;e.Ljecyrillic=1033;e.Llinebelow=7738;e.Lmonospace=65324;e.Lslash=321;e.Lslashsmall=63225;e.Lsmall=63340;e.M=77;e.MBsquare=13190;e.Macron=63184;e.Macronsmall=63407;e.Macute=7742;e.Mcircle=9410;e.Mdotaccent=7744;e.Mdotbelow=7746;e.Menarmenian=1348;e.Mmonospace=65325;e.Msmall=63341;e.Mturned=412;e.Mu=924;e.N=78;e.NJ=458;e.Nacute=323;e.Ncaron=327;e.Ncedilla=325;e.Ncircle=9411;e.Ncircumflexbelow=7754;e.Ncommaaccent=325;e.Ndotaccent=7748;e.Ndotbelow=7750;e.Nhookleft=413;e.Nineroman=8552;e.Nj=459;e.Njecyrillic=1034;e.Nlinebelow=7752;e.Nmonospace=65326;e.Nowarmenian=1350;e.Nsmall=63342;e.Ntilde=209;e.Ntildesmall=63473;e.Nu=925;e.O=79;e.OE=338;e.OEsmall=63226;e.Oacute=211;e.Oacutesmall=63475;e.Obarredcyrillic=1256;e.Obarreddieresiscyrillic=1258;e.Obreve=334;e.Ocaron=465;e.Ocenteredtilde=415;e.Ocircle=9412;e.Ocircumflex=212;e.Ocircumflexacute=7888;e.Ocircumflexdotbelow=7896;e.Ocircumflexgrave=7890;e.Ocircumflexhookabove=7892;e.Ocircumflexsmall=63476;e.Ocircumflextilde=7894;e.Ocyrillic=1054;e.Odblacute=336;e.Odblgrave=524;e.Odieresis=214;e.Odieresiscyrillic=1254;e.Odieresissmall=63478;e.Odotbelow=7884;e.Ogoneksmall=63227;e.Ograve=210;e.Ogravesmall=63474;e.Oharmenian=1365;e.Ohm=8486;e.Ohookabove=7886;e.Ohorn=416;e.Ohornacute=7898;e.Ohorndotbelow=7906;e.Ohorngrave=7900;e.Ohornhookabove=7902;e.Ohorntilde=7904;e.Ohungarumlaut=336;e.Oi=418;e.Oinvertedbreve=526;e.Omacron=332;e.Omacronacute=7762;e.Omacrongrave=7760;e.Omega=8486;e.Omegacyrillic=1120;e.Omegagreek=937;e.Omegaroundcyrillic=1146;e.Omegatitlocyrillic=1148;e.Omegatonos=911;e.Omicron=927;e.Omicrontonos=908;e.Omonospace=65327;e.Oneroman=8544;e.Oogonek=490;e.Oogonekmacron=492;e.Oopen=390;e.Oslash=216;e.Oslashacute=510;e.Oslashsmall=63480;e.Osmall=63343;e.Ostrokeacute=510;e.Otcyrillic=1150;e.Otilde=213;e.Otildeacute=7756;e.Otildedieresis=7758;e.Otildesmall=63477;e.P=80;e.Pacute=7764;e.Pcircle=9413;e.Pdotaccent=7766;e.Pecyrillic=1055;e.Peharmenian=1354;e.Pemiddlehookcyrillic=1190;e.Phi=934;e.Phook=420;e.Pi=928;e.Piwrarmenian=1363;e.Pmonospace=65328;e.Psi=936;e.Psicyrillic=1136;e.Psmall=63344;e.Q=81;e.Qcircle=9414;e.Qmonospace=65329;e.Qsmall=63345;e.R=82;e.Raarmenian=1356;e.Racute=340;e.Rcaron=344;e.Rcedilla=342;e.Rcircle=9415;e.Rcommaaccent=342;e.Rdblgrave=528;e.Rdotaccent=7768;e.Rdotbelow=7770;e.Rdotbelowmacron=7772;e.Reharmenian=1360;e.Rfraktur=8476;e.Rho=929;e.Ringsmall=63228;e.Rinvertedbreve=530;e.Rlinebelow=7774;e.Rmonospace=65330;e.Rsmall=63346;e.Rsmallinverted=641;e.Rsmallinvertedsuperior=694;e.S=83;e.SF010000=9484;e.SF020000=9492;e.SF030000=9488;e.SF040000=9496;e.SF050000=9532;e.SF060000=9516;e.SF070000=9524;e.SF080000=9500;e.SF090000=9508;e.SF100000=9472;e.SF110000=9474;e.SF190000=9569;e.SF200000=9570;e.SF210000=9558;e.SF220000=9557;e.SF230000=9571;e.SF240000=9553;e.SF250000=9559;e.SF260000=9565;e.SF270000=9564;e.SF280000=9563;e.SF360000=9566;e.SF370000=9567;e.SF380000=9562;e.SF390000=9556;e.SF400000=9577;e.SF410000=9574;e.SF420000=9568;e.SF430000=9552;e.SF440000=9580;e.SF450000=9575;e.SF460000=9576;e.SF470000=9572;e.SF480000=9573;e.SF490000=9561;e.SF500000=9560;e.SF510000=9554;e.SF520000=9555;e.SF530000=9579;e.SF540000=9578;e.Sacute=346;e.Sacutedotaccent=7780;e.Sampigreek=992;e.Scaron=352;e.Scarondotaccent=7782;e.Scaronsmall=63229;e.Scedilla=350;e.Schwa=399;e.Schwacyrillic=1240;e.Schwadieresiscyrillic=1242;e.Scircle=9416;e.Scircumflex=348;e.Scommaaccent=536;e.Sdotaccent=7776;e.Sdotbelow=7778;e.Sdotbelowdotaccent=7784;e.Seharmenian=1357;e.Sevenroman=8550;e.Shaarmenian=1351;e.Shacyrillic=1064;e.Shchacyrillic=1065;e.Sheicoptic=994;e.Shhacyrillic=1210;e.Shimacoptic=1004;e.Sigma=931;e.Sixroman=8549;e.Smonospace=65331;e.Softsigncyrillic=1068;e.Ssmall=63347;e.Stigmagreek=986;e.T=84;e.Tau=932;e.Tbar=358;e.Tcaron=356;e.Tcedilla=354;e.Tcircle=9417;e.Tcircumflexbelow=7792;e.Tcommaaccent=354;e.Tdotaccent=7786;e.Tdotbelow=7788;e.Tecyrillic=1058;e.Tedescendercyrillic=1196;e.Tenroman=8553;e.Tetsecyrillic=1204;e.Theta=920;e.Thook=428;e.Thorn=222;e.Thornsmall=63486;e.Threeroman=8546;e.Tildesmall=63230;e.Tiwnarmenian=1359;e.Tlinebelow=7790;e.Tmonospace=65332;e.Toarmenian=1337;e.Tonefive=444;e.Tonesix=388;e.Tonetwo=423;e.Tretroflexhook=430;e.Tsecyrillic=1062;e.Tshecyrillic=1035;e.Tsmall=63348;e.Twelveroman=8555;e.Tworoman=8545;e.U=85;e.Uacute=218;e.Uacutesmall=63482;e.Ubreve=364;e.Ucaron=467;e.Ucircle=9418;e.Ucircumflex=219;e.Ucircumflexbelow=7798;e.Ucircumflexsmall=63483;e.Ucyrillic=1059;e.Udblacute=368;e.Udblgrave=532;e.Udieresis=220;e.Udieresisacute=471;e.Udieresisbelow=7794;e.Udieresiscaron=473;e.Udieresiscyrillic=1264;e.Udieresisgrave=475;e.Udieresismacron=469;e.Udieresissmall=63484;e.Udotbelow=7908;e.Ugrave=217;e.Ugravesmall=63481;e.Uhookabove=7910;e.Uhorn=431;e.Uhornacute=7912;e.Uhorndotbelow=7920;e.Uhorngrave=7914;e.Uhornhookabove=7916;e.Uhorntilde=7918;e.Uhungarumlaut=368;e.Uhungarumlautcyrillic=1266;e.Uinvertedbreve=534;e.Ukcyrillic=1144;e.Umacron=362;e.Umacroncyrillic=1262;e.Umacrondieresis=7802;e.Umonospace=65333;e.Uogonek=370;e.Upsilon=933;e.Upsilon1=978;e.Upsilonacutehooksymbolgreek=979;e.Upsilonafrican=433;e.Upsilondieresis=939;e.Upsilondieresishooksymbolgreek=980;e.Upsilonhooksymbol=978;e.Upsilontonos=910;e.Uring=366;e.Ushortcyrillic=1038;e.Usmall=63349;e.Ustraightcyrillic=1198;e.Ustraightstrokecyrillic=1200;e.Utilde=360;e.Utildeacute=7800;e.Utildebelow=7796;e.V=86;e.Vcircle=9419;e.Vdotbelow=7806;e.Vecyrillic=1042;e.Vewarmenian=1358;e.Vhook=434;e.Vmonospace=65334;e.Voarmenian=1352;e.Vsmall=63350;e.Vtilde=7804;e.W=87;e.Wacute=7810;e.Wcircle=9420;e.Wcircumflex=372;e.Wdieresis=7812;e.Wdotaccent=7814;e.Wdotbelow=7816;e.Wgrave=7808;e.Wmonospace=65335;e.Wsmall=63351;e.X=88;e.Xcircle=9421;e.Xdieresis=7820;e.Xdotaccent=7818;e.Xeharmenian=1341;e.Xi=926;e.Xmonospace=65336;e.Xsmall=63352;e.Y=89;e.Yacute=221;e.Yacutesmall=63485;e.Yatcyrillic=1122;e.Ycircle=9422;e.Ycircumflex=374;e.Ydieresis=376;e.Ydieresissmall=63487;e.Ydotaccent=7822;e.Ydotbelow=7924;e.Yericyrillic=1067;e.Yerudieresiscyrillic=1272;e.Ygrave=7922;e.Yhook=435;e.Yhookabove=7926;e.Yiarmenian=1349;e.Yicyrillic=1031;e.Yiwnarmenian=1362;e.Ymonospace=65337;e.Ysmall=63353;e.Ytilde=7928;e.Yusbigcyrillic=1130;e.Yusbigiotifiedcyrillic=1132;e.Yuslittlecyrillic=1126;e.Yuslittleiotifiedcyrillic=1128;e.Z=90;e.Zaarmenian=1334;e.Zacute=377;e.Zcaron=381;e.Zcaronsmall=63231;e.Zcircle=9423;e.Zcircumflex=7824;e.Zdot=379;e.Zdotaccent=379;e.Zdotbelow=7826;e.Zecyrillic=1047;e.Zedescendercyrillic=1176;e.Zedieresiscyrillic=1246;e.Zeta=918;e.Zhearmenian=1338;e.Zhebrevecyrillic=1217;e.Zhecyrillic=1046;e.Zhedescendercyrillic=1174;e.Zhedieresiscyrillic=1244;e.Zlinebelow=7828;e.Zmonospace=65338;e.Zsmall=63354;e.Zstroke=437;e.a=97;e.aabengali=2438;e.aacute=225;e.aadeva=2310;e.aagujarati=2694;e.aagurmukhi=2566;e.aamatragurmukhi=2622;e.aarusquare=13059;e.aavowelsignbengali=2494;e.aavowelsigndeva=2366;e.aavowelsigngujarati=2750;e.abbreviationmarkarmenian=1375;e.abbreviationsigndeva=2416;e.abengali=2437;e.abopomofo=12570;e.abreve=259;e.abreveacute=7855;e.abrevecyrillic=1233;e.abrevedotbelow=7863;e.abrevegrave=7857;e.abrevehookabove=7859;e.abrevetilde=7861;e.acaron=462;e.acircle=9424;e.acircumflex=226;e.acircumflexacute=7845;e.acircumflexdotbelow=7853;e.acircumflexgrave=7847;e.acircumflexhookabove=7849;e.acircumflextilde=7851;e.acute=180;e.acutebelowcmb=791;e.acutecmb=769;e.acutecomb=769;e.acutedeva=2388;e.acutelowmod=719;e.acutetonecmb=833;e.acyrillic=1072;e.adblgrave=513;e.addakgurmukhi=2673;e.adeva=2309;e.adieresis=228;e.adieresiscyrillic=1235;e.adieresismacron=479;e.adotbelow=7841;e.adotmacron=481;e.ae=230;e.aeacute=509;e.aekorean=12624;e.aemacron=483;e.afii00208=8213;e.afii08941=8356;e.afii10017=1040;e.afii10018=1041;e.afii10019=1042;e.afii10020=1043;e.afii10021=1044;e.afii10022=1045;e.afii10023=1025;e.afii10024=1046;e.afii10025=1047;e.afii10026=1048;e.afii10027=1049;e.afii10028=1050;e.afii10029=1051;e.afii10030=1052;e.afii10031=1053;e.afii10032=1054;e.afii10033=1055;e.afii10034=1056;e.afii10035=1057;e.afii10036=1058;e.afii10037=1059;e.afii10038=1060;e.afii10039=1061;e.afii10040=1062;e.afii10041=1063;e.afii10042=1064;e.afii10043=1065;e.afii10044=1066;e.afii10045=1067;e.afii10046=1068;e.afii10047=1069;e.afii10048=1070;e.afii10049=1071;e.afii10050=1168;e.afii10051=1026;e.afii10052=1027;e.afii10053=1028;e.afii10054=1029;e.afii10055=1030;e.afii10056=1031;e.afii10057=1032;e.afii10058=1033;e.afii10059=1034;e.afii10060=1035;e.afii10061=1036;e.afii10062=1038;e.afii10063=63172;e.afii10064=63173;e.afii10065=1072;e.afii10066=1073;e.afii10067=1074;e.afii10068=1075;e.afii10069=1076;e.afii10070=1077;e.afii10071=1105;e.afii10072=1078;e.afii10073=1079;e.afii10074=1080;e.afii10075=1081;e.afii10076=1082;e.afii10077=1083;e.afii10078=1084;e.afii10079=1085;e.afii10080=1086;e.afii10081=1087;e.afii10082=1088;e.afii10083=1089;e.afii10084=1090;e.afii10085=1091;e.afii10086=1092;e.afii10087=1093;e.afii10088=1094;e.afii10089=1095;e.afii10090=1096;e.afii10091=1097;e.afii10092=1098;e.afii10093=1099;e.afii10094=1100;e.afii10095=1101;e.afii10096=1102;e.afii10097=1103;e.afii10098=1169;e.afii10099=1106;e.afii10100=1107;e.afii10101=1108;e.afii10102=1109;e.afii10103=1110;e.afii10104=1111;e.afii10105=1112;e.afii10106=1113;e.afii10107=1114;e.afii10108=1115;e.afii10109=1116;e.afii10110=1118;e.afii10145=1039;e.afii10146=1122;e.afii10147=1138;e.afii10148=1140;e.afii10192=63174;e.afii10193=1119;e.afii10194=1123;e.afii10195=1139;e.afii10196=1141;e.afii10831=63175;e.afii10832=63176;e.afii10846=1241;e.afii299=8206;e.afii300=8207;e.afii301=8205;e.afii57381=1642;e.afii57388=1548;e.afii57392=1632;e.afii57393=1633;e.afii57394=1634;e.afii57395=1635;e.afii57396=1636;e.afii57397=1637;e.afii57398=1638;e.afii57399=1639;e.afii57400=1640;e.afii57401=1641;e.afii57403=1563;e.afii57407=1567;e.afii57409=1569;e.afii57410=1570;e.afii57411=1571;e.afii57412=1572;e.afii57413=1573;e.afii57414=1574;e.afii57415=1575;e.afii57416=1576;e.afii57417=1577;e.afii57418=1578;e.afii57419=1579;e.afii57420=1580;e.afii57421=1581;e.afii57422=1582;e.afii57423=1583;e.afii57424=1584;e.afii57425=1585;e.afii57426=1586;e.afii57427=1587;e.afii57428=1588;e.afii57429=1589;e.afii57430=1590;e.afii57431=1591;e.afii57432=1592;e.afii57433=1593;e.afii57434=1594;e.afii57440=1600;e.afii57441=1601;e.afii57442=1602;e.afii57443=1603;e.afii57444=1604;e.afii57445=1605;e.afii57446=1606;e.afii57448=1608;e.afii57449=1609;e.afii57450=1610;e.afii57451=1611;e.afii57452=1612;e.afii57453=1613;e.afii57454=1614;e.afii57455=1615;e.afii57456=1616;e.afii57457=1617;e.afii57458=1618;e.afii57470=1607;e.afii57505=1700;e.afii57506=1662;e.afii57507=1670;e.afii57508=1688;e.afii57509=1711;e.afii57511=1657;e.afii57512=1672;e.afii57513=1681;e.afii57514=1722;e.afii57519=1746;e.afii57534=1749;e.afii57636=8362;e.afii57645=1470;e.afii57658=1475;e.afii57664=1488;e.afii57665=1489;e.afii57666=1490;e.afii57667=1491;e.afii57668=1492;e.afii57669=1493;e.afii57670=1494;e.afii57671=1495;e.afii57672=1496;e.afii57673=1497;e.afii57674=1498;e.afii57675=1499;e.afii57676=1500;e.afii57677=1501;e.afii57678=1502;e.afii57679=1503;e.afii57680=1504;e.afii57681=1505;e.afii57682=1506;e.afii57683=1507;e.afii57684=1508;e.afii57685=1509;e.afii57686=1510;e.afii57687=1511;e.afii57688=1512;e.afii57689=1513;e.afii57690=1514;e.afii57694=64298;e.afii57695=64299;e.afii57700=64331;e.afii57705=64287;e.afii57716=1520;e.afii57717=1521;e.afii57718=1522;e.afii57723=64309;e.afii57793=1460;e.afii57794=1461;e.afii57795=1462;e.afii57796=1467;e.afii57797=1464;e.afii57798=1463;e.afii57799=1456;e.afii57800=1458;e.afii57801=1457;e.afii57802=1459;e.afii57803=1474;e.afii57804=1473;e.afii57806=1465;e.afii57807=1468;e.afii57839=1469;e.afii57841=1471;e.afii57842=1472;e.afii57929=700;e.afii61248=8453;e.afii61289=8467;e.afii61352=8470;e.afii61573=8236;e.afii61574=8237;e.afii61575=8238;e.afii61664=8204;e.afii63167=1645;e.afii64937=701;e.agrave=224;e.agujarati=2693;e.agurmukhi=2565;e.ahiragana=12354;e.ahookabove=7843;e.aibengali=2448;e.aibopomofo=12574;e.aideva=2320;e.aiecyrillic=1237;e.aigujarati=2704;e.aigurmukhi=2576;e.aimatragurmukhi=2632;e.ainarabic=1593;e.ainfinalarabic=65226;e.aininitialarabic=65227;e.ainmedialarabic=65228;e.ainvertedbreve=515;e.aivowelsignbengali=2504;e.aivowelsigndeva=2376;e.aivowelsigngujarati=2760;e.akatakana=12450;e.akatakanahalfwidth=65393;e.akorean=12623;e.alef=1488;e.alefarabic=1575;e.alefdageshhebrew=64304;e.aleffinalarabic=65166;e.alefhamzaabovearabic=1571;e.alefhamzaabovefinalarabic=65156;e.alefhamzabelowarabic=1573;e.alefhamzabelowfinalarabic=65160;e.alefhebrew=1488;e.aleflamedhebrew=64335;e.alefmaddaabovearabic=1570;e.alefmaddaabovefinalarabic=65154;e.alefmaksuraarabic=1609;e.alefmaksurafinalarabic=65264;e.alefmaksurainitialarabic=65267;e.alefmaksuramedialarabic=65268;e.alefpatahhebrew=64302;e.alefqamatshebrew=64303;e.aleph=8501;e.allequal=8780;e.alpha=945;e.alphatonos=940;e.amacron=257;e.amonospace=65345;e.ampersand=38;e.ampersandmonospace=65286;e.ampersandsmall=63270;e.amsquare=13250;e.anbopomofo=12578;e.angbopomofo=12580;e.angbracketleft=12296;e.angbracketright=12297;e.angkhankhuthai=3674;e.angle=8736;e.anglebracketleft=12296;e.anglebracketleftvertical=65087;e.anglebracketright=12297;e.anglebracketrightvertical=65088;e.angleleft=9001;e.angleright=9002;e.angstrom=8491;e.anoteleia=903;e.anudattadeva=2386;e.anusvarabengali=2434;e.anusvaradeva=2306;e.anusvaragujarati=2690;e.aogonek=261;e.apaatosquare=13056;e.aparen=9372;e.apostrophearmenian=1370;e.apostrophemod=700;e.apple=63743;e.approaches=8784;e.approxequal=8776;e.approxequalorimage=8786;e.approximatelyequal=8773;e.araeaekorean=12686;e.araeakorean=12685;e.arc=8978;e.arighthalfring=7834;e.aring=229;e.aringacute=507;e.aringbelow=7681;e.arrowboth=8596;e.arrowdashdown=8675;e.arrowdashleft=8672;e.arrowdashright=8674;e.arrowdashup=8673;e.arrowdblboth=8660;e.arrowdbldown=8659;e.arrowdblleft=8656;e.arrowdblright=8658;e.arrowdblup=8657;e.arrowdown=8595;e.arrowdownleft=8601;e.arrowdownright=8600;e.arrowdownwhite=8681;e.arrowheaddownmod=709;e.arrowheadleftmod=706;e.arrowheadrightmod=707;e.arrowheadupmod=708;e.arrowhorizex=63719;e.arrowleft=8592;e.arrowleftdbl=8656;e.arrowleftdblstroke=8653;e.arrowleftoverright=8646;e.arrowleftwhite=8678;e.arrowright=8594;e.arrowrightdblstroke=8655;e.arrowrightheavy=10142;e.arrowrightoverleft=8644;e.arrowrightwhite=8680;e.arrowtableft=8676;e.arrowtabright=8677;e.arrowup=8593;e.arrowupdn=8597;e.arrowupdnbse=8616;e.arrowupdownbase=8616;e.arrowupleft=8598;e.arrowupleftofdown=8645;e.arrowupright=8599;e.arrowupwhite=8679;e.arrowvertex=63718;e.asciicircum=94;e.asciicircummonospace=65342;e.asciitilde=126;e.asciitildemonospace=65374;e.ascript=593;e.ascriptturned=594;e.asmallhiragana=12353;e.asmallkatakana=12449;e.asmallkatakanahalfwidth=65383;e.asterisk=42;e.asteriskaltonearabic=1645;e.asteriskarabic=1645;e.asteriskmath=8727;e.asteriskmonospace=65290;e.asterisksmall=65121;e.asterism=8258;e.asuperior=63209;e.asymptoticallyequal=8771;e.at=64;e.atilde=227;e.atmonospace=65312;e.atsmall=65131;e.aturned=592;e.aubengali=2452;e.aubopomofo=12576;e.audeva=2324;e.augujarati=2708;e.augurmukhi=2580;e.aulengthmarkbengali=2519;e.aumatragurmukhi=2636;e.auvowelsignbengali=2508;e.auvowelsigndeva=2380;e.auvowelsigngujarati=2764;e.avagrahadeva=2365;e.aybarmenian=1377;e.ayin=1506;e.ayinaltonehebrew=64288;e.ayinhebrew=1506;e.b=98;e.babengali=2476;e.backslash=92;e.backslashmonospace=65340;e.badeva=2348;e.bagujarati=2732;e.bagurmukhi=2604;e.bahiragana=12400;e.bahtthai=3647;e.bakatakana=12496;e.bar=124;e.barmonospace=65372;e.bbopomofo=12549;e.bcircle=9425;e.bdotaccent=7683;e.bdotbelow=7685;e.beamedsixteenthnotes=9836;e.because=8757;e.becyrillic=1073;e.beharabic=1576;e.behfinalarabic=65168;e.behinitialarabic=65169;e.behiragana=12409;e.behmedialarabic=65170;e.behmeeminitialarabic=64671;e.behmeemisolatedarabic=64520;e.behnoonfinalarabic=64621;e.bekatakana=12505;e.benarmenian=1378;e.bet=1489;e.beta=946;e.betasymbolgreek=976;e.betdagesh=64305;e.betdageshhebrew=64305;e.bethebrew=1489;e.betrafehebrew=64332;e.bhabengali=2477;e.bhadeva=2349;e.bhagujarati=2733;e.bhagurmukhi=2605;e.bhook=595;e.bihiragana=12403;e.bikatakana=12499;e.bilabialclick=664;e.bindigurmukhi=2562;e.birusquare=13105;e.blackcircle=9679;e.blackdiamond=9670;e.blackdownpointingtriangle=9660;e.blackleftpointingpointer=9668;e.blackleftpointingtriangle=9664;e.blacklenticularbracketleft=12304;e.blacklenticularbracketleftvertical=65083;e.blacklenticularbracketright=12305;e.blacklenticularbracketrightvertical=65084;e.blacklowerlefttriangle=9699;e.blacklowerrighttriangle=9698;e.blackrectangle=9644;e.blackrightpointingpointer=9658;e.blackrightpointingtriangle=9654;e.blacksmallsquare=9642;e.blacksmilingface=9787;e.blacksquare=9632;e.blackstar=9733;e.blackupperlefttriangle=9700;e.blackupperrighttriangle=9701;e.blackuppointingsmalltriangle=9652;e.blackuppointingtriangle=9650;e.blank=9251;e.blinebelow=7687;e.block=9608;e.bmonospace=65346;e.bobaimaithai=3610;e.bohiragana=12412;e.bokatakana=12508;e.bparen=9373;e.bqsquare=13251;e.braceex=63732;e.braceleft=123;e.braceleftbt=63731;e.braceleftmid=63730;e.braceleftmonospace=65371;e.braceleftsmall=65115;e.bracelefttp=63729;e.braceleftvertical=65079;e.braceright=125;e.bracerightbt=63742;e.bracerightmid=63741;e.bracerightmonospace=65373;e.bracerightsmall=65116;e.bracerighttp=63740;e.bracerightvertical=65080;e.bracketleft=91;e.bracketleftbt=63728;e.bracketleftex=63727;e.bracketleftmonospace=65339;e.bracketlefttp=63726;e.bracketright=93;e.bracketrightbt=63739;e.bracketrightex=63738;e.bracketrightmonospace=65341;e.bracketrighttp=63737;e.breve=728;e.brevebelowcmb=814;e.brevecmb=774;e.breveinvertedbelowcmb=815;e.breveinvertedcmb=785;e.breveinverteddoublecmb=865;e.bridgebelowcmb=810;e.bridgeinvertedbelowcmb=826;e.brokenbar=166;e.bstroke=384;e.bsuperior=63210;e.btopbar=387;e.buhiragana=12406;e.bukatakana=12502;e.bullet=8226;e.bulletinverse=9688;e.bulletoperator=8729;e.bullseye=9678;e.c=99;e.caarmenian=1390;e.cabengali=2458;e.cacute=263;e.cadeva=2330;e.cagujarati=2714;e.cagurmukhi=2586;e.calsquare=13192;e.candrabindubengali=2433;e.candrabinducmb=784;e.candrabindudeva=2305;e.candrabindugujarati=2689;e.capslock=8682;e.careof=8453;e.caron=711;e.caronbelowcmb=812;e.caroncmb=780;e.carriagereturn=8629;e.cbopomofo=12568;e.ccaron=269;e.ccedilla=231;e.ccedillaacute=7689;e.ccircle=9426;e.ccircumflex=265;e.ccurl=597;e.cdot=267;e.cdotaccent=267;e.cdsquare=13253;e.cedilla=184;e.cedillacmb=807;e.cent=162;e.centigrade=8451;e.centinferior=63199;e.centmonospace=65504;e.centoldstyle=63394;e.centsuperior=63200;e.chaarmenian=1401;e.chabengali=2459;e.chadeva=2331;e.chagujarati=2715;e.chagurmukhi=2587;e.chbopomofo=12564;e.cheabkhasiancyrillic=1213;e.checkmark=10003;e.checyrillic=1095;e.chedescenderabkhasiancyrillic=1215;e.chedescendercyrillic=1207;e.chedieresiscyrillic=1269;e.cheharmenian=1395;e.chekhakassiancyrillic=1228;e.cheverticalstrokecyrillic=1209;e.chi=967;e.chieuchacirclekorean=12919;e.chieuchaparenkorean=12823;e.chieuchcirclekorean=12905;e.chieuchkorean=12618;e.chieuchparenkorean=12809;e.chochangthai=3594;e.chochanthai=3592;e.chochingthai=3593;e.chochoethai=3596;e.chook=392;e.cieucacirclekorean=12918;e.cieucaparenkorean=12822;e.cieuccirclekorean=12904;e.cieuckorean=12616;e.cieucparenkorean=12808;e.cieucuparenkorean=12828;e.circle=9675;e.circlecopyrt=169;e.circlemultiply=8855;e.circleot=8857;e.circleplus=8853;e.circlepostalmark=12342;e.circlewithlefthalfblack=9680;e.circlewithrighthalfblack=9681;e.circumflex=710;e.circumflexbelowcmb=813;e.circumflexcmb=770;e.clear=8999;e.clickalveolar=450;e.clickdental=448;e.clicklateral=449;e.clickretroflex=451;e.club=9827;e.clubsuitblack=9827;e.clubsuitwhite=9831;e.cmcubedsquare=13220;e.cmonospace=65347;e.cmsquaredsquare=13216;e.coarmenian=1409;e.colon=58;e.colonmonetary=8353;e.colonmonospace=65306;e.colonsign=8353;e.colonsmall=65109;e.colontriangularhalfmod=721;e.colontriangularmod=720;e.comma=44;e.commaabovecmb=787;e.commaaboverightcmb=789;e.commaaccent=63171;e.commaarabic=1548;e.commaarmenian=1373;e.commainferior=63201;e.commamonospace=65292;e.commareversedabovecmb=788;e.commareversedmod=701;e.commasmall=65104;e.commasuperior=63202;e.commaturnedabovecmb=786;e.commaturnedmod=699;e.compass=9788;e.congruent=8773;e.contourintegral=8750;e.control=8963;e.controlACK=6;e.controlBEL=7;e.controlBS=8;e.controlCAN=24;e.controlCR=13;e.controlDC1=17;e.controlDC2=18;e.controlDC3=19;e.controlDC4=20;e.controlDEL=127;e.controlDLE=16;e.controlEM=25;e.controlENQ=5;e.controlEOT=4;e.controlESC=27;e.controlETB=23;e.controlETX=3;e.controlFF=12;e.controlFS=28;e.controlGS=29;e.controlHT=9;e.controlLF=10;e.controlNAK=21;e.controlNULL=0;e.controlRS=30;e.controlSI=15;e.controlSO=14;e.controlSOT=2;e.controlSTX=1;e.controlSUB=26;e.controlSYN=22;e.controlUS=31;e.controlVT=11;e.copyright=169;e.copyrightsans=63721;e.copyrightserif=63193;e.cornerbracketleft=12300;e.cornerbracketlefthalfwidth=65378;e.cornerbracketleftvertical=65089;e.cornerbracketright=12301;e.cornerbracketrighthalfwidth=65379;e.cornerbracketrightvertical=65090;e.corporationsquare=13183;e.cosquare=13255;e.coverkgsquare=13254;e.cparen=9374;e.cruzeiro=8354;e.cstretched=663;e.curlyand=8911;e.curlyor=8910;e.currency=164;e.cyrBreve=63185;e.cyrFlex=63186;e.cyrbreve=63188;e.cyrflex=63189;e.d=100;e.daarmenian=1380;e.dabengali=2470;e.dadarabic=1590;e.dadeva=2342;e.dadfinalarabic=65214;e.dadinitialarabic=65215;e.dadmedialarabic=65216;e.dagesh=1468;e.dageshhebrew=1468;e.dagger=8224;e.daggerdbl=8225;e.dagujarati=2726;e.dagurmukhi=2598;e.dahiragana=12384;e.dakatakana=12480;e.dalarabic=1583;e.dalet=1491;e.daletdagesh=64307;e.daletdageshhebrew=64307;e.dalethebrew=1491;e.dalfinalarabic=65194;e.dammaarabic=1615;e.dammalowarabic=1615;e.dammatanaltonearabic=1612;e.dammatanarabic=1612;e.danda=2404;e.dargahebrew=1447;e.dargalefthebrew=1447;e.dasiapneumatacyrilliccmb=1157;e.dblGrave=63187;e.dblanglebracketleft=12298;e.dblanglebracketleftvertical=65085;e.dblanglebracketright=12299;e.dblanglebracketrightvertical=65086;e.dblarchinvertedbelowcmb=811;e.dblarrowleft=8660;e.dblarrowright=8658;e.dbldanda=2405;e.dblgrave=63190;e.dblgravecmb=783;e.dblintegral=8748;e.dbllowline=8215;e.dbllowlinecmb=819;e.dbloverlinecmb=831;e.dblprimemod=698;e.dblverticalbar=8214;e.dblverticallineabovecmb=782;e.dbopomofo=12553;e.dbsquare=13256;e.dcaron=271;e.dcedilla=7697;e.dcircle=9427;e.dcircumflexbelow=7699;e.dcroat=273;e.ddabengali=2465;e.ddadeva=2337;e.ddagujarati=2721;e.ddagurmukhi=2593;e.ddalarabic=1672;e.ddalfinalarabic=64393;e.dddhadeva=2396;e.ddhabengali=2466;e.ddhadeva=2338;e.ddhagujarati=2722;e.ddhagurmukhi=2594;e.ddotaccent=7691;e.ddotbelow=7693;e.decimalseparatorarabic=1643;e.decimalseparatorpersian=1643;e.decyrillic=1076;e.degree=176;e.dehihebrew=1453;e.dehiragana=12391;e.deicoptic=1007;e.dekatakana=12487;e.deleteleft=9003;e.deleteright=8998;e.delta=948;e.deltaturned=397;e.denominatorminusonenumeratorbengali=2552;e.dezh=676;e.dhabengali=2471;e.dhadeva=2343;e.dhagujarati=2727;e.dhagurmukhi=2599;e.dhook=599;e.dialytikatonos=901;e.dialytikatonoscmb=836;e.diamond=9830;e.diamondsuitwhite=9826;e.dieresis=168;e.dieresisacute=63191;e.dieresisbelowcmb=804;e.dieresiscmb=776;e.dieresisgrave=63192;e.dieresistonos=901;e.dihiragana=12386;e.dikatakana=12482;e.dittomark=12291;e.divide=247;e.divides=8739;e.divisionslash=8725;e.djecyrillic=1106;e.dkshade=9619;e.dlinebelow=7695;e.dlsquare=13207;e.dmacron=273;e.dmonospace=65348;e.dnblock=9604;e.dochadathai=3598;e.dodekthai=3604;e.dohiragana=12393;e.dokatakana=12489;e.dollar=36;e.dollarinferior=63203;e.dollarmonospace=65284;e.dollaroldstyle=63268;e.dollarsmall=65129;e.dollarsuperior=63204;e.dong=8363;e.dorusquare=13094;e.dotaccent=729;e.dotaccentcmb=775;e.dotbelowcmb=803;e.dotbelowcomb=803;e.dotkatakana=12539;e.dotlessi=305;e.dotlessj=63166;e.dotlessjstrokehook=644;e.dotmath=8901;e.dottedcircle=9676;e.doubleyodpatah=64287;e.doubleyodpatahhebrew=64287;e.downtackbelowcmb=798;e.downtackmod=725;e.dparen=9375;e.dsuperior=63211;e.dtail=598;e.dtopbar=396;e.duhiragana=12389;e.dukatakana=12485;e.dz=499;e.dzaltone=675;e.dzcaron=454;e.dzcurl=677;e.dzeabkhasiancyrillic=1249;e.dzecyrillic=1109;e.dzhecyrillic=1119;e.e=101;e.eacute=233;e.earth=9793;e.ebengali=2447;e.ebopomofo=12572;e.ebreve=277;e.ecandradeva=2317;e.ecandragujarati=2701;e.ecandravowelsigndeva=2373;e.ecandravowelsigngujarati=2757;e.ecaron=283;e.ecedillabreve=7709;e.echarmenian=1381;e.echyiwnarmenian=1415;e.ecircle=9428;e.ecircumflex=234;e.ecircumflexacute=7871;e.ecircumflexbelow=7705;e.ecircumflexdotbelow=7879;e.ecircumflexgrave=7873;e.ecircumflexhookabove=7875;e.ecircumflextilde=7877;e.ecyrillic=1108;e.edblgrave=517;e.edeva=2319;e.edieresis=235;e.edot=279;e.edotaccent=279;e.edotbelow=7865;e.eegurmukhi=2575;e.eematragurmukhi=2631;e.efcyrillic=1092;e.egrave=232;e.egujarati=2703;e.eharmenian=1383;e.ehbopomofo=12573;e.ehiragana=12360;e.ehookabove=7867;e.eibopomofo=12575;e.eight=56;e.eightarabic=1640;e.eightbengali=2542;e.eightcircle=9319;e.eightcircleinversesansserif=10129;e.eightdeva=2414;e.eighteencircle=9329;e.eighteenparen=9349;e.eighteenperiod=9369;e.eightgujarati=2798;e.eightgurmukhi=2670;e.eighthackarabic=1640;e.eighthangzhou=12328;e.eighthnotebeamed=9835;e.eightideographicparen=12839;e.eightinferior=8328;e.eightmonospace=65304;e.eightoldstyle=63288;e.eightparen=9339;e.eightperiod=9359;e.eightpersian=1784;e.eightroman=8567;e.eightsuperior=8312;e.eightthai=3672;e.einvertedbreve=519;e.eiotifiedcyrillic=1125;e.ekatakana=12456;e.ekatakanahalfwidth=65396;e.ekonkargurmukhi=2676;e.ekorean=12628;e.elcyrillic=1083;e.element=8712;e.elevencircle=9322;e.elevenparen=9342;e.elevenperiod=9362;e.elevenroman=8570;e.ellipsis=8230;e.ellipsisvertical=8942;e.emacron=275;e.emacronacute=7703;e.emacrongrave=7701;e.emcyrillic=1084;e.emdash=8212;e.emdashvertical=65073;e.emonospace=65349;e.emphasismarkarmenian=1371;e.emptyset=8709;e.enbopomofo=12579;e.encyrillic=1085;e.endash=8211;e.endashvertical=65074;e.endescendercyrillic=1187;e.eng=331;e.engbopomofo=12581;e.enghecyrillic=1189;e.enhookcyrillic=1224;e.enspace=8194;e.eogonek=281;e.eokorean=12627;e.eopen=603;e.eopenclosed=666;e.eopenreversed=604;e.eopenreversedclosed=606;e.eopenreversedhook=605;e.eparen=9376;e.epsilon=949;e.epsilontonos=941;e.equal=61;e.equalmonospace=65309;e.equalsmall=65126;e.equalsuperior=8316;e.equivalence=8801;e.erbopomofo=12582;e.ercyrillic=1088;e.ereversed=600;e.ereversedcyrillic=1101;e.escyrillic=1089;e.esdescendercyrillic=1195;e.esh=643;e.eshcurl=646;e.eshortdeva=2318;e.eshortvowelsigndeva=2374;e.eshreversedloop=426;e.eshsquatreversed=645;e.esmallhiragana=12359;e.esmallkatakana=12455;e.esmallkatakanahalfwidth=65386;e.estimated=8494;e.esuperior=63212;e.eta=951;e.etarmenian=1384;e.etatonos=942;e.eth=240;e.etilde=7869;e.etildebelow=7707;e.etnahtafoukhhebrew=1425;e.etnahtafoukhlefthebrew=1425;e.etnahtahebrew=1425;e.etnahtalefthebrew=1425;e.eturned=477;e.eukorean=12641;e.euro=8364;e.evowelsignbengali=2503;e.evowelsigndeva=2375;e.evowelsigngujarati=2759;e.exclam=33;e.exclamarmenian=1372;e.exclamdbl=8252;e.exclamdown=161;e.exclamdownsmall=63393;e.exclammonospace=65281;e.exclamsmall=63265;e.existential=8707;e.ezh=658;e.ezhcaron=495;e.ezhcurl=659;e.ezhreversed=441;e.ezhtail=442;e.f=102;e.fadeva=2398;e.fagurmukhi=2654;e.fahrenheit=8457;e.fathaarabic=1614;e.fathalowarabic=1614;e.fathatanarabic=1611;e.fbopomofo=12552;e.fcircle=9429;e.fdotaccent=7711;e.feharabic=1601;e.feharmenian=1414;e.fehfinalarabic=65234;e.fehinitialarabic=65235;e.fehmedialarabic=65236;e.feicoptic=997;e.female=9792;e.ff=64256;e.f_f=64256;e.ffi=64259;e.f_f_i=64259;e.ffl=64260;e.f_f_l=64260;e.fi=64257;e.f_i=64257;e.fifteencircle=9326;e.fifteenparen=9346;e.fifteenperiod=9366;e.figuredash=8210;e.filledbox=9632;e.filledrect=9644;e.finalkaf=1498;e.finalkafdagesh=64314;e.finalkafdageshhebrew=64314;e.finalkafhebrew=1498;e.finalmem=1501;e.finalmemhebrew=1501;e.finalnun=1503;e.finalnunhebrew=1503;e.finalpe=1507;e.finalpehebrew=1507;e.finaltsadi=1509;e.finaltsadihebrew=1509;e.firsttonechinese=713;e.fisheye=9673;e.fitacyrillic=1139;e.five=53;e.fivearabic=1637;e.fivebengali=2539;e.fivecircle=9316;e.fivecircleinversesansserif=10126;e.fivedeva=2411;e.fiveeighths=8541;e.fivegujarati=2795;e.fivegurmukhi=2667;e.fivehackarabic=1637;e.fivehangzhou=12325;e.fiveideographicparen=12836;e.fiveinferior=8325;e.fivemonospace=65301;e.fiveoldstyle=63285;e.fiveparen=9336;e.fiveperiod=9356;e.fivepersian=1781;e.fiveroman=8564;e.fivesuperior=8309;e.fivethai=3669;e.fl=64258;e.f_l=64258;e.florin=402;e.fmonospace=65350;e.fmsquare=13209;e.fofanthai=3615;e.fofathai=3613;e.fongmanthai=3663;e.forall=8704;e.four=52;e.fourarabic=1636;e.fourbengali=2538;e.fourcircle=9315;e.fourcircleinversesansserif=10125;e.fourdeva=2410;e.fourgujarati=2794;e.fourgurmukhi=2666;e.fourhackarabic=1636;e.fourhangzhou=12324;e.fourideographicparen=12835;e.fourinferior=8324;e.fourmonospace=65300;e.fournumeratorbengali=2551;e.fouroldstyle=63284;e.fourparen=9335;e.fourperiod=9355;e.fourpersian=1780;e.fourroman=8563;e.foursuperior=8308;e.fourteencircle=9325;e.fourteenparen=9345;e.fourteenperiod=9365;e.fourthai=3668;e.fourthtonechinese=715;e.fparen=9377;e.fraction=8260;e.franc=8355;e.g=103;e.gabengali=2455;e.gacute=501;e.gadeva=2327;e.gafarabic=1711;e.gaffinalarabic=64403;e.gafinitialarabic=64404;e.gafmedialarabic=64405;e.gagujarati=2711;e.gagurmukhi=2583;e.gahiragana=12364;e.gakatakana=12460;e.gamma=947;e.gammalatinsmall=611;e.gammasuperior=736;e.gangiacoptic=1003;e.gbopomofo=12557;e.gbreve=287;e.gcaron=487;e.gcedilla=291;e.gcircle=9430;e.gcircumflex=285;e.gcommaaccent=291;e.gdot=289;e.gdotaccent=289;e.gecyrillic=1075;e.gehiragana=12370;e.gekatakana=12466;e.geometricallyequal=8785;e.gereshaccenthebrew=1436;e.gereshhebrew=1523;e.gereshmuqdamhebrew=1437;e.germandbls=223;e.gershayimaccenthebrew=1438;e.gershayimhebrew=1524;e.getamark=12307;e.ghabengali=2456;e.ghadarmenian=1394;e.ghadeva=2328;e.ghagujarati=2712;e.ghagurmukhi=2584;e.ghainarabic=1594;e.ghainfinalarabic=65230;e.ghaininitialarabic=65231;e.ghainmedialarabic=65232;e.ghemiddlehookcyrillic=1173;e.ghestrokecyrillic=1171;e.gheupturncyrillic=1169;e.ghhadeva=2394;e.ghhagurmukhi=2650;e.ghook=608;e.ghzsquare=13203;e.gihiragana=12366;e.gikatakana=12462;e.gimarmenian=1379;e.gimel=1490;e.gimeldagesh=64306;e.gimeldageshhebrew=64306;e.gimelhebrew=1490;e.gjecyrillic=1107;e.glottalinvertedstroke=446;e.glottalstop=660;e.glottalstopinverted=662;e.glottalstopmod=704;e.glottalstopreversed=661;e.glottalstopreversedmod=705;e.glottalstopreversedsuperior=740;e.glottalstopstroke=673;e.glottalstopstrokereversed=674;e.gmacron=7713;e.gmonospace=65351;e.gohiragana=12372;e.gokatakana=12468;e.gparen=9378;e.gpasquare=13228;e.gradient=8711;e.grave=96;e.gravebelowcmb=790;e.gravecmb=768;e.gravecomb=768;e.gravedeva=2387;e.gravelowmod=718;e.gravemonospace=65344;e.gravetonecmb=832;e.greater=62;e.greaterequal=8805;e.greaterequalorless=8923;e.greatermonospace=65310;e.greaterorequivalent=8819;e.greaterorless=8823;e.greateroverequal=8807;e.greatersmall=65125;e.gscript=609;e.gstroke=485;e.guhiragana=12368;e.guillemotleft=171;e.guillemotright=187;e.guilsinglleft=8249;e.guilsinglright=8250;e.gukatakana=12464;e.guramusquare=13080;e.gysquare=13257;e.h=104;e.haabkhasiancyrillic=1193;e.haaltonearabic=1729;e.habengali=2489;e.hadescendercyrillic=1203;e.hadeva=2361;e.hagujarati=2745;e.hagurmukhi=2617;e.haharabic=1581;e.hahfinalarabic=65186;e.hahinitialarabic=65187;e.hahiragana=12399;e.hahmedialarabic=65188;e.haitusquare=13098;e.hakatakana=12495;e.hakatakanahalfwidth=65418;e.halantgurmukhi=2637;e.hamzaarabic=1569;e.hamzalowarabic=1569;e.hangulfiller=12644;e.hardsigncyrillic=1098;e.harpoonleftbarbup=8636;e.harpoonrightbarbup=8640;e.hasquare=13258;e.hatafpatah=1458;e.hatafpatah16=1458;e.hatafpatah23=1458;e.hatafpatah2f=1458;e.hatafpatahhebrew=1458;e.hatafpatahnarrowhebrew=1458;e.hatafpatahquarterhebrew=1458;e.hatafpatahwidehebrew=1458;e.hatafqamats=1459;e.hatafqamats1b=1459;e.hatafqamats28=1459;e.hatafqamats34=1459;e.hatafqamatshebrew=1459;e.hatafqamatsnarrowhebrew=1459;e.hatafqamatsquarterhebrew=1459;e.hatafqamatswidehebrew=1459;e.hatafsegol=1457;e.hatafsegol17=1457;e.hatafsegol24=1457;e.hatafsegol30=1457;e.hatafsegolhebrew=1457;e.hatafsegolnarrowhebrew=1457;e.hatafsegolquarterhebrew=1457;e.hatafsegolwidehebrew=1457;e.hbar=295;e.hbopomofo=12559;e.hbrevebelow=7723;e.hcedilla=7721;e.hcircle=9431;e.hcircumflex=293;e.hdieresis=7719;e.hdotaccent=7715;e.hdotbelow=7717;e.he=1492;e.heart=9829;e.heartsuitblack=9829;e.heartsuitwhite=9825;e.hedagesh=64308;e.hedageshhebrew=64308;e.hehaltonearabic=1729;e.heharabic=1607;e.hehebrew=1492;e.hehfinalaltonearabic=64423;e.hehfinalalttwoarabic=65258;e.hehfinalarabic=65258;e.hehhamzaabovefinalarabic=64421;e.hehhamzaaboveisolatedarabic=64420;e.hehinitialaltonearabic=64424;e.hehinitialarabic=65259;e.hehiragana=12408;e.hehmedialaltonearabic=64425;e.hehmedialarabic=65260;e.heiseierasquare=13179;e.hekatakana=12504;e.hekatakanahalfwidth=65421;e.hekutaarusquare=13110;e.henghook=615;e.herutusquare=13113;e.het=1495;e.hethebrew=1495;e.hhook=614;e.hhooksuperior=689;e.hieuhacirclekorean=12923;e.hieuhaparenkorean=12827;e.hieuhcirclekorean=12909;e.hieuhkorean=12622;e.hieuhparenkorean=12813;e.hihiragana=12402;e.hikatakana=12498;e.hikatakanahalfwidth=65419;e.hiriq=1460;e.hiriq14=1460;e.hiriq21=1460;e.hiriq2d=1460;e.hiriqhebrew=1460;e.hiriqnarrowhebrew=1460;e.hiriqquarterhebrew=1460;e.hiriqwidehebrew=1460;e.hlinebelow=7830;e.hmonospace=65352;e.hoarmenian=1392;e.hohipthai=3627;e.hohiragana=12411;e.hokatakana=12507;e.hokatakanahalfwidth=65422;e.holam=1465;e.holam19=1465;e.holam26=1465;e.holam32=1465;e.holamhebrew=1465;e.holamnarrowhebrew=1465;e.holamquarterhebrew=1465;e.holamwidehebrew=1465;e.honokhukthai=3630;e.hookabovecomb=777;e.hookcmb=777;e.hookpalatalizedbelowcmb=801;e.hookretroflexbelowcmb=802;e.hoonsquare=13122;e.horicoptic=1001;e.horizontalbar=8213;e.horncmb=795;e.hotsprings=9832;e.house=8962;e.hparen=9379;e.hsuperior=688;e.hturned=613;e.huhiragana=12405;e.huiitosquare=13107;e.hukatakana=12501;e.hukatakanahalfwidth=65420;e.hungarumlaut=733;e.hungarumlautcmb=779;e.hv=405;e.hyphen=45;e.hypheninferior=63205;e.hyphenmonospace=65293;e.hyphensmall=65123;e.hyphensuperior=63206;e.hyphentwo=8208;e.i=105;e.iacute=237;e.iacyrillic=1103;e.ibengali=2439;e.ibopomofo=12583;e.ibreve=301;e.icaron=464;e.icircle=9432;e.icircumflex=238;e.icyrillic=1110;e.idblgrave=521;e.ideographearthcircle=12943;e.ideographfirecircle=12939;e.ideographicallianceparen=12863;e.ideographiccallparen=12858;e.ideographiccentrecircle=12965;e.ideographicclose=12294;e.ideographiccomma=12289;e.ideographiccommaleft=65380;e.ideographiccongratulationparen=12855;e.ideographiccorrectcircle=12963;e.ideographicearthparen=12847;e.ideographicenterpriseparen=12861;e.ideographicexcellentcircle=12957;e.ideographicfestivalparen=12864;e.ideographicfinancialcircle=12950;e.ideographicfinancialparen=12854;e.ideographicfireparen=12843;e.ideographichaveparen=12850;e.ideographichighcircle=12964;e.ideographiciterationmark=12293;e.ideographiclaborcircle=12952;e.ideographiclaborparen=12856;e.ideographicleftcircle=12967;e.ideographiclowcircle=12966;e.ideographicmedicinecircle=12969;e.ideographicmetalparen=12846;e.ideographicmoonparen=12842;e.ideographicnameparen=12852;e.ideographicperiod=12290;e.ideographicprintcircle=12958;e.ideographicreachparen=12867;e.ideographicrepresentparen=12857;e.ideographicresourceparen=12862;e.ideographicrightcircle=12968;e.ideographicsecretcircle=12953;e.ideographicselfparen=12866;e.ideographicsocietyparen=12851;e.ideographicspace=12288;e.ideographicspecialparen=12853;e.ideographicstockparen=12849;e.ideographicstudyparen=12859;e.ideographicsunparen=12848;e.ideographicsuperviseparen=12860;e.ideographicwaterparen=12844;e.ideographicwoodparen=12845;e.ideographiczero=12295;e.ideographmetalcircle=12942;e.ideographmooncircle=12938;e.ideographnamecircle=12948;e.ideographsuncircle=12944;e.ideographwatercircle=12940;e.ideographwoodcircle=12941;e.ideva=2311;e.idieresis=239;e.idieresisacute=7727;e.idieresiscyrillic=1253;e.idotbelow=7883;e.iebrevecyrillic=1239;e.iecyrillic=1077;e.ieungacirclekorean=12917;e.ieungaparenkorean=12821;e.ieungcirclekorean=12903;e.ieungkorean=12615;e.ieungparenkorean=12807;e.igrave=236;e.igujarati=2695;e.igurmukhi=2567;e.ihiragana=12356;e.ihookabove=7881;e.iibengali=2440;e.iicyrillic=1080;e.iideva=2312;e.iigujarati=2696;e.iigurmukhi=2568;e.iimatragurmukhi=2624;e.iinvertedbreve=523;e.iishortcyrillic=1081;e.iivowelsignbengali=2496;e.iivowelsigndeva=2368;e.iivowelsigngujarati=2752;e.ij=307;e.ikatakana=12452;e.ikatakanahalfwidth=65394;e.ikorean=12643;e.ilde=732;e.iluyhebrew=1452;e.imacron=299;e.imacroncyrillic=1251;e.imageorapproximatelyequal=8787;e.imatragurmukhi=2623;e.imonospace=65353;e.increment=8710;e.infinity=8734;e.iniarmenian=1387;e.integral=8747;e.integralbottom=8993;e.integralbt=8993;e.integralex=63733;e.integraltop=8992;e.integraltp=8992;e.intersection=8745;e.intisquare=13061;e.invbullet=9688;e.invcircle=9689;e.invsmileface=9787;e.iocyrillic=1105;e.iogonek=303;e.iota=953;e.iotadieresis=970;e.iotadieresistonos=912;e.iotalatin=617;e.iotatonos=943;e.iparen=9380;e.irigurmukhi=2674;e.ismallhiragana=12355;e.ismallkatakana=12451;e.ismallkatakanahalfwidth=65384;e.issharbengali=2554;e.istroke=616;e.isuperior=63213;e.iterationhiragana=12445;e.iterationkatakana=12541;e.itilde=297;e.itildebelow=7725;e.iubopomofo=12585;e.iucyrillic=1102;e.ivowelsignbengali=2495;e.ivowelsigndeva=2367;e.ivowelsigngujarati=2751;e.izhitsacyrillic=1141;e.izhitsadblgravecyrillic=1143;e.j=106;e.jaarmenian=1393;e.jabengali=2460;e.jadeva=2332;e.jagujarati=2716;e.jagurmukhi=2588;e.jbopomofo=12560;e.jcaron=496;e.jcircle=9433;e.jcircumflex=309;e.jcrossedtail=669;e.jdotlessstroke=607;e.jecyrillic=1112;e.jeemarabic=1580;e.jeemfinalarabic=65182;e.jeeminitialarabic=65183;e.jeemmedialarabic=65184;e.jeharabic=1688;e.jehfinalarabic=64395;e.jhabengali=2461;e.jhadeva=2333;e.jhagujarati=2717;e.jhagurmukhi=2589;e.jheharmenian=1403;e.jis=12292;e.jmonospace=65354;e.jparen=9381;e.jsuperior=690;e.k=107;e.kabashkircyrillic=1185;e.kabengali=2453;e.kacute=7729;e.kacyrillic=1082;e.kadescendercyrillic=1179;e.kadeva=2325;e.kaf=1499;e.kafarabic=1603;e.kafdagesh=64315;e.kafdageshhebrew=64315;e.kaffinalarabic=65242;e.kafhebrew=1499;e.kafinitialarabic=65243;e.kafmedialarabic=65244;e.kafrafehebrew=64333;e.kagujarati=2709;e.kagurmukhi=2581;e.kahiragana=12363;e.kahookcyrillic=1220;e.kakatakana=12459;e.kakatakanahalfwidth=65398;e.kappa=954;e.kappasymbolgreek=1008;e.kapyeounmieumkorean=12657;e.kapyeounphieuphkorean=12676;e.kapyeounpieupkorean=12664;e.kapyeounssangpieupkorean=12665;e.karoriisquare=13069;e.kashidaautoarabic=1600;e.kashidaautonosidebearingarabic=1600;e.kasmallkatakana=12533;e.kasquare=13188;e.kasraarabic=1616;e.kasratanarabic=1613;e.kastrokecyrillic=1183;e.katahiraprolongmarkhalfwidth=65392;e.kaverticalstrokecyrillic=1181;e.kbopomofo=12558;e.kcalsquare=13193;e.kcaron=489;e.kcedilla=311;e.kcircle=9434;e.kcommaaccent=311;e.kdotbelow=7731;e.keharmenian=1412;e.kehiragana=12369;e.kekatakana=12465;e.kekatakanahalfwidth=65401;e.kenarmenian=1391;e.kesmallkatakana=12534;e.kgreenlandic=312;e.khabengali=2454;e.khacyrillic=1093;e.khadeva=2326;e.khagujarati=2710;e.khagurmukhi=2582;e.khaharabic=1582;e.khahfinalarabic=65190;e.khahinitialarabic=65191;e.khahmedialarabic=65192;e.kheicoptic=999;e.khhadeva=2393;e.khhagurmukhi=2649;e.khieukhacirclekorean=12920;e.khieukhaparenkorean=12824;e.khieukhcirclekorean=12906;e.khieukhkorean=12619;e.khieukhparenkorean=12810;e.khokhaithai=3586;e.khokhonthai=3589;e.khokhuatthai=3587;e.khokhwaithai=3588;e.khomutthai=3675;e.khook=409;e.khorakhangthai=3590;e.khzsquare=13201;e.kihiragana=12365;e.kikatakana=12461;e.kikatakanahalfwidth=65399;e.kiroguramusquare=13077;e.kiromeetorusquare=13078;e.kirosquare=13076;e.kiyeokacirclekorean=12910;e.kiyeokaparenkorean=12814;e.kiyeokcirclekorean=12896;e.kiyeokkorean=12593;e.kiyeokparenkorean=12800;e.kiyeoksioskorean=12595;e.kjecyrillic=1116;e.klinebelow=7733;e.klsquare=13208;e.kmcubedsquare=13222;e.kmonospace=65355;e.kmsquaredsquare=13218;e.kohiragana=12371;e.kohmsquare=13248;e.kokaithai=3585;e.kokatakana=12467;e.kokatakanahalfwidth=65402;e.kooposquare=13086;e.koppacyrillic=1153;e.koreanstandardsymbol=12927;e.koroniscmb=835;e.kparen=9382;e.kpasquare=13226;e.ksicyrillic=1135;e.ktsquare=13263;e.kturned=670;e.kuhiragana=12367;e.kukatakana=12463;e.kukatakanahalfwidth=65400;e.kvsquare=13240;e.kwsquare=13246;e.l=108;e.labengali=2482;e.lacute=314;e.ladeva=2354;e.lagujarati=2738;e.lagurmukhi=2610;e.lakkhangyaothai=3653;e.lamaleffinalarabic=65276;e.lamalefhamzaabovefinalarabic=65272;e.lamalefhamzaaboveisolatedarabic=65271;e.lamalefhamzabelowfinalarabic=65274;e.lamalefhamzabelowisolatedarabic=65273;e.lamalefisolatedarabic=65275;e.lamalefmaddaabovefinalarabic=65270;e.lamalefmaddaaboveisolatedarabic=65269;e.lamarabic=1604;e.lambda=955;e.lambdastroke=411;e.lamed=1500;e.lameddagesh=64316;e.lameddageshhebrew=64316;e.lamedhebrew=1500;e.lamfinalarabic=65246;e.lamhahinitialarabic=64714;e.laminitialarabic=65247;e.lamjeeminitialarabic=64713;e.lamkhahinitialarabic=64715;e.lamlamhehisolatedarabic=65010;e.lammedialarabic=65248;e.lammeemhahinitialarabic=64904;e.lammeeminitialarabic=64716;e.largecircle=9711;e.lbar=410;e.lbelt=620;e.lbopomofo=12556;e.lcaron=318;e.lcedilla=316;e.lcircle=9435;e.lcircumflexbelow=7741;e.lcommaaccent=316;e.ldot=320;e.ldotaccent=320;e.ldotbelow=7735;e.ldotbelowmacron=7737;e.leftangleabovecmb=794;e.lefttackbelowcmb=792;e.less=60;e.lessequal=8804;e.lessequalorgreater=8922;e.lessmonospace=65308;e.lessorequivalent=8818;e.lessorgreater=8822;e.lessoverequal=8806;e.lesssmall=65124;e.lezh=622;e.lfblock=9612;e.lhookretroflex=621;e.lira=8356;e.liwnarmenian=1388;e.lj=457;e.ljecyrillic=1113;e.ll=63168;e.lladeva=2355;e.llagujarati=2739;e.llinebelow=7739;e.llladeva=2356;e.llvocalicbengali=2529;e.llvocalicdeva=2401;e.llvocalicvowelsignbengali=2531;e.llvocalicvowelsigndeva=2403;e.lmiddletilde=619;e.lmonospace=65356;e.lmsquare=13264;e.lochulathai=3628;e.logicaland=8743;e.logicalnot=172;e.logicalnotreversed=8976;e.logicalor=8744;e.lolingthai=3621;e.longs=383;e.lowlinecenterline=65102;e.lowlinecmb=818;e.lowlinedashed=65101;e.lozenge=9674;e.lparen=9383;e.lslash=322;e.lsquare=8467;e.lsuperior=63214;e.ltshade=9617;e.luthai=3622;e.lvocalicbengali=2444;e.lvocalicdeva=2316;e.lvocalicvowelsignbengali=2530;e.lvocalicvowelsigndeva=2402;e.lxsquare=13267;e.m=109;e.mabengali=2478;e.macron=175;e.macronbelowcmb=817;e.macroncmb=772;e.macronlowmod=717;e.macronmonospace=65507;e.macute=7743;e.madeva=2350;e.magujarati=2734;e.magurmukhi=2606;e.mahapakhhebrew=1444;e.mahapakhlefthebrew=1444;e.mahiragana=12414;e.maichattawalowleftthai=63637;e.maichattawalowrightthai=63636;e.maichattawathai=3659;e.maichattawaupperleftthai=63635;e.maieklowleftthai=63628;e.maieklowrightthai=63627;e.maiekthai=3656;e.maiekupperleftthai=63626;e.maihanakatleftthai=63620;e.maihanakatthai=3633;e.maitaikhuleftthai=63625;e.maitaikhuthai=3655;e.maitholowleftthai=63631;e.maitholowrightthai=63630;e.maithothai=3657;e.maithoupperleftthai=63629;e.maitrilowleftthai=63634;e.maitrilowrightthai=63633;e.maitrithai=3658;e.maitriupperleftthai=63632;e.maiyamokthai=3654;e.makatakana=12510;e.makatakanahalfwidth=65423;e.male=9794;e.mansyonsquare=13127;e.maqafhebrew=1470;e.mars=9794;e.masoracirclehebrew=1455;e.masquare=13187;e.mbopomofo=12551;e.mbsquare=13268;e.mcircle=9436;e.mcubedsquare=13221;e.mdotaccent=7745;e.mdotbelow=7747;e.meemarabic=1605;e.meemfinalarabic=65250;e.meeminitialarabic=65251;e.meemmedialarabic=65252;e.meemmeeminitialarabic=64721;e.meemmeemisolatedarabic=64584;e.meetorusquare=13133;e.mehiragana=12417;e.meizierasquare=13182;e.mekatakana=12513;e.mekatakanahalfwidth=65426;e.mem=1502;e.memdagesh=64318;e.memdageshhebrew=64318;e.memhebrew=1502;e.menarmenian=1396;e.merkhahebrew=1445;e.merkhakefulahebrew=1446;e.merkhakefulalefthebrew=1446;e.merkhalefthebrew=1445;e.mhook=625;e.mhzsquare=13202;e.middledotkatakanahalfwidth=65381;e.middot=183;e.mieumacirclekorean=12914;e.mieumaparenkorean=12818;e.mieumcirclekorean=12900;e.mieumkorean=12609;e.mieumpansioskorean=12656;e.mieumparenkorean=12804;e.mieumpieupkorean=12654;e.mieumsioskorean=12655;e.mihiragana=12415;e.mikatakana=12511;e.mikatakanahalfwidth=65424;e.minus=8722;e.minusbelowcmb=800;e.minuscircle=8854;e.minusmod=727;e.minusplus=8723;e.minute=8242;e.miribaarusquare=13130;e.mirisquare=13129;e.mlonglegturned=624;e.mlsquare=13206;e.mmcubedsquare=13219;e.mmonospace=65357;e.mmsquaredsquare=13215;e.mohiragana=12418;e.mohmsquare=13249;e.mokatakana=12514;e.mokatakanahalfwidth=65427;e.molsquare=13270;e.momathai=3617;e.moverssquare=13223;e.moverssquaredsquare=13224;e.mparen=9384;e.mpasquare=13227;e.mssquare=13235;e.msuperior=63215;e.mturned=623;e.mu=181;e.mu1=181;e.muasquare=13186;e.muchgreater=8811;e.muchless=8810;e.mufsquare=13196;e.mugreek=956;e.mugsquare=13197;e.muhiragana=12416;e.mukatakana=12512;e.mukatakanahalfwidth=65425;e.mulsquare=13205;e.multiply=215;e.mumsquare=13211;e.munahhebrew=1443;e.munahlefthebrew=1443;e.musicalnote=9834;e.musicalnotedbl=9835;e.musicflatsign=9837;e.musicsharpsign=9839;e.mussquare=13234;e.muvsquare=13238;e.muwsquare=13244;e.mvmegasquare=13241;e.mvsquare=13239;e.mwmegasquare=13247;e.mwsquare=13245;e.n=110;e.nabengali=2472;e.nabla=8711;e.nacute=324;e.nadeva=2344;e.nagujarati=2728;e.nagurmukhi=2600;e.nahiragana=12394;e.nakatakana=12490;e.nakatakanahalfwidth=65413;e.napostrophe=329;e.nasquare=13185;e.nbopomofo=12555;e.nbspace=160;e.ncaron=328;e.ncedilla=326;e.ncircle=9437;e.ncircumflexbelow=7755;e.ncommaaccent=326;e.ndotaccent=7749;e.ndotbelow=7751;e.nehiragana=12397;e.nekatakana=12493;e.nekatakanahalfwidth=65416;e.newsheqelsign=8362;e.nfsquare=13195;e.ngabengali=2457;e.ngadeva=2329;e.ngagujarati=2713;e.ngagurmukhi=2585;e.ngonguthai=3591;e.nhiragana=12435;e.nhookleft=626;e.nhookretroflex=627;e.nieunacirclekorean=12911;e.nieunaparenkorean=12815;e.nieuncieuckorean=12597;e.nieuncirclekorean=12897;e.nieunhieuhkorean=12598;e.nieunkorean=12596;e.nieunpansioskorean=12648;e.nieunparenkorean=12801;e.nieunsioskorean=12647;e.nieuntikeutkorean=12646;e.nihiragana=12395;e.nikatakana=12491;e.nikatakanahalfwidth=65414;e.nikhahitleftthai=63641;e.nikhahitthai=3661;e.nine=57;e.ninearabic=1641;e.ninebengali=2543;e.ninecircle=9320;e.ninecircleinversesansserif=10130;e.ninedeva=2415;e.ninegujarati=2799;e.ninegurmukhi=2671;e.ninehackarabic=1641;e.ninehangzhou=12329;e.nineideographicparen=12840;e.nineinferior=8329;e.ninemonospace=65305;e.nineoldstyle=63289;e.nineparen=9340;e.nineperiod=9360;e.ninepersian=1785;e.nineroman=8568;e.ninesuperior=8313;e.nineteencircle=9330;e.nineteenparen=9350;e.nineteenperiod=9370;e.ninethai=3673;e.nj=460;e.njecyrillic=1114;e.nkatakana=12531;e.nkatakanahalfwidth=65437;e.nlegrightlong=414;e.nlinebelow=7753;e.nmonospace=65358;e.nmsquare=13210;e.nnabengali=2467;e.nnadeva=2339;e.nnagujarati=2723;e.nnagurmukhi=2595;e.nnnadeva=2345;e.nohiragana=12398;e.nokatakana=12494;e.nokatakanahalfwidth=65417;e.nonbreakingspace=160;e.nonenthai=3603;e.nonuthai=3609;e.noonarabic=1606;e.noonfinalarabic=65254;e.noonghunnaarabic=1722;e.noonghunnafinalarabic=64415;e.nooninitialarabic=65255;e.noonjeeminitialarabic=64722;e.noonjeemisolatedarabic=64587;e.noonmedialarabic=65256;e.noonmeeminitialarabic=64725;e.noonmeemisolatedarabic=64590;e.noonnoonfinalarabic=64653;e.notcontains=8716;e.notelement=8713;e.notelementof=8713;e.notequal=8800;e.notgreater=8815;e.notgreaternorequal=8817;e.notgreaternorless=8825;e.notidentical=8802;e.notless=8814;e.notlessnorequal=8816;e.notparallel=8742;e.notprecedes=8832;e.notsubset=8836;e.notsucceeds=8833;e.notsuperset=8837;e.nowarmenian=1398;e.nparen=9385;e.nssquare=13233;e.nsuperior=8319;e.ntilde=241;e.nu=957;e.nuhiragana=12396;e.nukatakana=12492;e.nukatakanahalfwidth=65415;e.nuktabengali=2492;e.nuktadeva=2364;e.nuktagujarati=2748;e.nuktagurmukhi=2620;e.numbersign=35;e.numbersignmonospace=65283;e.numbersignsmall=65119;e.numeralsigngreek=884;e.numeralsignlowergreek=885;e.numero=8470;e.nun=1504;e.nundagesh=64320;e.nundageshhebrew=64320;e.nunhebrew=1504;e.nvsquare=13237;e.nwsquare=13243;e.nyabengali=2462;e.nyadeva=2334;e.nyagujarati=2718;e.nyagurmukhi=2590;e.o=111;e.oacute=243;e.oangthai=3629;e.obarred=629;e.obarredcyrillic=1257;e.obarreddieresiscyrillic=1259;e.obengali=2451;e.obopomofo=12571;e.obreve=335;e.ocandradeva=2321;e.ocandragujarati=2705;e.ocandravowelsigndeva=2377;e.ocandravowelsigngujarati=2761;e.ocaron=466;e.ocircle=9438;e.ocircumflex=244;e.ocircumflexacute=7889;e.ocircumflexdotbelow=7897;e.ocircumflexgrave=7891;e.ocircumflexhookabove=7893;e.ocircumflextilde=7895;e.ocyrillic=1086;e.odblacute=337;e.odblgrave=525;e.odeva=2323;e.odieresis=246;e.odieresiscyrillic=1255;e.odotbelow=7885;e.oe=339;e.oekorean=12634;e.ogonek=731;e.ogonekcmb=808;e.ograve=242;e.ogujarati=2707;e.oharmenian=1413;e.ohiragana=12362;e.ohookabove=7887;e.ohorn=417;e.ohornacute=7899;e.ohorndotbelow=7907;e.ohorngrave=7901;e.ohornhookabove=7903;e.ohorntilde=7905;e.ohungarumlaut=337;e.oi=419;e.oinvertedbreve=527;e.okatakana=12458;e.okatakanahalfwidth=65397;e.okorean=12631;e.olehebrew=1451;e.omacron=333;e.omacronacute=7763;e.omacrongrave=7761;e.omdeva=2384;e.omega=969;e.omega1=982;e.omegacyrillic=1121;e.omegalatinclosed=631;e.omegaroundcyrillic=1147;e.omegatitlocyrillic=1149;e.omegatonos=974;e.omgujarati=2768;e.omicron=959;e.omicrontonos=972;e.omonospace=65359;e.one=49;e.onearabic=1633;e.onebengali=2535;e.onecircle=9312;e.onecircleinversesansserif=10122;e.onedeva=2407;e.onedotenleader=8228;e.oneeighth=8539;e.onefitted=63196;e.onegujarati=2791;e.onegurmukhi=2663;e.onehackarabic=1633;e.onehalf=189;e.onehangzhou=12321;e.oneideographicparen=12832;e.oneinferior=8321;e.onemonospace=65297;e.onenumeratorbengali=2548;e.oneoldstyle=63281;e.oneparen=9332;e.oneperiod=9352;e.onepersian=1777;e.onequarter=188;e.oneroman=8560;e.onesuperior=185;e.onethai=3665;e.onethird=8531;e.oogonek=491;e.oogonekmacron=493;e.oogurmukhi=2579;e.oomatragurmukhi=2635;e.oopen=596;e.oparen=9386;e.openbullet=9702;e.option=8997;e.ordfeminine=170;e.ordmasculine=186;e.orthogonal=8735;e.oshortdeva=2322;e.oshortvowelsigndeva=2378;e.oslash=248;e.oslashacute=511;e.osmallhiragana=12361;e.osmallkatakana=12457;e.osmallkatakanahalfwidth=65387;e.ostrokeacute=511;e.osuperior=63216;e.otcyrillic=1151;e.otilde=245;e.otildeacute=7757;e.otildedieresis=7759;e.oubopomofo=12577;e.overline=8254;e.overlinecenterline=65098;e.overlinecmb=773;e.overlinedashed=65097;e.overlinedblwavy=65100;e.overlinewavy=65099;e.overscore=175;e.ovowelsignbengali=2507;e.ovowelsigndeva=2379;e.ovowelsigngujarati=2763;e.p=112;e.paampssquare=13184;e.paasentosquare=13099;e.pabengali=2474;e.pacute=7765;e.padeva=2346;e.pagedown=8671;e.pageup=8670;e.pagujarati=2730;e.pagurmukhi=2602;e.pahiragana=12401;e.paiyannoithai=3631;e.pakatakana=12497;e.palatalizationcyrilliccmb=1156;e.palochkacyrillic=1216;e.pansioskorean=12671;e.paragraph=182;e.parallel=8741;e.parenleft=40;e.parenleftaltonearabic=64830;e.parenleftbt=63725;e.parenleftex=63724;e.parenleftinferior=8333;e.parenleftmonospace=65288;e.parenleftsmall=65113;e.parenleftsuperior=8317;e.parenlefttp=63723;e.parenleftvertical=65077;e.parenright=41;e.parenrightaltonearabic=64831;e.parenrightbt=63736;e.parenrightex=63735;e.parenrightinferior=8334;e.parenrightmonospace=65289;e.parenrightsmall=65114;e.parenrightsuperior=8318;e.parenrighttp=63734;e.parenrightvertical=65078;e.partialdiff=8706;e.paseqhebrew=1472;e.pashtahebrew=1433;e.pasquare=13225;e.patah=1463;e.patah11=1463;e.patah1d=1463;e.patah2a=1463;e.patahhebrew=1463;e.patahnarrowhebrew=1463;e.patahquarterhebrew=1463;e.patahwidehebrew=1463;e.pazerhebrew=1441;e.pbopomofo=12550;e.pcircle=9439;e.pdotaccent=7767;e.pe=1508;e.pecyrillic=1087;e.pedagesh=64324;e.pedageshhebrew=64324;e.peezisquare=13115;e.pefinaldageshhebrew=64323;e.peharabic=1662;e.peharmenian=1402;e.pehebrew=1508;e.pehfinalarabic=64343;e.pehinitialarabic=64344;e.pehiragana=12410;e.pehmedialarabic=64345;e.pekatakana=12506;e.pemiddlehookcyrillic=1191;e.perafehebrew=64334;e.percent=37;e.percentarabic=1642;e.percentmonospace=65285;e.percentsmall=65130;e.period=46;e.periodarmenian=1417;e.periodcentered=183;e.periodhalfwidth=65377;e.periodinferior=63207;e.periodmonospace=65294;e.periodsmall=65106;e.periodsuperior=63208;e.perispomenigreekcmb=834;e.perpendicular=8869;e.perthousand=8240;e.peseta=8359;e.pfsquare=13194;e.phabengali=2475;e.phadeva=2347;e.phagujarati=2731;e.phagurmukhi=2603;e.phi=966;e.phi1=981;e.phieuphacirclekorean=12922;e.phieuphaparenkorean=12826;e.phieuphcirclekorean=12908;e.phieuphkorean=12621;e.phieuphparenkorean=12812;e.philatin=632;e.phinthuthai=3642;e.phisymbolgreek=981;e.phook=421;e.phophanthai=3614;e.phophungthai=3612;e.phosamphaothai=3616;e.pi=960;e.pieupacirclekorean=12915;e.pieupaparenkorean=12819;e.pieupcieuckorean=12662;e.pieupcirclekorean=12901;e.pieupkiyeokkorean=12658;e.pieupkorean=12610;e.pieupparenkorean=12805;e.pieupsioskiyeokkorean=12660;e.pieupsioskorean=12612;e.pieupsiostikeutkorean=12661;e.pieupthieuthkorean=12663;e.pieuptikeutkorean=12659;e.pihiragana=12404;e.pikatakana=12500;e.pisymbolgreek=982;e.piwrarmenian=1411;e.planckover2pi=8463;e.planckover2pi1=8463;e.plus=43;e.plusbelowcmb=799;e.pluscircle=8853;e.plusminus=177;e.plusmod=726;e.plusmonospace=65291;e.plussmall=65122;e.plussuperior=8314;e.pmonospace=65360;e.pmsquare=13272;e.pohiragana=12413;e.pointingindexdownwhite=9759;e.pointingindexleftwhite=9756;e.pointingindexrightwhite=9758;e.pointingindexupwhite=9757;e.pokatakana=12509;e.poplathai=3611;e.postalmark=12306;e.postalmarkface=12320;e.pparen=9387;e.precedes=8826;e.prescription=8478;e.primemod=697;e.primereversed=8245;e.product=8719;e.projective=8965;e.prolongedkana=12540;e.propellor=8984;e.propersubset=8834;e.propersuperset=8835;e.proportion=8759;e.proportional=8733;e.psi=968;e.psicyrillic=1137;e.psilipneumatacyrilliccmb=1158;e.pssquare=13232;e.puhiragana=12407;e.pukatakana=12503;e.pvsquare=13236;e.pwsquare=13242;e.q=113;e.qadeva=2392;e.qadmahebrew=1448;e.qafarabic=1602;e.qaffinalarabic=65238;e.qafinitialarabic=65239;e.qafmedialarabic=65240;e.qamats=1464;e.qamats10=1464;e.qamats1a=1464;e.qamats1c=1464;e.qamats27=1464;e.qamats29=1464;e.qamats33=1464;e.qamatsde=1464;e.qamatshebrew=1464;e.qamatsnarrowhebrew=1464;e.qamatsqatanhebrew=1464;e.qamatsqatannarrowhebrew=1464;e.qamatsqatanquarterhebrew=1464;e.qamatsqatanwidehebrew=1464;e.qamatsquarterhebrew=1464;e.qamatswidehebrew=1464;e.qarneyparahebrew=1439;e.qbopomofo=12561;e.qcircle=9440;e.qhook=672;e.qmonospace=65361;e.qof=1511;e.qofdagesh=64327;e.qofdageshhebrew=64327;e.qofhebrew=1511;e.qparen=9388;e.quarternote=9833;e.qubuts=1467;e.qubuts18=1467;e.qubuts25=1467;e.qubuts31=1467;e.qubutshebrew=1467;e.qubutsnarrowhebrew=1467;e.qubutsquarterhebrew=1467;e.qubutswidehebrew=1467;e.question=63;e.questionarabic=1567;e.questionarmenian=1374;e.questiondown=191;e.questiondownsmall=63423;e.questiongreek=894;e.questionmonospace=65311;e.questionsmall=63295;e.quotedbl=34;e.quotedblbase=8222;e.quotedblleft=8220;e.quotedblmonospace=65282;e.quotedblprime=12318;e.quotedblprimereversed=12317;e.quotedblright=8221;e.quoteleft=8216;e.quoteleftreversed=8219;e.quotereversed=8219;e.quoteright=8217;e.quoterightn=329;e.quotesinglbase=8218;e.quotesingle=39;e.quotesinglemonospace=65287;e.r=114;e.raarmenian=1404;e.rabengali=2480;e.racute=341;e.radeva=2352;e.radical=8730;e.radicalex=63717;e.radoverssquare=13230;e.radoverssquaredsquare=13231;e.radsquare=13229;e.rafe=1471;e.rafehebrew=1471;e.ragujarati=2736;e.ragurmukhi=2608;e.rahiragana=12425;e.rakatakana=12521;e.rakatakanahalfwidth=65431;e.ralowerdiagonalbengali=2545;e.ramiddlediagonalbengali=2544;e.ramshorn=612;e.ratio=8758;e.rbopomofo=12566;e.rcaron=345;e.rcedilla=343;e.rcircle=9441;e.rcommaaccent=343;e.rdblgrave=529;e.rdotaccent=7769;e.rdotbelow=7771;e.rdotbelowmacron=7773;e.referencemark=8251;e.reflexsubset=8838;e.reflexsuperset=8839;e.registered=174;e.registersans=63720;e.registerserif=63194;e.reharabic=1585;e.reharmenian=1408;e.rehfinalarabic=65198;e.rehiragana=12428;e.rekatakana=12524;e.rekatakanahalfwidth=65434;e.resh=1512;e.reshdageshhebrew=64328;e.reshhebrew=1512;e.reversedtilde=8765;e.reviahebrew=1431;e.reviamugrashhebrew=1431;e.revlogicalnot=8976;e.rfishhook=638;e.rfishhookreversed=639;e.rhabengali=2525;e.rhadeva=2397;e.rho=961;e.rhook=637;e.rhookturned=635;e.rhookturnedsuperior=693;e.rhosymbolgreek=1009;e.rhotichookmod=734;e.rieulacirclekorean=12913;e.rieulaparenkorean=12817;e.rieulcirclekorean=12899;e.rieulhieuhkorean=12608;e.rieulkiyeokkorean=12602;e.rieulkiyeoksioskorean=12649;e.rieulkorean=12601;e.rieulmieumkorean=12603;e.rieulpansioskorean=12652;e.rieulparenkorean=12803;e.rieulphieuphkorean=12607;e.rieulpieupkorean=12604;e.rieulpieupsioskorean=12651;e.rieulsioskorean=12605;e.rieulthieuthkorean=12606;e.rieultikeutkorean=12650;e.rieulyeorinhieuhkorean=12653;e.rightangle=8735;e.righttackbelowcmb=793;e.righttriangle=8895;e.rihiragana=12426;e.rikatakana=12522;e.rikatakanahalfwidth=65432;e.ring=730;e.ringbelowcmb=805;e.ringcmb=778;e.ringhalfleft=703;e.ringhalfleftarmenian=1369;e.ringhalfleftbelowcmb=796;e.ringhalfleftcentered=723;e.ringhalfright=702;e.ringhalfrightbelowcmb=825;e.ringhalfrightcentered=722;e.rinvertedbreve=531;e.rittorusquare=13137;e.rlinebelow=7775;e.rlongleg=636;e.rlonglegturned=634;e.rmonospace=65362;e.rohiragana=12429;e.rokatakana=12525;e.rokatakanahalfwidth=65435;e.roruathai=3619;e.rparen=9389;e.rrabengali=2524;e.rradeva=2353;e.rragurmukhi=2652;e.rreharabic=1681;e.rrehfinalarabic=64397;e.rrvocalicbengali=2528;e.rrvocalicdeva=2400;e.rrvocalicgujarati=2784;e.rrvocalicvowelsignbengali=2500;e.rrvocalicvowelsigndeva=2372;e.rrvocalicvowelsigngujarati=2756;e.rsuperior=63217;e.rtblock=9616;e.rturned=633;e.rturnedsuperior=692;e.ruhiragana=12427;e.rukatakana=12523;e.rukatakanahalfwidth=65433;e.rupeemarkbengali=2546;e.rupeesignbengali=2547;e.rupiah=63197;e.ruthai=3620;e.rvocalicbengali=2443;e.rvocalicdeva=2315;e.rvocalicgujarati=2699;e.rvocalicvowelsignbengali=2499;e.rvocalicvowelsigndeva=2371;e.rvocalicvowelsigngujarati=2755;e.s=115;e.sabengali=2488;e.sacute=347;e.sacutedotaccent=7781;e.sadarabic=1589;e.sadeva=2360;e.sadfinalarabic=65210;e.sadinitialarabic=65211;e.sadmedialarabic=65212;e.sagujarati=2744;e.sagurmukhi=2616;e.sahiragana=12373;e.sakatakana=12469;e.sakatakanahalfwidth=65403;e.sallallahoualayhewasallamarabic=65018;e.samekh=1505;e.samekhdagesh=64321;e.samekhdageshhebrew=64321;e.samekhhebrew=1505;e.saraaathai=3634;e.saraaethai=3649;e.saraaimaimalaithai=3652;e.saraaimaimuanthai=3651;e.saraamthai=3635;e.saraathai=3632;e.saraethai=3648;e.saraiileftthai=63622;e.saraiithai=3637;e.saraileftthai=63621;e.saraithai=3636;e.saraothai=3650;e.saraueeleftthai=63624;e.saraueethai=3639;e.saraueleftthai=63623;e.sarauethai=3638;e.sarauthai=3640;e.sarauuthai=3641;e.sbopomofo=12569;e.scaron=353;e.scarondotaccent=7783;e.scedilla=351;e.schwa=601;e.schwacyrillic=1241;e.schwadieresiscyrillic=1243;e.schwahook=602;e.scircle=9442;e.scircumflex=349;e.scommaaccent=537;e.sdotaccent=7777;e.sdotbelow=7779;e.sdotbelowdotaccent=7785;e.seagullbelowcmb=828;e.second=8243;e.secondtonechinese=714;e.section=167;e.seenarabic=1587;e.seenfinalarabic=65202;e.seeninitialarabic=65203;e.seenmedialarabic=65204;e.segol=1462;e.segol13=1462;e.segol1f=1462;e.segol2c=1462;e.segolhebrew=1462;e.segolnarrowhebrew=1462;e.segolquarterhebrew=1462;e.segoltahebrew=1426;e.segolwidehebrew=1462;e.seharmenian=1405;e.sehiragana=12379;e.sekatakana=12475;e.sekatakanahalfwidth=65406;e.semicolon=59;e.semicolonarabic=1563;e.semicolonmonospace=65307;e.semicolonsmall=65108;e.semivoicedmarkkana=12444;e.semivoicedmarkkanahalfwidth=65439;e.sentisquare=13090;e.sentosquare=13091;e.seven=55;e.sevenarabic=1639;e.sevenbengali=2541;e.sevencircle=9318;e.sevencircleinversesansserif=10128;e.sevendeva=2413;e.seveneighths=8542;e.sevengujarati=2797;e.sevengurmukhi=2669;e.sevenhackarabic=1639;e.sevenhangzhou=12327;e.sevenideographicparen=12838;e.seveninferior=8327;e.sevenmonospace=65303;e.sevenoldstyle=63287;e.sevenparen=9338;e.sevenperiod=9358;e.sevenpersian=1783;e.sevenroman=8566;e.sevensuperior=8311;e.seventeencircle=9328;e.seventeenparen=9348;e.seventeenperiod=9368;e.seventhai=3671;e.sfthyphen=173;e.shaarmenian=1399;e.shabengali=2486;e.shacyrillic=1096;e.shaddaarabic=1617;e.shaddadammaarabic=64609;e.shaddadammatanarabic=64606;e.shaddafathaarabic=64608;e.shaddakasraarabic=64610;e.shaddakasratanarabic=64607;e.shade=9618;e.shadedark=9619;e.shadelight=9617;e.shademedium=9618;e.shadeva=2358;e.shagujarati=2742;e.shagurmukhi=2614;e.shalshelethebrew=1427;e.shbopomofo=12565;e.shchacyrillic=1097;e.sheenarabic=1588;e.sheenfinalarabic=65206;e.sheeninitialarabic=65207;e.sheenmedialarabic=65208;e.sheicoptic=995;e.sheqel=8362;e.sheqelhebrew=8362;e.sheva=1456;e.sheva115=1456;e.sheva15=1456;e.sheva22=1456;e.sheva2e=1456;e.shevahebrew=1456;e.shevanarrowhebrew=1456;e.shevaquarterhebrew=1456;e.shevawidehebrew=1456;e.shhacyrillic=1211;e.shimacoptic=1005;e.shin=1513;e.shindagesh=64329;e.shindageshhebrew=64329;e.shindageshshindot=64300;e.shindageshshindothebrew=64300;e.shindageshsindot=64301;e.shindageshsindothebrew=64301;e.shindothebrew=1473;e.shinhebrew=1513;e.shinshindot=64298;e.shinshindothebrew=64298;e.shinsindot=64299;e.shinsindothebrew=64299;e.shook=642;e.sigma=963;e.sigma1=962;e.sigmafinal=962;e.sigmalunatesymbolgreek=1010;e.sihiragana=12375;e.sikatakana=12471;e.sikatakanahalfwidth=65404;e.siluqhebrew=1469;e.siluqlefthebrew=1469;e.similar=8764;e.sindothebrew=1474;e.siosacirclekorean=12916;e.siosaparenkorean=12820;e.sioscieuckorean=12670;e.sioscirclekorean=12902;e.sioskiyeokkorean=12666;e.sioskorean=12613;e.siosnieunkorean=12667;e.siosparenkorean=12806;e.siospieupkorean=12669;e.siostikeutkorean=12668;e.six=54;e.sixarabic=1638;e.sixbengali=2540;e.sixcircle=9317;e.sixcircleinversesansserif=10127;e.sixdeva=2412;e.sixgujarati=2796;e.sixgurmukhi=2668;e.sixhackarabic=1638;e.sixhangzhou=12326;e.sixideographicparen=12837;e.sixinferior=8326;e.sixmonospace=65302;e.sixoldstyle=63286;e.sixparen=9337;e.sixperiod=9357;e.sixpersian=1782;e.sixroman=8565;e.sixsuperior=8310;e.sixteencircle=9327;e.sixteencurrencydenominatorbengali=2553;e.sixteenparen=9347;e.sixteenperiod=9367;e.sixthai=3670;e.slash=47;e.slashmonospace=65295;e.slong=383;e.slongdotaccent=7835;e.smileface=9786;e.smonospace=65363;e.sofpasuqhebrew=1475;e.softhyphen=173;e.softsigncyrillic=1100;e.sohiragana=12381;e.sokatakana=12477;e.sokatakanahalfwidth=65407;e.soliduslongoverlaycmb=824;e.solidusshortoverlaycmb=823;e.sorusithai=3625;e.sosalathai=3624;e.sosothai=3595;e.sosuathai=3626;e.space=32;e.spacehackarabic=32;e.spade=9824;e.spadesuitblack=9824;e.spadesuitwhite=9828;e.sparen=9390;e.squarebelowcmb=827;e.squarecc=13252;e.squarecm=13213;e.squarediagonalcrosshatchfill=9641;e.squarehorizontalfill=9636;e.squarekg=13199;e.squarekm=13214;e.squarekmcapital=13262;e.squareln=13265;e.squarelog=13266;e.squaremg=13198;e.squaremil=13269;e.squaremm=13212;e.squaremsquared=13217;e.squareorthogonalcrosshatchfill=9638;e.squareupperlefttolowerrightfill=9639;e.squareupperrighttolowerleftfill=9640;e.squareverticalfill=9637;e.squarewhitewithsmallblack=9635;e.srsquare=13275;e.ssabengali=2487;e.ssadeva=2359;e.ssagujarati=2743;e.ssangcieuckorean=12617;e.ssanghieuhkorean=12677;e.ssangieungkorean=12672;e.ssangkiyeokkorean=12594;e.ssangnieunkorean=12645;e.ssangpieupkorean=12611;e.ssangsioskorean=12614;e.ssangtikeutkorean=12600;e.ssuperior=63218;e.sterling=163;e.sterlingmonospace=65505;e.strokelongoverlaycmb=822;e.strokeshortoverlaycmb=821;e.subset=8834;e.subsetnotequal=8842;e.subsetorequal=8838;e.succeeds=8827;e.suchthat=8715;e.suhiragana=12377;e.sukatakana=12473;e.sukatakanahalfwidth=65405;e.sukunarabic=1618;e.summation=8721;e.sun=9788;e.superset=8835;e.supersetnotequal=8843;e.supersetorequal=8839;e.svsquare=13276;e.syouwaerasquare=13180;e.t=116;e.tabengali=2468;e.tackdown=8868;e.tackleft=8867;e.tadeva=2340;e.tagujarati=2724;e.tagurmukhi=2596;e.taharabic=1591;e.tahfinalarabic=65218;e.tahinitialarabic=65219;e.tahiragana=12383;e.tahmedialarabic=65220;e.taisyouerasquare=13181;e.takatakana=12479;e.takatakanahalfwidth=65408;e.tatweelarabic=1600;e.tau=964;e.tav=1514;e.tavdages=64330;e.tavdagesh=64330;e.tavdageshhebrew=64330;e.tavhebrew=1514;e.tbar=359;e.tbopomofo=12554;e.tcaron=357;e.tccurl=680;e.tcedilla=355;e.tcheharabic=1670;e.tchehfinalarabic=64379;e.tchehinitialarabic=64380;e.tchehmedialarabic=64381;e.tcircle=9443;e.tcircumflexbelow=7793;e.tcommaaccent=355;e.tdieresis=7831;e.tdotaccent=7787;e.tdotbelow=7789;e.tecyrillic=1090;e.tedescendercyrillic=1197;e.teharabic=1578;e.tehfinalarabic=65174;e.tehhahinitialarabic=64674;e.tehhahisolatedarabic=64524;e.tehinitialarabic=65175;e.tehiragana=12390;e.tehjeeminitialarabic=64673;e.tehjeemisolatedarabic=64523;e.tehmarbutaarabic=1577;e.tehmarbutafinalarabic=65172;e.tehmedialarabic=65176;e.tehmeeminitialarabic=64676;e.tehmeemisolatedarabic=64526;e.tehnoonfinalarabic=64627;e.tekatakana=12486;e.tekatakanahalfwidth=65411;e.telephone=8481;e.telephoneblack=9742;e.telishagedolahebrew=1440;e.telishaqetanahebrew=1449;e.tencircle=9321;e.tenideographicparen=12841;e.tenparen=9341;e.tenperiod=9361;e.tenroman=8569;e.tesh=679;e.tet=1496;e.tetdagesh=64312;e.tetdageshhebrew=64312;e.tethebrew=1496;e.tetsecyrillic=1205;e.tevirhebrew=1435;e.tevirlefthebrew=1435;e.thabengali=2469;e.thadeva=2341;e.thagujarati=2725;e.thagurmukhi=2597;e.thalarabic=1584;e.thalfinalarabic=65196;e.thanthakhatlowleftthai=63640;e.thanthakhatlowrightthai=63639;e.thanthakhatthai=3660;e.thanthakhatupperleftthai=63638;e.theharabic=1579;e.thehfinalarabic=65178;e.thehinitialarabic=65179;e.thehmedialarabic=65180;e.thereexists=8707;e.therefore=8756;e.theta=952;e.theta1=977;e.thetasymbolgreek=977;e.thieuthacirclekorean=12921;e.thieuthaparenkorean=12825;e.thieuthcirclekorean=12907;e.thieuthkorean=12620;e.thieuthparenkorean=12811;e.thirteencircle=9324;e.thirteenparen=9344;e.thirteenperiod=9364;e.thonangmonthothai=3601;e.thook=429;e.thophuthaothai=3602;e.thorn=254;e.thothahanthai=3607;e.thothanthai=3600;e.thothongthai=3608;e.thothungthai=3606;e.thousandcyrillic=1154;e.thousandsseparatorarabic=1644;e.thousandsseparatorpersian=1644;e.three=51;e.threearabic=1635;e.threebengali=2537;e.threecircle=9314;e.threecircleinversesansserif=10124;e.threedeva=2409;e.threeeighths=8540;e.threegujarati=2793;e.threegurmukhi=2665;e.threehackarabic=1635;e.threehangzhou=12323;e.threeideographicparen=12834;e.threeinferior=8323;e.threemonospace=65299;e.threenumeratorbengali=2550;e.threeoldstyle=63283;e.threeparen=9334;e.threeperiod=9354;e.threepersian=1779;e.threequarters=190;e.threequartersemdash=63198;e.threeroman=8562;e.threesuperior=179;e.threethai=3667;e.thzsquare=13204;e.tihiragana=12385;e.tikatakana=12481;e.tikatakanahalfwidth=65409;e.tikeutacirclekorean=12912;e.tikeutaparenkorean=12816;e.tikeutcirclekorean=12898;e.tikeutkorean=12599;e.tikeutparenkorean=12802;e.tilde=732;e.tildebelowcmb=816;e.tildecmb=771;e.tildecomb=771;e.tildedoublecmb=864;e.tildeoperator=8764;e.tildeoverlaycmb=820;e.tildeverticalcmb=830;e.timescircle=8855;e.tipehahebrew=1430;e.tipehalefthebrew=1430;e.tippigurmukhi=2672;e.titlocyrilliccmb=1155;e.tiwnarmenian=1407;e.tlinebelow=7791;e.tmonospace=65364;e.toarmenian=1385;e.tohiragana=12392;e.tokatakana=12488;e.tokatakanahalfwidth=65412;e.tonebarextrahighmod=741;e.tonebarextralowmod=745;e.tonebarhighmod=742;e.tonebarlowmod=744;e.tonebarmidmod=743;e.tonefive=445;e.tonesix=389;e.tonetwo=424;e.tonos=900;e.tonsquare=13095;e.topatakthai=3599;e.tortoiseshellbracketleft=12308;e.tortoiseshellbracketleftsmall=65117;e.tortoiseshellbracketleftvertical=65081;e.tortoiseshellbracketright=12309;e.tortoiseshellbracketrightsmall=65118;e.tortoiseshellbracketrightvertical=65082;e.totaothai=3605;e.tpalatalhook=427;e.tparen=9391;e.trademark=8482;e.trademarksans=63722;e.trademarkserif=63195;e.tretroflexhook=648;e.triagdn=9660;e.triaglf=9668;e.triagrt=9658;e.triagup=9650;e.ts=678;e.tsadi=1510;e.tsadidagesh=64326;e.tsadidageshhebrew=64326;e.tsadihebrew=1510;e.tsecyrillic=1094;e.tsere=1461;e.tsere12=1461;e.tsere1e=1461;e.tsere2b=1461;e.tserehebrew=1461;e.tserenarrowhebrew=1461;e.tserequarterhebrew=1461;e.tserewidehebrew=1461;e.tshecyrillic=1115;e.tsuperior=63219;e.ttabengali=2463;e.ttadeva=2335;e.ttagujarati=2719;e.ttagurmukhi=2591;e.tteharabic=1657;e.ttehfinalarabic=64359;e.ttehinitialarabic=64360;e.ttehmedialarabic=64361;e.tthabengali=2464;e.tthadeva=2336;e.tthagujarati=2720;e.tthagurmukhi=2592;e.tturned=647;e.tuhiragana=12388;e.tukatakana=12484;e.tukatakanahalfwidth=65410;e.tusmallhiragana=12387;e.tusmallkatakana=12483;e.tusmallkatakanahalfwidth=65391;e.twelvecircle=9323;e.twelveparen=9343;e.twelveperiod=9363;e.twelveroman=8571;e.twentycircle=9331;e.twentyhangzhou=21316;e.twentyparen=9351;e.twentyperiod=9371;e.two=50;e.twoarabic=1634;e.twobengali=2536;e.twocircle=9313;e.twocircleinversesansserif=10123;e.twodeva=2408;e.twodotenleader=8229;e.twodotleader=8229;e.twodotleadervertical=65072;e.twogujarati=2792;e.twogurmukhi=2664;e.twohackarabic=1634;e.twohangzhou=12322;e.twoideographicparen=12833;e.twoinferior=8322;e.twomonospace=65298;e.twonumeratorbengali=2549;e.twooldstyle=63282;e.twoparen=9333;e.twoperiod=9353;e.twopersian=1778;e.tworoman=8561;e.twostroke=443;e.twosuperior=178;e.twothai=3666;e.twothirds=8532;e.u=117;e.uacute=250;e.ubar=649;e.ubengali=2441;e.ubopomofo=12584;e.ubreve=365;e.ucaron=468;e.ucircle=9444;e.ucircumflex=251;e.ucircumflexbelow=7799;e.ucyrillic=1091;e.udattadeva=2385;e.udblacute=369;e.udblgrave=533;e.udeva=2313;e.udieresis=252;e.udieresisacute=472;e.udieresisbelow=7795;e.udieresiscaron=474;e.udieresiscyrillic=1265;e.udieresisgrave=476;e.udieresismacron=470;e.udotbelow=7909;e.ugrave=249;e.ugujarati=2697;e.ugurmukhi=2569;e.uhiragana=12358;e.uhookabove=7911;e.uhorn=432;e.uhornacute=7913;e.uhorndotbelow=7921;e.uhorngrave=7915;e.uhornhookabove=7917;e.uhorntilde=7919;e.uhungarumlaut=369;e.uhungarumlautcyrillic=1267;e.uinvertedbreve=535;e.ukatakana=12454;e.ukatakanahalfwidth=65395;e.ukcyrillic=1145;e.ukorean=12636;e.umacron=363;e.umacroncyrillic=1263;e.umacrondieresis=7803;e.umatragurmukhi=2625;e.umonospace=65365;e.underscore=95;e.underscoredbl=8215;e.underscoremonospace=65343;e.underscorevertical=65075;e.underscorewavy=65103;e.union=8746;e.universal=8704;e.uogonek=371;e.uparen=9392;e.upblock=9600;e.upperdothebrew=1476;e.upsilon=965;e.upsilondieresis=971;e.upsilondieresistonos=944;e.upsilonlatin=650;e.upsilontonos=973;e.uptackbelowcmb=797;e.uptackmod=724;e.uragurmukhi=2675;e.uring=367;e.ushortcyrillic=1118;e.usmallhiragana=12357;e.usmallkatakana=12453;e.usmallkatakanahalfwidth=65385;e.ustraightcyrillic=1199;e.ustraightstrokecyrillic=1201;e.utilde=361;e.utildeacute=7801;e.utildebelow=7797;e.uubengali=2442;e.uudeva=2314;e.uugujarati=2698;e.uugurmukhi=2570;e.uumatragurmukhi=2626;e.uuvowelsignbengali=2498;e.uuvowelsigndeva=2370;e.uuvowelsigngujarati=2754;e.uvowelsignbengali=2497;e.uvowelsigndeva=2369;e.uvowelsigngujarati=2753;e.v=118;e.vadeva=2357;e.vagujarati=2741;e.vagurmukhi=2613;e.vakatakana=12535;e.vav=1493;e.vavdagesh=64309;e.vavdagesh65=64309;e.vavdageshhebrew=64309;e.vavhebrew=1493;e.vavholam=64331;e.vavholamhebrew=64331;e.vavvavhebrew=1520;e.vavyodhebrew=1521;e.vcircle=9445;e.vdotbelow=7807;e.vecyrillic=1074;e.veharabic=1700;e.vehfinalarabic=64363;e.vehinitialarabic=64364;e.vehmedialarabic=64365;e.vekatakana=12537;e.venus=9792;e.verticalbar=124;e.verticallineabovecmb=781;e.verticallinebelowcmb=809;e.verticallinelowmod=716;e.verticallinemod=712;e.vewarmenian=1406;e.vhook=651;e.vikatakana=12536;e.viramabengali=2509;e.viramadeva=2381;e.viramagujarati=2765;e.visargabengali=2435;e.visargadeva=2307;e.visargagujarati=2691;e.vmonospace=65366;e.voarmenian=1400;e.voicediterationhiragana=12446;e.voicediterationkatakana=12542;e.voicedmarkkana=12443;e.voicedmarkkanahalfwidth=65438;e.vokatakana=12538;e.vparen=9393;e.vtilde=7805;e.vturned=652;e.vuhiragana=12436;e.vukatakana=12532;e.w=119;e.wacute=7811;e.waekorean=12633;e.wahiragana=12431;e.wakatakana=12527;e.wakatakanahalfwidth=65436;e.wakorean=12632;e.wasmallhiragana=12430;e.wasmallkatakana=12526;e.wattosquare=13143;e.wavedash=12316;e.wavyunderscorevertical=65076;e.wawarabic=1608;e.wawfinalarabic=65262;e.wawhamzaabovearabic=1572;e.wawhamzaabovefinalarabic=65158;e.wbsquare=13277;e.wcircle=9446;e.wcircumflex=373;e.wdieresis=7813;e.wdotaccent=7815;e.wdotbelow=7817;e.wehiragana=12433;e.weierstrass=8472;e.wekatakana=12529;e.wekorean=12638;e.weokorean=12637;e.wgrave=7809;e.whitebullet=9702;e.whitecircle=9675;e.whitecircleinverse=9689;e.whitecornerbracketleft=12302;e.whitecornerbracketleftvertical=65091;e.whitecornerbracketright=12303;e.whitecornerbracketrightvertical=65092;e.whitediamond=9671;e.whitediamondcontainingblacksmalldiamond=9672;e.whitedownpointingsmalltriangle=9663;e.whitedownpointingtriangle=9661;e.whiteleftpointingsmalltriangle=9667;e.whiteleftpointingtriangle=9665;e.whitelenticularbracketleft=12310;e.whitelenticularbracketright=12311;e.whiterightpointingsmalltriangle=9657;e.whiterightpointingtriangle=9655;e.whitesmallsquare=9643;e.whitesmilingface=9786;e.whitesquare=9633;e.whitestar=9734;e.whitetelephone=9743;e.whitetortoiseshellbracketleft=12312;e.whitetortoiseshellbracketright=12313;e.whiteuppointingsmalltriangle=9653;e.whiteuppointingtriangle=9651;e.wihiragana=12432;e.wikatakana=12528;e.wikorean=12639;e.wmonospace=65367;e.wohiragana=12434;e.wokatakana=12530;e.wokatakanahalfwidth=65382;e.won=8361;e.wonmonospace=65510;e.wowaenthai=3623;e.wparen=9394;e.wring=7832;e.wsuperior=695;e.wturned=653;e.wynn=447;e.x=120;e.xabovecmb=829;e.xbopomofo=12562;e.xcircle=9447;e.xdieresis=7821;e.xdotaccent=7819;e.xeharmenian=1389;e.xi=958;e.xmonospace=65368;e.xparen=9395;e.xsuperior=739;e.y=121;e.yaadosquare=13134;e.yabengali=2479;e.yacute=253;e.yadeva=2351;e.yaekorean=12626;e.yagujarati=2735;e.yagurmukhi=2607;e.yahiragana=12420;e.yakatakana=12516;e.yakatakanahalfwidth=65428;e.yakorean=12625;e.yamakkanthai=3662;e.yasmallhiragana=12419;e.yasmallkatakana=12515;e.yasmallkatakanahalfwidth=65388;e.yatcyrillic=1123;e.ycircle=9448;e.ycircumflex=375;e.ydieresis=255;e.ydotaccent=7823;e.ydotbelow=7925;e.yeharabic=1610;e.yehbarreearabic=1746;e.yehbarreefinalarabic=64431;e.yehfinalarabic=65266;e.yehhamzaabovearabic=1574;e.yehhamzaabovefinalarabic=65162;e.yehhamzaaboveinitialarabic=65163;e.yehhamzaabovemedialarabic=65164;e.yehinitialarabic=65267;e.yehmedialarabic=65268;e.yehmeeminitialarabic=64733;e.yehmeemisolatedarabic=64600;e.yehnoonfinalarabic=64660;e.yehthreedotsbelowarabic=1745;e.yekorean=12630;e.yen=165;e.yenmonospace=65509;e.yeokorean=12629;e.yeorinhieuhkorean=12678;e.yerahbenyomohebrew=1450;e.yerahbenyomolefthebrew=1450;e.yericyrillic=1099;e.yerudieresiscyrillic=1273;e.yesieungkorean=12673;e.yesieungpansioskorean=12675;e.yesieungsioskorean=12674;e.yetivhebrew=1434;e.ygrave=7923;e.yhook=436;e.yhookabove=7927;e.yiarmenian=1397;e.yicyrillic=1111;e.yikorean=12642;e.yinyang=9775;e.yiwnarmenian=1410;e.ymonospace=65369;e.yod=1497;e.yoddagesh=64313;e.yoddageshhebrew=64313;e.yodhebrew=1497;e.yodyodhebrew=1522;e.yodyodpatahhebrew=64287;e.yohiragana=12424;e.yoikorean=12681;e.yokatakana=12520;e.yokatakanahalfwidth=65430;e.yokorean=12635;e.yosmallhiragana=12423;e.yosmallkatakana=12519;e.yosmallkatakanahalfwidth=65390;e.yotgreek=1011;e.yoyaekorean=12680;e.yoyakorean=12679;e.yoyakthai=3618;e.yoyingthai=3597;e.yparen=9396;e.ypogegrammeni=890;e.ypogegrammenigreekcmb=837;e.yr=422;e.yring=7833;e.ysuperior=696;e.ytilde=7929;e.yturned=654;e.yuhiragana=12422;e.yuikorean=12684;e.yukatakana=12518;e.yukatakanahalfwidth=65429;e.yukorean=12640;e.yusbigcyrillic=1131;e.yusbigiotifiedcyrillic=1133;e.yuslittlecyrillic=1127;e.yuslittleiotifiedcyrillic=1129;e.yusmallhiragana=12421;e.yusmallkatakana=12517;e.yusmallkatakanahalfwidth=65389;e.yuyekorean=12683;e.yuyeokorean=12682;e.yyabengali=2527;e.yyadeva=2399;e.z=122;e.zaarmenian=1382;e.zacute=378;e.zadeva=2395;e.zagurmukhi=2651;e.zaharabic=1592;e.zahfinalarabic=65222;e.zahinitialarabic=65223;e.zahiragana=12374;e.zahmedialarabic=65224;e.zainarabic=1586;e.zainfinalarabic=65200;e.zakatakana=12470;e.zaqefgadolhebrew=1429;e.zaqefqatanhebrew=1428;e.zarqahebrew=1432;e.zayin=1494;e.zayindagesh=64310;e.zayindageshhebrew=64310;e.zayinhebrew=1494;e.zbopomofo=12567;e.zcaron=382;e.zcircle=9449;e.zcircumflex=7825;e.zcurl=657;e.zdot=380;e.zdotaccent=380;e.zdotbelow=7827;e.zecyrillic=1079;e.zedescendercyrillic=1177;e.zedieresiscyrillic=1247;e.zehiragana=12380;e.zekatakana=12476;e.zero=48;e.zeroarabic=1632;e.zerobengali=2534;e.zerodeva=2406;e.zerogujarati=2790;e.zerogurmukhi=2662;e.zerohackarabic=1632;e.zeroinferior=8320;e.zeromonospace=65296;e.zerooldstyle=63280;e.zeropersian=1776;e.zerosuperior=8304;e.zerothai=3664;e.zerowidthjoiner=65279;e.zerowidthnonjoiner=8204;e.zerowidthspace=8203;e.zeta=950;e.zhbopomofo=12563;e.zhearmenian=1386;e.zhebrevecyrillic=1218;e.zhecyrillic=1078;e.zhedescendercyrillic=1175;e.zhedieresiscyrillic=1245;e.zihiragana=12376;e.zikatakana=12472;e.zinorhebrew=1454;e.zlinebelow=7829;e.zmonospace=65370;e.zohiragana=12382;e.zokatakana=12478;e.zparen=9397;e.zretroflexhook=656;e.zstroke=438;e.zuhiragana=12378;e.zukatakana=12474;e[".notdef"]=0;e.angbracketleftbig=9001;e.angbracketleftBig=9001;e.angbracketleftbigg=9001;e.angbracketleftBigg=9001;e.angbracketrightBig=9002;e.angbracketrightbig=9002;e.angbracketrightBigg=9002;e.angbracketrightbigg=9002;e.arrowhookleft=8618;e.arrowhookright=8617;e.arrowlefttophalf=8636;e.arrowleftbothalf=8637;e.arrownortheast=8599;e.arrownorthwest=8598;e.arrowrighttophalf=8640;e.arrowrightbothalf=8641;e.arrowsoutheast=8600;e.arrowsouthwest=8601;e.backslashbig=8726;e.backslashBig=8726;e.backslashBigg=8726;e.backslashbigg=8726;e.bardbl=8214;e.bracehtipdownleft=65079;e.bracehtipdownright=65079;e.bracehtipupleft=65080;e.bracehtipupright=65080;e.braceleftBig=123;e.braceleftbig=123;e.braceleftbigg=123;e.braceleftBigg=123;e.bracerightBig=125;e.bracerightbig=125;e.bracerightbigg=125;e.bracerightBigg=125;e.bracketleftbig=91;e.bracketleftBig=91;e.bracketleftbigg=91;e.bracketleftBigg=91;e.bracketrightBig=93;e.bracketrightbig=93;e.bracketrightbigg=93;e.bracketrightBigg=93;e.ceilingleftbig=8968;e.ceilingleftBig=8968;e.ceilingleftBigg=8968;e.ceilingleftbigg=8968;e.ceilingrightbig=8969;e.ceilingrightBig=8969;e.ceilingrightbigg=8969;e.ceilingrightBigg=8969;e.circledotdisplay=8857;e.circledottext=8857;e.circlemultiplydisplay=8855;e.circlemultiplytext=8855;e.circleplusdisplay=8853;e.circleplustext=8853;e.contintegraldisplay=8750;e.contintegraltext=8750;e.coproductdisplay=8720;e.coproducttext=8720;e.floorleftBig=8970;e.floorleftbig=8970;e.floorleftbigg=8970;e.floorleftBigg=8970;e.floorrightbig=8971;e.floorrightBig=8971;e.floorrightBigg=8971;e.floorrightbigg=8971;e.hatwide=770;e.hatwider=770;e.hatwidest=770;e.intercal=7488;e.integraldisplay=8747;e.integraltext=8747;e.intersectiondisplay=8898;e.intersectiontext=8898;e.logicalanddisplay=8743;e.logicalandtext=8743;e.logicalordisplay=8744;e.logicalortext=8744;e.parenleftBig=40;e.parenleftbig=40;e.parenleftBigg=40;e.parenleftbigg=40;e.parenrightBig=41;e.parenrightbig=41;e.parenrightBigg=41;e.parenrightbigg=41;e.prime=8242;e.productdisplay=8719;e.producttext=8719;e.radicalbig=8730;e.radicalBig=8730;e.radicalBigg=8730;e.radicalbigg=8730;e.radicalbt=8730;e.radicaltp=8730;e.radicalvertex=8730;e.slashbig=47;e.slashBig=47;e.slashBigg=47;e.slashbigg=47;e.summationdisplay=8721;e.summationtext=8721;e.tildewide=732;e.tildewider=732;e.tildewidest=732;e.uniondisplay=8899;e.unionmultidisplay=8846;e.unionmultitext=8846;e.unionsqdisplay=8852;e.unionsqtext=8852;e.uniontext=8899;e.vextenddouble=8741;e.vextendsingle=8739}));t.getGlyphsUnicode=n;const i=(0,r.getLookupTableFactory)((function(e){e.space=32;e.a1=9985;e.a2=9986;e.a202=9987;e.a3=9988;e.a4=9742;e.a5=9990;e.a119=9991;e.a118=9992;e.a117=9993;e.a11=9755;e.a12=9758;e.a13=9996;e.a14=9997;e.a15=9998;e.a16=9999;e.a105=1e4;e.a17=10001;e.a18=10002;e.a19=10003;e.a20=10004;e.a21=10005;e.a22=10006;e.a23=10007;e.a24=10008;e.a25=10009;e.a26=10010;e.a27=10011;e.a28=10012;e.a6=10013;e.a7=10014;e.a8=10015;e.a9=10016;e.a10=10017;e.a29=10018;e.a30=10019;e.a31=10020;e.a32=10021;e.a33=10022;e.a34=10023;e.a35=9733;e.a36=10025;e.a37=10026;e.a38=10027;e.a39=10028;e.a40=10029;e.a41=10030;e.a42=10031;e.a43=10032;e.a44=10033;e.a45=10034;e.a46=10035;e.a47=10036;e.a48=10037;e.a49=10038;e.a50=10039;e.a51=10040;e.a52=10041;e.a53=10042;e.a54=10043;e.a55=10044;e.a56=10045;e.a57=10046;e.a58=10047;e.a59=10048;e.a60=10049;e.a61=10050;e.a62=10051;e.a63=10052;e.a64=10053;e.a65=10054;e.a66=10055;e.a67=10056;e.a68=10057;e.a69=10058;e.a70=10059;e.a71=9679;e.a72=10061;e.a73=9632;e.a74=10063;e.a203=10064;e.a75=10065;e.a204=10066;e.a76=9650;e.a77=9660;e.a78=9670;e.a79=10070;e.a81=9687;e.a82=10072;e.a83=10073;e.a84=10074;e.a97=10075;e.a98=10076;e.a99=10077;e.a100=10078;e.a101=10081;e.a102=10082;e.a103=10083;e.a104=10084;e.a106=10085;e.a107=10086;e.a108=10087;e.a112=9827;e.a111=9830;e.a110=9829;e.a109=9824;e.a120=9312;e.a121=9313;e.a122=9314;e.a123=9315;e.a124=9316;e.a125=9317;e.a126=9318;e.a127=9319;e.a128=9320;e.a129=9321;e.a130=10102;e.a131=10103;e.a132=10104;e.a133=10105;e.a134=10106;e.a135=10107;e.a136=10108;e.a137=10109;e.a138=10110;e.a139=10111;e.a140=10112;e.a141=10113;e.a142=10114;e.a143=10115;e.a144=10116;e.a145=10117;e.a146=10118;e.a147=10119;e.a148=10120;e.a149=10121;e.a150=10122;e.a151=10123;e.a152=10124;e.a153=10125;e.a154=10126;e.a155=10127;e.a156=10128;e.a157=10129;e.a158=10130;e.a159=10131;e.a160=10132;e.a161=8594;e.a163=8596;e.a164=8597;e.a196=10136;e.a165=10137;e.a192=10138;e.a166=10139;e.a167=10140;e.a168=10141;e.a169=10142;e.a170=10143;e.a171=10144;e.a172=10145;e.a173=10146;e.a162=10147;e.a174=10148;e.a175=10149;e.a176=10150;e.a177=10151;e.a178=10152;e.a179=10153;e.a193=10154;e.a180=10155;e.a199=10156;e.a181=10157;e.a200=10158;e.a182=10159;e.a201=10161;e.a183=10162;e.a184=10163;e.a197=10164;e.a185=10165;e.a194=10166;e.a198=10167;e.a186=10168;e.a195=10169;e.a187=10170;e.a188=10171;e.a189=10172;e.a190=10173;e.a191=10174;e.a89=10088;e.a90=10089;e.a93=10090;e.a94=10091;e.a91=10092;e.a92=10093;e.a205=10094;e.a85=10095;e.a206=10096;e.a86=10097;e.a87=10098;e.a88=10099;e.a95=10100;e.a96=10101;e[".notdef"]=0}));t.getDingbatsGlyphsUnicode=i},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.clearUnicodeCaches=function clearUnicodeCaches(){s.clear()};t.getCharUnicodeCategory=function getCharUnicodeCategory(e){const t=s.get(e);if(t)return t;const a=e.match(i),r={isWhitespace:!!a?.[1],isZeroWidthDiacritic:!!a?.[2],isInvisibleFormatMark:!!a?.[3]};s.set(e,r);return r};t.getUnicodeForGlyph=function getUnicodeForGlyph(e,t){let a=t[e];if(void 0!==a)return a;if(!e)return-1;if("u"===e[0]){const t=e.length;let r;if(7===t&&"n"===e[1]&&"i"===e[2])r=e.substring(3);else{if(!(t>=5&&t<=7))return-1;r=e.substring(1)}if(r===r.toUpperCase()){a=parseInt(r,16);if(a>=0)return a}}return-1};t.getUnicodeRangeFor=function getUnicodeRangeFor(e,t=-1){if(-1!==t){const a=n[t];for(let r=0,n=a.length;r=a[r]&&e<=a[r+1])return t}for(let t=0,a=n.length;t=a[r]&&e<=a[r+1])return t}return-1};t.mapSpecialUnicodeValues=function mapSpecialUnicodeValues(e){if(e>=65520&&e<=65535)return 0;if(e>=62976&&e<=63743)return r()[e]||e;if(173===e)return 45;return e};const r=(0,a(3).getLookupTableFactory)((function(e){e[63721]=169;e[63193]=169;e[63720]=174;e[63194]=174;e[63722]=8482;e[63195]=8482;e[63729]=9127;e[63730]=9128;e[63731]=9129;e[63740]=9131;e[63741]=9132;e[63742]=9133;e[63726]=9121;e[63727]=9122;e[63728]=9123;e[63737]=9124;e[63738]=9125;e[63739]=9126;e[63723]=9115;e[63724]=9116;e[63725]=9117;e[63734]=9118;e[63735]=9119;e[63736]=9120}));const n=[[0,127],[128,255],[256,383],[384,591],[592,687,7424,7551,7552,7615],[688,767,42752,42783],[768,879,7616,7679],[880,1023],[11392,11519],[1024,1279,1280,1327,11744,11775,42560,42655],[1328,1423],[1424,1535],[42240,42559],[1536,1791,1872,1919],[1984,2047],[2304,2431],[2432,2559],[2560,2687],[2688,2815],[2816,2943],[2944,3071],[3072,3199],[3200,3327],[3328,3455],[3584,3711],[3712,3839],[4256,4351,11520,11567],[6912,7039],[4352,4607],[7680,7935,11360,11391,42784,43007],[7936,8191],[8192,8303,11776,11903],[8304,8351],[8352,8399],[8400,8447],[8448,8527],[8528,8591],[8592,8703,10224,10239,10496,10623,11008,11263],[8704,8959,10752,11007,10176,10223,10624,10751],[8960,9215],[9216,9279],[9280,9311],[9312,9471],[9472,9599],[9600,9631],[9632,9727],[9728,9983],[9984,10175],[12288,12351],[12352,12447],[12448,12543,12784,12799],[12544,12591,12704,12735],[12592,12687],[43072,43135],[12800,13055],[13056,13311],[44032,55215],[55296,57343],[67840,67871],[19968,40959,11904,12031,12032,12255,12272,12287,13312,19903,131072,173791,12688,12703],[57344,63743],[12736,12783,63744,64255,194560,195103],[64256,64335],[64336,65023],[65056,65071],[65040,65055],[65104,65135],[65136,65279],[65280,65519],[65520,65535],[3840,4095],[1792,1871],[1920,1983],[3456,3583],[4096,4255],[4608,4991,4992,5023,11648,11743],[5024,5119],[5120,5759],[5760,5791],[5792,5887],[6016,6143],[6144,6319],[10240,10495],[40960,42127],[5888,5919,5920,5951,5952,5983,5984,6015],[66304,66351],[66352,66383],[66560,66639],[118784,119039,119040,119295,119296,119375],[119808,120831],[1044480,1048573],[65024,65039,917760,917999],[917504,917631],[6400,6479],[6480,6527],[6528,6623],[6656,6687],[11264,11359],[11568,11647],[19904,19967],[43008,43055],[65536,65663,65664,65791,65792,65855],[65856,65935],[66432,66463],[66464,66527],[66640,66687],[66688,66735],[67584,67647],[68096,68191],[119552,119647],[73728,74751,74752,74879],[119648,119679],[7040,7103],[7168,7247],[7248,7295],[43136,43231],[43264,43311],[43312,43359],[43520,43615],[65936,65999],[66e3,66047],[66208,66271,66176,66207,67872,67903],[127024,127135,126976,127023]];const i=new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$","u"),s=new Map},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.getSerifFonts=t.getNonStdFontMap=t.getGlyphMapForStandardFonts=t.getFontNameToFileMap=void 0;t.getStandardFontName=function getStandardFontName(e){const t=(0,n.normalizeFontName)(e);return i()[t]};t.getSymbolsFonts=t.getSupplementalGlyphMapForCalibri=t.getSupplementalGlyphMapForArialBlack=t.getStdFontMap=void 0;t.isKnownFontName=function isKnownFontName(e){const t=(0,n.normalizeFontName)(e);return!!(i()[t]||o()[t]||c()[t]||l()[t])};var r=a(3),n=a(38);const i=(0,r.getLookupTableFactory)((function(e){e["Times-Roman"]="Times-Roman";e.Helvetica="Helvetica";e.Courier="Courier";e.Symbol="Symbol";e["Times-Bold"]="Times-Bold";e["Helvetica-Bold"]="Helvetica-Bold";e["Courier-Bold"]="Courier-Bold";e.ZapfDingbats="ZapfDingbats";e["Times-Italic"]="Times-Italic";e["Helvetica-Oblique"]="Helvetica-Oblique";e["Courier-Oblique"]="Courier-Oblique";e["Times-BoldItalic"]="Times-BoldItalic";e["Helvetica-BoldOblique"]="Helvetica-BoldOblique";e["Courier-BoldOblique"]="Courier-BoldOblique";e.ArialNarrow="Helvetica";e["ArialNarrow-Bold"]="Helvetica-Bold";e["ArialNarrow-BoldItalic"]="Helvetica-BoldOblique";e["ArialNarrow-Italic"]="Helvetica-Oblique";e.ArialBlack="Helvetica";e["ArialBlack-Bold"]="Helvetica-Bold";e["ArialBlack-BoldItalic"]="Helvetica-BoldOblique";e["ArialBlack-Italic"]="Helvetica-Oblique";e["Arial-Black"]="Helvetica";e["Arial-Black-Bold"]="Helvetica-Bold";e["Arial-Black-BoldItalic"]="Helvetica-BoldOblique";e["Arial-Black-Italic"]="Helvetica-Oblique";e.Arial="Helvetica";e["Arial-Bold"]="Helvetica-Bold";e["Arial-BoldItalic"]="Helvetica-BoldOblique";e["Arial-Italic"]="Helvetica-Oblique";e.ArialMT="Helvetica";e["Arial-BoldItalicMT"]="Helvetica-BoldOblique";e["Arial-BoldMT"]="Helvetica-Bold";e["Arial-ItalicMT"]="Helvetica-Oblique";e["Arial-BoldItalicMT-BoldItalic"]="Helvetica-BoldOblique";e["Arial-BoldMT-Bold"]="Helvetica-Bold";e["Arial-ItalicMT-Italic"]="Helvetica-Oblique";e.ArialUnicodeMS="Helvetica";e["ArialUnicodeMS-Bold"]="Helvetica-Bold";e["ArialUnicodeMS-BoldItalic"]="Helvetica-BoldOblique";e["ArialUnicodeMS-Italic"]="Helvetica-Oblique";e["Courier-BoldItalic"]="Courier-BoldOblique";e["Courier-Italic"]="Courier-Oblique";e.CourierNew="Courier";e["CourierNew-Bold"]="Courier-Bold";e["CourierNew-BoldItalic"]="Courier-BoldOblique";e["CourierNew-Italic"]="Courier-Oblique";e["CourierNewPS-BoldItalicMT"]="Courier-BoldOblique";e["CourierNewPS-BoldMT"]="Courier-Bold";e["CourierNewPS-ItalicMT"]="Courier-Oblique";e.CourierNewPSMT="Courier";e["Helvetica-BoldItalic"]="Helvetica-BoldOblique";e["Helvetica-Italic"]="Helvetica-Oblique";e["Symbol-Bold"]="Symbol";e["Symbol-BoldItalic"]="Symbol";e["Symbol-Italic"]="Symbol";e.TimesNewRoman="Times-Roman";e["TimesNewRoman-Bold"]="Times-Bold";e["TimesNewRoman-BoldItalic"]="Times-BoldItalic";e["TimesNewRoman-Italic"]="Times-Italic";e.TimesNewRomanPS="Times-Roman";e["TimesNewRomanPS-Bold"]="Times-Bold";e["TimesNewRomanPS-BoldItalic"]="Times-BoldItalic";e["TimesNewRomanPS-BoldItalicMT"]="Times-BoldItalic";e["TimesNewRomanPS-BoldMT"]="Times-Bold";e["TimesNewRomanPS-Italic"]="Times-Italic";e["TimesNewRomanPS-ItalicMT"]="Times-Italic";e.TimesNewRomanPSMT="Times-Roman";e["TimesNewRomanPSMT-Bold"]="Times-Bold";e["TimesNewRomanPSMT-BoldItalic"]="Times-BoldItalic";e["TimesNewRomanPSMT-Italic"]="Times-Italic"}));t.getStdFontMap=i;const s=(0,r.getLookupTableFactory)((function(e){e.Courier="FoxitFixed.pfb";e["Courier-Bold"]="FoxitFixedBold.pfb";e["Courier-BoldOblique"]="FoxitFixedBoldItalic.pfb";e["Courier-Oblique"]="FoxitFixedItalic.pfb";e.Helvetica="LiberationSans-Regular.ttf";e["Helvetica-Bold"]="LiberationSans-Bold.ttf";e["Helvetica-BoldOblique"]="LiberationSans-BoldItalic.ttf";e["Helvetica-Oblique"]="LiberationSans-Italic.ttf";e["Times-Roman"]="FoxitSerif.pfb";e["Times-Bold"]="FoxitSerifBold.pfb";e["Times-BoldItalic"]="FoxitSerifBoldItalic.pfb";e["Times-Italic"]="FoxitSerifItalic.pfb";e.Symbol="FoxitSymbol.pfb";e.ZapfDingbats="FoxitDingbats.pfb";e["LiberationSans-Regular"]="LiberationSans-Regular.ttf";e["LiberationSans-Bold"]="LiberationSans-Bold.ttf";e["LiberationSans-Italic"]="LiberationSans-Italic.ttf";e["LiberationSans-BoldItalic"]="LiberationSans-BoldItalic.ttf"}));t.getFontNameToFileMap=s;const o=(0,r.getLookupTableFactory)((function(e){e.Calibri="Helvetica";e["Calibri-Bold"]="Helvetica-Bold";e["Calibri-BoldItalic"]="Helvetica-BoldOblique";e["Calibri-Italic"]="Helvetica-Oblique";e.CenturyGothic="Helvetica";e["CenturyGothic-Bold"]="Helvetica-Bold";e["CenturyGothic-BoldItalic"]="Helvetica-BoldOblique";e["CenturyGothic-Italic"]="Helvetica-Oblique";e.ComicSansMS="Comic Sans MS";e["ComicSansMS-Bold"]="Comic Sans MS-Bold";e["ComicSansMS-BoldItalic"]="Comic Sans MS-BoldItalic";e["ComicSansMS-Italic"]="Comic Sans MS-Italic";e.Impact="Helvetica";e["ItcSymbol-Bold"]="Helvetica-Bold";e["ItcSymbol-BoldItalic"]="Helvetica-BoldOblique";e["ItcSymbol-Book"]="Helvetica";e["ItcSymbol-BookItalic"]="Helvetica-Oblique";e["ItcSymbol-Medium"]="Helvetica";e["ItcSymbol-MediumItalic"]="Helvetica-Oblique";e.LucidaConsole="Courier";e["LucidaConsole-Bold"]="Courier-Bold";e["LucidaConsole-BoldItalic"]="Courier-BoldOblique";e["LucidaConsole-Italic"]="Courier-Oblique";e["LucidaSans-Demi"]="Helvetica-Bold";e["MS-Gothic"]="MS Gothic";e["MS-Gothic-Bold"]="MS Gothic-Bold";e["MS-Gothic-BoldItalic"]="MS Gothic-BoldItalic";e["MS-Gothic-Italic"]="MS Gothic-Italic";e["MS-Mincho"]="MS Mincho";e["MS-Mincho-Bold"]="MS Mincho-Bold";e["MS-Mincho-BoldItalic"]="MS Mincho-BoldItalic";e["MS-Mincho-Italic"]="MS Mincho-Italic";e["MS-PGothic"]="MS PGothic";e["MS-PGothic-Bold"]="MS PGothic-Bold";e["MS-PGothic-BoldItalic"]="MS PGothic-BoldItalic";e["MS-PGothic-Italic"]="MS PGothic-Italic";e["MS-PMincho"]="MS PMincho";e["MS-PMincho-Bold"]="MS PMincho-Bold";e["MS-PMincho-BoldItalic"]="MS PMincho-BoldItalic";e["MS-PMincho-Italic"]="MS PMincho-Italic";e.NuptialScript="Times-Italic";e.SegoeUISymbol="Helvetica"}));t.getNonStdFontMap=o;const c=(0,r.getLookupTableFactory)((function(e){e["Adobe Jenson"]=!0;e["Adobe Text"]=!0;e.Albertus=!0;e.Aldus=!0;e.Alexandria=!0;e.Algerian=!0;e["American Typewriter"]=!0;e.Antiqua=!0;e.Apex=!0;e.Arno=!0;e.Aster=!0;e.Aurora=!0;e.Baskerville=!0;e.Bell=!0;e.Bembo=!0;e["Bembo Schoolbook"]=!0;e.Benguiat=!0;e["Berkeley Old Style"]=!0;e["Bernhard Modern"]=!0;e["Berthold City"]=!0;e.Bodoni=!0;e["Bauer Bodoni"]=!0;e["Book Antiqua"]=!0;e.Bookman=!0;e["Bordeaux Roman"]=!0;e["Californian FB"]=!0;e.Calisto=!0;e.Calvert=!0;e.Capitals=!0;e.Cambria=!0;e.Cartier=!0;e.Caslon=!0;e.Catull=!0;e.Centaur=!0;e["Century Old Style"]=!0;e["Century Schoolbook"]=!0;e.Chaparral=!0;e["Charis SIL"]=!0;e.Cheltenham=!0;e["Cholla Slab"]=!0;e.Clarendon=!0;e.Clearface=!0;e.Cochin=!0;e.Colonna=!0;e["Computer Modern"]=!0;e["Concrete Roman"]=!0;e.Constantia=!0;e["Cooper Black"]=!0;e.Corona=!0;e.Ecotype=!0;e.Egyptienne=!0;e.Elephant=!0;e.Excelsior=!0;e.Fairfield=!0;e["FF Scala"]=!0;e.Folkard=!0;e.Footlight=!0;e.FreeSerif=!0;e["Friz Quadrata"]=!0;e.Garamond=!0;e.Gentium=!0;e.Georgia=!0;e.Gloucester=!0;e["Goudy Old Style"]=!0;e["Goudy Schoolbook"]=!0;e["Goudy Pro Font"]=!0;e.Granjon=!0;e["Guardian Egyptian"]=!0;e.Heather=!0;e.Hercules=!0;e["High Tower Text"]=!0;e.Hiroshige=!0;e["Hoefler Text"]=!0;e["Humana Serif"]=!0;e.Imprint=!0;e["Ionic No. 5"]=!0;e.Janson=!0;e.Joanna=!0;e.Korinna=!0;e.Lexicon=!0;e.LiberationSerif=!0;e["Liberation Serif"]=!0;e["Linux Libertine"]=!0;e.Literaturnaya=!0;e.Lucida=!0;e["Lucida Bright"]=!0;e.Melior=!0;e.Memphis=!0;e.Miller=!0;e.Minion=!0;e.Modern=!0;e["Mona Lisa"]=!0;e["Mrs Eaves"]=!0;e["MS Serif"]=!0;e["Museo Slab"]=!0;e["New York"]=!0;e["Nimbus Roman"]=!0;e["NPS Rawlinson Roadway"]=!0;e.NuptialScript=!0;e.Palatino=!0;e.Perpetua=!0;e.Plantin=!0;e["Plantin Schoolbook"]=!0;e.Playbill=!0;e["Poor Richard"]=!0;e["Rawlinson Roadway"]=!0;e.Renault=!0;e.Requiem=!0;e.Rockwell=!0;e.Roman=!0;e["Rotis Serif"]=!0;e.Sabon=!0;e.Scala=!0;e.Seagull=!0;e.Sistina=!0;e.Souvenir=!0;e.STIX=!0;e["Stone Informal"]=!0;e["Stone Serif"]=!0;e.Sylfaen=!0;e.Times=!0;e.Trajan=!0;e["Trinité"]=!0;e["Trump Mediaeval"]=!0;e.Utopia=!0;e["Vale Type"]=!0;e["Bitstream Vera"]=!0;e["Vera Serif"]=!0;e.Versailles=!0;e.Wanted=!0;e.Weiss=!0;e["Wide Latin"]=!0;e.Windsor=!0;e.XITS=!0}));t.getSerifFonts=c;const l=(0,r.getLookupTableFactory)((function(e){e.Dingbats=!0;e.Symbol=!0;e.ZapfDingbats=!0;e.Wingdings=!0;e["Wingdings-Bold"]=!0;e["Wingdings-Regular"]=!0}));t.getSymbolsFonts=l;const h=(0,r.getLookupTableFactory)((function(e){e[2]=10;e[3]=32;e[4]=33;e[5]=34;e[6]=35;e[7]=36;e[8]=37;e[9]=38;e[10]=39;e[11]=40;e[12]=41;e[13]=42;e[14]=43;e[15]=44;e[16]=45;e[17]=46;e[18]=47;e[19]=48;e[20]=49;e[21]=50;e[22]=51;e[23]=52;e[24]=53;e[25]=54;e[26]=55;e[27]=56;e[28]=57;e[29]=58;e[30]=894;e[31]=60;e[32]=61;e[33]=62;e[34]=63;e[35]=64;e[36]=65;e[37]=66;e[38]=67;e[39]=68;e[40]=69;e[41]=70;e[42]=71;e[43]=72;e[44]=73;e[45]=74;e[46]=75;e[47]=76;e[48]=77;e[49]=78;e[50]=79;e[51]=80;e[52]=81;e[53]=82;e[54]=83;e[55]=84;e[56]=85;e[57]=86;e[58]=87;e[59]=88;e[60]=89;e[61]=90;e[62]=91;e[63]=92;e[64]=93;e[65]=94;e[66]=95;e[67]=96;e[68]=97;e[69]=98;e[70]=99;e[71]=100;e[72]=101;e[73]=102;e[74]=103;e[75]=104;e[76]=105;e[77]=106;e[78]=107;e[79]=108;e[80]=109;e[81]=110;e[82]=111;e[83]=112;e[84]=113;e[85]=114;e[86]=115;e[87]=116;e[88]=117;e[89]=118;e[90]=119;e[91]=120;e[92]=121;e[93]=122;e[94]=123;e[95]=124;e[96]=125;e[97]=126;e[98]=196;e[99]=197;e[100]=199;e[101]=201;e[102]=209;e[103]=214;e[104]=220;e[105]=225;e[106]=224;e[107]=226;e[108]=228;e[109]=227;e[110]=229;e[111]=231;e[112]=233;e[113]=232;e[114]=234;e[115]=235;e[116]=237;e[117]=236;e[118]=238;e[119]=239;e[120]=241;e[121]=243;e[122]=242;e[123]=244;e[124]=246;e[125]=245;e[126]=250;e[127]=249;e[128]=251;e[129]=252;e[130]=8224;e[131]=176;e[132]=162;e[133]=163;e[134]=167;e[135]=8226;e[136]=182;e[137]=223;e[138]=174;e[139]=169;e[140]=8482;e[141]=180;e[142]=168;e[143]=8800;e[144]=198;e[145]=216;e[146]=8734;e[147]=177;e[148]=8804;e[149]=8805;e[150]=165;e[151]=181;e[152]=8706;e[153]=8721;e[154]=8719;e[156]=8747;e[157]=170;e[158]=186;e[159]=8486;e[160]=230;e[161]=248;e[162]=191;e[163]=161;e[164]=172;e[165]=8730;e[166]=402;e[167]=8776;e[168]=8710;e[169]=171;e[170]=187;e[171]=8230;e[179]=8220;e[180]=8221;e[181]=8216;e[182]=8217;e[200]=193;e[203]=205;e[207]=211;e[210]=218;e[223]=711;e[224]=321;e[225]=322;e[226]=352;e[227]=353;e[228]=381;e[229]=382;e[233]=221;e[234]=253;e[252]=263;e[253]=268;e[254]=269;e[258]=258;e[260]=260;e[261]=261;e[265]=280;e[266]=281;e[267]=282;e[268]=283;e[269]=313;e[275]=323;e[276]=324;e[278]=328;e[283]=344;e[284]=345;e[285]=346;e[286]=347;e[292]=367;e[295]=377;e[296]=378;e[298]=380;e[305]=963;e[306]=964;e[307]=966;e[308]=8215;e[309]=8252;e[310]=8319;e[311]=8359;e[312]=8592;e[313]=8593;e[337]=9552;e[493]=1039;e[494]=1040;e[672]=1488;e[673]=1489;e[674]=1490;e[675]=1491;e[676]=1492;e[677]=1493;e[678]=1494;e[679]=1495;e[680]=1496;e[681]=1497;e[682]=1498;e[683]=1499;e[684]=1500;e[685]=1501;e[686]=1502;e[687]=1503;e[688]=1504;e[689]=1505;e[690]=1506;e[691]=1507;e[692]=1508;e[693]=1509;e[694]=1510;e[695]=1511;e[696]=1512;e[697]=1513;e[698]=1514;e[705]=1524;e[706]=8362;e[710]=64288;e[711]=64298;e[759]=1617;e[761]=1776;e[763]=1778;e[775]=1652;e[777]=1764;e[778]=1780;e[779]=1781;e[780]=1782;e[782]=771;e[783]=64726;e[786]=8363;e[788]=8532;e[790]=768;e[791]=769;e[792]=768;e[795]=803;e[797]=64336;e[798]=64337;e[799]=64342;e[800]=64343;e[801]=64344;e[802]=64345;e[803]=64362;e[804]=64363;e[805]=64364;e[2424]=7821;e[2425]=7822;e[2426]=7823;e[2427]=7824;e[2428]=7825;e[2429]=7826;e[2430]=7827;e[2433]=7682;e[2678]=8045;e[2679]=8046;e[2830]=1552;e[2838]=686;e[2840]=751;e[2842]=753;e[2843]=754;e[2844]=755;e[2846]=757;e[2856]=767;e[2857]=848;e[2858]=849;e[2862]=853;e[2863]=854;e[2864]=855;e[2865]=861;e[2866]=862;e[2906]=7460;e[2908]=7462;e[2909]=7463;e[2910]=7464;e[2912]=7466;e[2913]=7467;e[2914]=7468;e[2916]=7470;e[2917]=7471;e[2918]=7472;e[2920]=7474;e[2921]=7475;e[2922]=7476;e[2924]=7478;e[2925]=7479;e[2926]=7480;e[2928]=7482;e[2929]=7483;e[2930]=7484;e[2932]=7486;e[2933]=7487;e[2934]=7488;e[2936]=7490;e[2937]=7491;e[2938]=7492;e[2940]=7494;e[2941]=7495;e[2942]=7496;e[2944]=7498;e[2946]=7500;e[2948]=7502;e[2950]=7504;e[2951]=7505;e[2952]=7506;e[2954]=7508;e[2955]=7509;e[2956]=7510;e[2958]=7512;e[2959]=7513;e[2960]=7514;e[2962]=7516;e[2963]=7517;e[2964]=7518;e[2966]=7520;e[2967]=7521;e[2968]=7522;e[2970]=7524;e[2971]=7525;e[2972]=7526;e[2974]=7528;e[2975]=7529;e[2976]=7530;e[2978]=1537;e[2979]=1538;e[2980]=1539;e[2982]=1549;e[2983]=1551;e[2984]=1552;e[2986]=1554;e[2987]=1555;e[2988]=1556;e[2990]=1623;e[2991]=1624;e[2995]=1775;e[2999]=1791;e[3002]=64290;e[3003]=64291;e[3004]=64292;e[3006]=64294;e[3007]=64295;e[3008]=64296;e[3011]=1900;e[3014]=8223;e[3015]=8244;e[3017]=7532;e[3018]=7533;e[3019]=7534;e[3075]=7590;e[3076]=7591;e[3079]=7594;e[3080]=7595;e[3083]=7598;e[3084]=7599;e[3087]=7602;e[3088]=7603;e[3091]=7606;e[3092]=7607;e[3095]=7610;e[3096]=7611;e[3099]=7614;e[3100]=7615;e[3103]=7618;e[3104]=7619;e[3107]=8337;e[3108]=8338;e[3116]=1884;e[3119]=1885;e[3120]=1885;e[3123]=1886;e[3124]=1886;e[3127]=1887;e[3128]=1887;e[3131]=1888;e[3132]=1888;e[3135]=1889;e[3136]=1889;e[3139]=1890;e[3140]=1890;e[3143]=1891;e[3144]=1891;e[3147]=1892;e[3148]=1892;e[3153]=580;e[3154]=581;e[3157]=584;e[3158]=585;e[3161]=588;e[3162]=589;e[3165]=891;e[3166]=892;e[3169]=1274;e[3170]=1275;e[3173]=1278;e[3174]=1279;e[3181]=7622;e[3182]=7623;e[3282]=11799;e[3316]=578;e[3379]=42785;e[3393]=1159;e[3416]=8377}));t.getGlyphMapForStandardFonts=h;const u=(0,r.getLookupTableFactory)((function(e){e[227]=322;e[264]=261;e[291]=346}));t.getSupplementalGlyphMapForArialBlack=u;const d=(0,r.getLookupTableFactory)((function(e){e[1]=32;e[4]=65;e[5]=192;e[6]=193;e[9]=196;e[17]=66;e[18]=67;e[21]=268;e[24]=68;e[28]=69;e[29]=200;e[30]=201;e[32]=282;e[38]=70;e[39]=71;e[44]=72;e[47]=73;e[48]=204;e[49]=205;e[58]=74;e[60]=75;e[62]=76;e[68]=77;e[69]=78;e[75]=79;e[76]=210;e[80]=214;e[87]=80;e[89]=81;e[90]=82;e[92]=344;e[94]=83;e[97]=352;e[100]=84;e[104]=85;e[109]=220;e[115]=86;e[116]=87;e[121]=88;e[122]=89;e[124]=221;e[127]=90;e[129]=381;e[258]=97;e[259]=224;e[260]=225;e[263]=228;e[268]=261;e[271]=98;e[272]=99;e[273]=263;e[275]=269;e[282]=100;e[286]=101;e[287]=232;e[288]=233;e[290]=283;e[295]=281;e[296]=102;e[336]=103;e[346]=104;e[349]=105;e[350]=236;e[351]=237;e[361]=106;e[364]=107;e[367]=108;e[371]=322;e[373]=109;e[374]=110;e[381]=111;e[382]=242;e[383]=243;e[386]=246;e[393]=112;e[395]=113;e[396]=114;e[398]=345;e[400]=115;e[401]=347;e[403]=353;e[410]=116;e[437]=117;e[442]=252;e[448]=118;e[449]=119;e[454]=120;e[455]=121;e[457]=253;e[460]=122;e[462]=382;e[463]=380;e[853]=44;e[855]=58;e[856]=46;e[876]=47;e[878]=45;e[882]=45;e[894]=40;e[895]=41;e[896]=91;e[897]=93;e[923]=64;e[1004]=48;e[1005]=49;e[1006]=50;e[1007]=51;e[1008]=52;e[1009]=53;e[1010]=54;e[1011]=55;e[1012]=56;e[1013]=57;e[1081]=37;e[1085]=43;e[1086]=45}));t.getSupplementalGlyphMapForCalibri=d},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ToUnicodeMap=t.IdentityToUnicodeMap=void 0;var r=a(2);t.ToUnicodeMap=class ToUnicodeMap{constructor(e=[]){this._map=e}get length(){return this._map.length}forEach(e){for(const t in this._map)e(t,this._map[t].charCodeAt(0))}has(e){return void 0!==this._map[e]}get(e){return this._map[e]}charCodeOf(e){const t=this._map;if(t.length<=65536)return t.indexOf(e);for(const a in t)if(t[a]===e)return 0|a;return-1}amend(e){for(const t in e)this._map[t]=e[t]}};t.IdentityToUnicodeMap=class IdentityToUnicodeMap{constructor(e,t){this.firstChar=e;this.lastChar=t}get length(){return this.lastChar+1-this.firstChar}forEach(e){for(let t=this.firstChar,a=this.lastChar;t<=a;t++)e(t,t)}has(e){return this.firstChar<=e&&e<=this.lastChar}get(e){if(this.firstChar<=e&&e<=this.lastChar)return String.fromCharCode(e)}charCodeOf(e){return Number.isInteger(e)&&e>=this.firstChar&&e<=this.lastChar?e:-1}amend(e){(0,r.unreachable)("Should not call amend()")}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CFFFont=void 0;var r=a(35),n=a(38),i=a(2);t.CFFFont=class CFFFont{constructor(e,t){this.properties=t;const a=new r.CFFParser(e,t,n.SEAC_ANALYSIS_ENABLED);this.cff=a.parse();this.cff.duplicateFirstGlyph();const s=new r.CFFCompiler(this.cff);this.seacs=this.cff.seacs;try{this.data=s.compile()}catch{(0,i.warn)("Failed to compile font "+t.loadedName);this.data=e}this._createBuiltInEncoding()}get numGlyphs(){return this.cff.charStrings.count}getCharset(){return this.cff.charset.charset}getGlyphMapping(){const e=this.cff,t=this.properties,{cidToGidMap:a,cMap:r}=t,i=e.charset.charset;let s,o;if(t.composite){let t,n;if(a?.length>0){t=Object.create(null);for(let e=0,r=a.length;e=0){const r=a[t];r&&(n[e]=r)}}n.length>0&&(this.properties.builtInEncoding=n)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FontRendererFactory=void 0;var r=a(2),n=a(35),i=a(39),s=a(37),o=a(8);function getUint32(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}function getUint16(e,t){return e[t]<<8|e[t+1]}function getInt16(e,t){return(e[t]<<24|e[t+1]<<16)>>16}function getInt8(e,t){return e[t]<<24>>24}function getFloat214(e,t){return getInt16(e,t)/16384}function getSubroutineBias(e){const t=e.length;let a=32768;t<1240?a=107:t<33900&&(a=1131);return a}function parseCmap(e,t,a){const n=1===getUint16(e,t+2)?getUint32(e,t+8):getUint32(e,t+16),i=getUint16(e,t+n);let s,o,c;if(4===i){getUint16(e,t+n+2);const a=getUint16(e,t+n+6)>>1;o=t+n+14;s=[];for(c=0;c>1;a0;)h.push({flags:i})}for(a=0;a>1;S=!0;break;case 4:c+=i.pop();moveTo(o,c);S=!0;break;case 5:for(;i.length>0;){o+=i.shift();c+=i.shift();lineTo(o,c)}break;case 6:for(;i.length>0;){o+=i.shift();lineTo(o,c);if(0===i.length)break;c+=i.shift();lineTo(o,c)}break;case 7:for(;i.length>0;){c+=i.shift();lineTo(o,c);if(0===i.length)break;o+=i.shift();lineTo(o,c)}break;case 8:for(;i.length>0;){u=o+i.shift();f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+i.shift();bezierCurveTo(u,f,d,g,o,c)}break;case 10:y=i.pop();w=null;if(a.isCFFCIDFont){const e=a.fdSelect.getFDIndex(n);if(e>=0&&eMath.abs(c-t)?o+=i.shift():c+=i.shift();bezierCurveTo(u,f,d,g,o,c);break;default:throw new r.FormatError(`unknown operator: 12 ${x}`)}break;case 14:if(i.length>=4){const e=i.pop(),r=i.pop();c=i.pop();o=i.pop();t.push({cmd:"save"},{cmd:"translate",args:[o,c]});let n=lookupCmap(a.cmap,String.fromCharCode(a.glyphNameMap[s.StandardEncoding[e]]));compileCharString(a.glyphs[n.glyphId],t,a,n.glyphId);t.push({cmd:"restore"});n=lookupCmap(a.cmap,String.fromCharCode(a.glyphNameMap[s.StandardEncoding[r]]));compileCharString(a.glyphs[n.glyphId],t,a,n.glyphId)}return;case 19:case 20:l+=i.length>>1;h+=l+7>>3;S=!0;break;case 21:c+=i.pop();o+=i.pop();moveTo(o,c);S=!0;break;case 22:o+=i.pop();moveTo(o,c);S=!0;break;case 24:for(;i.length>2;){u=o+i.shift();f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+i.shift();bezierCurveTo(u,f,d,g,o,c)}o+=i.shift();c+=i.shift();lineTo(o,c);break;case 25:for(;i.length>6;){o+=i.shift();c+=i.shift();lineTo(o,c)}u=o+i.shift();f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+i.shift();bezierCurveTo(u,f,d,g,o,c);break;case 26:i.length%2&&(o+=i.shift());for(;i.length>0;){u=o;f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d;c=g+i.shift();bezierCurveTo(u,f,d,g,o,c)}break;case 27:i.length%2&&(c+=i.shift());for(;i.length>0;){u=o+i.shift();f=c;d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g;bezierCurveTo(u,f,d,g,o,c)}break;case 28:i.push((e[h]<<24|e[h+1]<<16)>>16);h+=2;break;case 29:y=i.pop()+a.gsubrsBias;w=a.gsubrs[y];w&&parse(w);break;case 30:for(;i.length>0;){u=o;f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+(1===i.length?i.shift():0);bezierCurveTo(u,f,d,g,o,c);if(0===i.length)break;u=o+i.shift();f=c;d=u+i.shift();g=f+i.shift();c=g+i.shift();o=d+(1===i.length?i.shift():0);bezierCurveTo(u,f,d,g,o,c)}break;case 31:for(;i.length>0;){u=o+i.shift();f=c;d=u+i.shift();g=f+i.shift();c=g+i.shift();o=d+(1===i.length?i.shift():0);bezierCurveTo(u,f,d,g,o,c);if(0===i.length)break;u=o;f=c+i.shift();d=u+i.shift();g=f+i.shift();o=d+i.shift();c=g+(1===i.length?i.shift():0);bezierCurveTo(u,f,d,g,o,c)}break;default:if(x<32)throw new r.FormatError(`unknown operator: ${x}`);if(x<247)i.push(x-139);else if(x<251)i.push(256*(x-247)+e[h++]+108);else if(x<255)i.push(256*-(x-251)-e[h++]-108);else{i.push((e[h]<<24|e[h+1]<<16|e[h+2]<<8|e[h+3])/65536);h+=4}}S&&(i.length=0)}}(e)}const c=[];class CompiledFont{constructor(e){this.constructor===CompiledFont&&(0,r.unreachable)("Cannot initialize CompiledFont.");this.fontMatrix=e;this.compiledGlyphs=Object.create(null);this.compiledCharCodeToGlyphId=Object.create(null)}getPathJs(e){const{charCode:t,glyphId:a}=lookupCmap(this.cmap,e);let r=this.compiledGlyphs[a];if(!r)try{r=this.compileGlyph(this.glyphs[a],a);this.compiledGlyphs[a]=r}catch(e){this.compiledGlyphs[a]=c;void 0===this.compiledCharCodeToGlyphId[t]&&(this.compiledCharCodeToGlyphId[t]=a);throw e}void 0===this.compiledCharCodeToGlyphId[t]&&(this.compiledCharCodeToGlyphId[t]=a);return r}compileGlyph(e,t){if(!e||0===e.length||14===e[0])return c;let a=this.fontMatrix;if(this.isCFFCIDFont){const e=this.fdSelect.getFDIndex(t);if(e>=0&&e2*getUint16(e,t)}const i=[];let s=n(t,0);for(let a=r;a{Object.defineProperty(t,"__esModule",{value:!0});t.getMetrics=t.getFontBasicMetrics=void 0;var r=a(3);const n=(0,r.getLookupTableFactory)((function(e){e.Courier=600;e["Courier-Bold"]=600;e["Courier-BoldOblique"]=600;e["Courier-Oblique"]=600;e.Helvetica=(0,r.getLookupTableFactory)((function(e){e.space=278;e.exclam=278;e.quotedbl=355;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=667;e.quoteright=222;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=278;e.semicolon=278;e.less=584;e.equal=584;e.greater=584;e.question=556;e.at=1015;e.A=667;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=500;e.K=667;e.L=556;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=278;e.backslash=278;e.bracketright=278;e.asciicircum=469;e.underscore=556;e.quoteleft=222;e.a=556;e.b=556;e.c=500;e.d=556;e.e=556;e.f=278;e.g=556;e.h=556;e.i=222;e.j=222;e.k=500;e.l=222;e.m=833;e.n=556;e.o=556;e.p=556;e.q=556;e.r=333;e.s=500;e.t=278;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=500;e.braceleft=334;e.bar=260;e.braceright=334;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=191;e.quotedblleft=333;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=537;e.bullet=350;e.quotesinglbase=222;e.quotedblbase=333;e.quotedblright=333;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=556;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=222;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=556;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=667;e.aacute=556;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=500;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=500;e.aring=556;e.Ncommaaccent=722;e.lacute=222;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=500;e.scedilla=500;e.iacute=278;e.lozenge=471;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=556;e.Amacron=667;e.rcaron=333;e.ccedilla=500;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=643;e.Umacron=722;e.uring=556;e.threesuperior=333;e.Ograve=778;e.Agrave=667;e.Abreve=667;e.multiply=584;e.uacute=556;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=500;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=260;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=333;e.omacron=556;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=222;e.tcaron=317;e.eogonek=556;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=556;e.zacute=500;e.iogonek=222;e.Oacute=778;e.oacute=556;e.amacron=556;e.sacute=500;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=333;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=556;e.Eogonek=667;e.dcroat=556;e.threequarters=834;e.Scedilla=667;e.lcaron=299;e.Kcommaaccent=667;e.Lacute=556;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=556;e.onehalf=834;e.lessequal=549;e.ocircumflex=556;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=556;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=556;e.Ccaron=722;e.ugrave=556;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=556;e.Rcommaaccent=722;e.Lcommaaccent=556;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=500;e.minus=584;e.Icircumflex=278;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=584;e.odieresis=556;e.udieresis=556;e.notequal=549;e.gcommaaccent=556;e.eth=556;e.zcaron=500;e.ncommaaccent=556;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-Bold"]=(0,r.getLookupTableFactory)((function(e){e.space=278;e.exclam=333;e.quotedbl=474;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=722;e.quoteright=278;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=333;e.semicolon=333;e.less=584;e.equal=584;e.greater=584;e.question=611;e.at=975;e.A=722;e.B=722;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=556;e.K=722;e.L=611;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=584;e.underscore=556;e.quoteleft=278;e.a=556;e.b=611;e.c=556;e.d=611;e.e=556;e.f=333;e.g=611;e.h=611;e.i=278;e.j=278;e.k=556;e.l=278;e.m=889;e.n=611;e.o=611;e.p=611;e.q=611;e.r=389;e.s=556;e.t=333;e.u=611;e.v=556;e.w=778;e.x=556;e.y=556;e.z=500;e.braceleft=389;e.bar=280;e.braceright=389;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=238;e.quotedblleft=500;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=611;e.fl=611;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=556;e.bullet=350;e.quotesinglbase=278;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=611;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=278;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=611;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=722;e.aacute=556;e.Ucircumflex=722;e.yacute=556;e.scommaaccent=556;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=611;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=556;e.aring=556;e.Ncommaaccent=722;e.lacute=278;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=556;e.scedilla=556;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=611;e.acircumflex=556;e.Amacron=722;e.rcaron=389;e.ccedilla=556;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=743;e.Umacron=722;e.uring=611;e.threesuperior=333;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=584;e.uacute=611;e.Tcaron=611;e.partialdiff=494;e.ydieresis=556;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=556;e.nacute=611;e.umacron=611;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=280;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=611;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=389;e.eogonek=556;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=556;e.zacute=500;e.iogonek=278;e.Oacute=778;e.oacute=611;e.amacron=556;e.sacute=556;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=611;e.twosuperior=333;e.Odieresis=778;e.mu=611;e.igrave=278;e.ohungarumlaut=611;e.Eogonek=667;e.dcroat=611;e.threequarters=834;e.Scedilla=667;e.lcaron=400;e.Kcommaaccent=722;e.Lacute=611;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=611;e.onehalf=834;e.lessequal=549;e.ocircumflex=611;e.ntilde=611;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=611;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=611;e.Ccaron=722;e.ugrave=611;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=611;e.Rcommaaccent=722;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=556;e.minus=584;e.Icircumflex=278;e.ncaron=611;e.tcommaaccent=333;e.logicalnot=584;e.odieresis=611;e.udieresis=611;e.notequal=549;e.gcommaaccent=611;e.eth=611;e.zcaron=500;e.ncommaaccent=611;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-BoldOblique"]=(0,r.getLookupTableFactory)((function(e){e.space=278;e.exclam=333;e.quotedbl=474;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=722;e.quoteright=278;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=333;e.semicolon=333;e.less=584;e.equal=584;e.greater=584;e.question=611;e.at=975;e.A=722;e.B=722;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=556;e.K=722;e.L=611;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=584;e.underscore=556;e.quoteleft=278;e.a=556;e.b=611;e.c=556;e.d=611;e.e=556;e.f=333;e.g=611;e.h=611;e.i=278;e.j=278;e.k=556;e.l=278;e.m=889;e.n=611;e.o=611;e.p=611;e.q=611;e.r=389;e.s=556;e.t=333;e.u=611;e.v=556;e.w=778;e.x=556;e.y=556;e.z=500;e.braceleft=389;e.bar=280;e.braceright=389;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=238;e.quotedblleft=500;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=611;e.fl=611;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=556;e.bullet=350;e.quotesinglbase=278;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=611;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=278;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=611;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=722;e.aacute=556;e.Ucircumflex=722;e.yacute=556;e.scommaaccent=556;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=611;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=556;e.aring=556;e.Ncommaaccent=722;e.lacute=278;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=556;e.scedilla=556;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=611;e.acircumflex=556;e.Amacron=722;e.rcaron=389;e.ccedilla=556;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=743;e.Umacron=722;e.uring=611;e.threesuperior=333;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=584;e.uacute=611;e.Tcaron=611;e.partialdiff=494;e.ydieresis=556;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=556;e.nacute=611;e.umacron=611;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=280;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=611;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=389;e.eogonek=556;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=556;e.zacute=500;e.iogonek=278;e.Oacute=778;e.oacute=611;e.amacron=556;e.sacute=556;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=611;e.twosuperior=333;e.Odieresis=778;e.mu=611;e.igrave=278;e.ohungarumlaut=611;e.Eogonek=667;e.dcroat=611;e.threequarters=834;e.Scedilla=667;e.lcaron=400;e.Kcommaaccent=722;e.Lacute=611;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=611;e.onehalf=834;e.lessequal=549;e.ocircumflex=611;e.ntilde=611;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=611;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=611;e.Ccaron=722;e.ugrave=611;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=611;e.Rcommaaccent=722;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=556;e.minus=584;e.Icircumflex=278;e.ncaron=611;e.tcommaaccent=333;e.logicalnot=584;e.odieresis=611;e.udieresis=611;e.notequal=549;e.gcommaaccent=611;e.eth=611;e.zcaron=500;e.ncommaaccent=611;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-Oblique"]=(0,r.getLookupTableFactory)((function(e){e.space=278;e.exclam=278;e.quotedbl=355;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=667;e.quoteright=222;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=278;e.semicolon=278;e.less=584;e.equal=584;e.greater=584;e.question=556;e.at=1015;e.A=667;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=500;e.K=667;e.L=556;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=278;e.backslash=278;e.bracketright=278;e.asciicircum=469;e.underscore=556;e.quoteleft=222;e.a=556;e.b=556;e.c=500;e.d=556;e.e=556;e.f=278;e.g=556;e.h=556;e.i=222;e.j=222;e.k=500;e.l=222;e.m=833;e.n=556;e.o=556;e.p=556;e.q=556;e.r=333;e.s=500;e.t=278;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=500;e.braceleft=334;e.bar=260;e.braceright=334;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=191;e.quotedblleft=333;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=537;e.bullet=350;e.quotesinglbase=222;e.quotedblbase=333;e.quotedblright=333;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=556;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=222;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=556;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=667;e.aacute=556;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=500;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=500;e.aring=556;e.Ncommaaccent=722;e.lacute=222;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=500;e.scedilla=500;e.iacute=278;e.lozenge=471;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=556;e.Amacron=667;e.rcaron=333;e.ccedilla=500;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=643;e.Umacron=722;e.uring=556;e.threesuperior=333;e.Ograve=778;e.Agrave=667;e.Abreve=667;e.multiply=584;e.uacute=556;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=500;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=260;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=333;e.omacron=556;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=222;e.tcaron=317;e.eogonek=556;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=556;e.zacute=500;e.iogonek=222;e.Oacute=778;e.oacute=556;e.amacron=556;e.sacute=500;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=333;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=556;e.Eogonek=667;e.dcroat=556;e.threequarters=834;e.Scedilla=667;e.lcaron=299;e.Kcommaaccent=667;e.Lacute=556;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=556;e.onehalf=834;e.lessequal=549;e.ocircumflex=556;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=556;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=556;e.Ccaron=722;e.ugrave=556;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=556;e.Rcommaaccent=722;e.Lcommaaccent=556;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=500;e.minus=584;e.Icircumflex=278;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=584;e.odieresis=556;e.udieresis=556;e.notequal=549;e.gcommaaccent=556;e.eth=556;e.zcaron=500;e.ncommaaccent=556;e.onesuperior=333;e.imacron=278;e.Euro=556}));e.Symbol=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.universal=713;e.numbersign=500;e.existential=549;e.percent=833;e.ampersand=778;e.suchthat=439;e.parenleft=333;e.parenright=333;e.asteriskmath=500;e.plus=549;e.comma=250;e.minus=549;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=278;e.semicolon=278;e.less=549;e.equal=549;e.greater=549;e.question=444;e.congruent=549;e.Alpha=722;e.Beta=667;e.Chi=722;e.Delta=612;e.Epsilon=611;e.Phi=763;e.Gamma=603;e.Eta=722;e.Iota=333;e.theta1=631;e.Kappa=722;e.Lambda=686;e.Mu=889;e.Nu=722;e.Omicron=722;e.Pi=768;e.Theta=741;e.Rho=556;e.Sigma=592;e.Tau=611;e.Upsilon=690;e.sigma1=439;e.Omega=768;e.Xi=645;e.Psi=795;e.Zeta=611;e.bracketleft=333;e.therefore=863;e.bracketright=333;e.perpendicular=658;e.underscore=500;e.radicalex=500;e.alpha=631;e.beta=549;e.chi=549;e.delta=494;e.epsilon=439;e.phi=521;e.gamma=411;e.eta=603;e.iota=329;e.phi1=603;e.kappa=549;e.lambda=549;e.mu=576;e.nu=521;e.omicron=549;e.pi=549;e.theta=521;e.rho=549;e.sigma=603;e.tau=439;e.upsilon=576;e.omega1=713;e.omega=686;e.xi=493;e.psi=686;e.zeta=494;e.braceleft=480;e.bar=200;e.braceright=480;e.similar=549;e.Euro=750;e.Upsilon1=620;e.minute=247;e.lessequal=549;e.fraction=167;e.infinity=713;e.florin=500;e.club=753;e.diamond=753;e.heart=753;e.spade=753;e.arrowboth=1042;e.arrowleft=987;e.arrowup=603;e.arrowright=987;e.arrowdown=603;e.degree=400;e.plusminus=549;e.second=411;e.greaterequal=549;e.multiply=549;e.proportional=713;e.partialdiff=494;e.bullet=460;e.divide=549;e.notequal=549;e.equivalence=549;e.approxequal=549;e.ellipsis=1e3;e.arrowvertex=603;e.arrowhorizex=1e3;e.carriagereturn=658;e.aleph=823;e.Ifraktur=686;e.Rfraktur=795;e.weierstrass=987;e.circlemultiply=768;e.circleplus=768;e.emptyset=823;e.intersection=768;e.union=768;e.propersuperset=713;e.reflexsuperset=713;e.notsubset=713;e.propersubset=713;e.reflexsubset=713;e.element=713;e.notelement=713;e.angle=768;e.gradient=713;e.registerserif=790;e.copyrightserif=790;e.trademarkserif=890;e.product=823;e.radical=549;e.dotmath=250;e.logicalnot=713;e.logicaland=603;e.logicalor=603;e.arrowdblboth=1042;e.arrowdblleft=987;e.arrowdblup=603;e.arrowdblright=987;e.arrowdbldown=603;e.lozenge=494;e.angleleft=329;e.registersans=790;e.copyrightsans=790;e.trademarksans=786;e.summation=713;e.parenlefttp=384;e.parenleftex=384;e.parenleftbt=384;e.bracketlefttp=384;e.bracketleftex=384;e.bracketleftbt=384;e.bracelefttp=494;e.braceleftmid=494;e.braceleftbt=494;e.braceex=494;e.angleright=329;e.integral=274;e.integraltp=686;e.integralex=686;e.integralbt=686;e.parenrighttp=384;e.parenrightex=384;e.parenrightbt=384;e.bracketrighttp=384;e.bracketrightex=384;e.bracketrightbt=384;e.bracerighttp=494;e.bracerightmid=494;e.bracerightbt=494;e.apple=790}));e["Times-Roman"]=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.quotedbl=408;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=564;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=278;e.semicolon=278;e.less=564;e.equal=564;e.greater=564;e.question=444;e.at=921;e.A=722;e.B=667;e.C=667;e.D=722;e.E=611;e.F=556;e.G=722;e.H=722;e.I=333;e.J=389;e.K=722;e.L=611;e.M=889;e.N=722;e.O=722;e.P=556;e.Q=722;e.R=667;e.S=556;e.T=611;e.U=722;e.V=722;e.W=944;e.X=722;e.Y=722;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=469;e.underscore=500;e.quoteleft=333;e.a=444;e.b=500;e.c=444;e.d=500;e.e=444;e.f=333;e.g=500;e.h=500;e.i=278;e.j=278;e.k=500;e.l=278;e.m=778;e.n=500;e.o=500;e.p=500;e.q=500;e.r=333;e.s=389;e.t=278;e.u=500;e.v=500;e.w=722;e.x=500;e.y=500;e.z=444;e.braceleft=480;e.bar=200;e.braceright=480;e.asciitilde=541;e.exclamdown=333;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=180;e.quotedblleft=444;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=453;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=444;e.quotedblright=444;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=444;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=889;e.ordfeminine=276;e.Lslash=611;e.Oslash=722;e.OE=889;e.ordmasculine=310;e.ae=667;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=500;e.Idieresis=333;e.eacute=444;e.abreve=444;e.uhungarumlaut=500;e.ecaron=444;e.Ydieresis=722;e.divide=564;e.Yacute=722;e.Acircumflex=722;e.aacute=444;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=444;e.Uacute=722;e.uogonek=500;e.Edieresis=611;e.Dcroat=722;e.commaaccent=250;e.copyright=760;e.Emacron=611;e.ccaron=444;e.aring=444;e.Ncommaaccent=722;e.lacute=278;e.agrave=444;e.Tcommaaccent=611;e.Cacute=667;e.atilde=444;e.Edotaccent=611;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=471;e.Rcaron=667;e.Gcommaaccent=722;e.ucircumflex=500;e.acircumflex=444;e.Amacron=722;e.rcaron=333;e.ccedilla=444;e.Zdotaccent=611;e.Thorn=556;e.Omacron=722;e.Racute=667;e.Sacute=556;e.dcaron=588;e.Umacron=722;e.uring=500;e.threesuperior=300;e.Ograve=722;e.Agrave=722;e.Abreve=722;e.multiply=564;e.uacute=500;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=611;e.adieresis=444;e.edieresis=444;e.cacute=444;e.nacute=500;e.umacron=500;e.Ncaron=722;e.Iacute=333;e.plusminus=564;e.brokenbar=200;e.registered=760;e.Gbreve=722;e.Idotaccent=333;e.summation=600;e.Egrave=611;e.racute=333;e.omacron=500;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=326;e.eogonek=444;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=444;e.zacute=444;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=444;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=500;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=611;e.dcroat=500;e.threequarters=750;e.Scedilla=556;e.lcaron=344;e.Kcommaaccent=722;e.Lacute=611;e.trademark=980;e.edotaccent=444;e.Igrave=333;e.Imacron=333;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=500;e.Uhungarumlaut=722;e.Eacute=611;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=500;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=667;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=722;e.zdotaccent=444;e.Ecaron=611;e.Iogonek=333;e.kcommaaccent=500;e.minus=564;e.Icircumflex=333;e.ncaron=500;e.tcommaaccent=278;e.logicalnot=564;e.odieresis=500;e.udieresis=500;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=444;e.ncommaaccent=500;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-Bold"]=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.quotedbl=555;e.numbersign=500;e.dollar=500;e.percent=1e3;e.ampersand=833;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=570;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=570;e.equal=570;e.greater=570;e.question=500;e.at=930;e.A=722;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=778;e.I=389;e.J=500;e.K=778;e.L=667;e.M=944;e.N=722;e.O=778;e.P=611;e.Q=778;e.R=722;e.S=556;e.T=667;e.U=722;e.V=722;e.W=1e3;e.X=722;e.Y=722;e.Z=667;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=581;e.underscore=500;e.quoteleft=333;e.a=500;e.b=556;e.c=444;e.d=556;e.e=444;e.f=333;e.g=500;e.h=556;e.i=278;e.j=333;e.k=556;e.l=278;e.m=833;e.n=556;e.o=500;e.p=556;e.q=556;e.r=444;e.s=389;e.t=333;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=444;e.braceleft=394;e.bar=220;e.braceright=394;e.asciitilde=520;e.exclamdown=333;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=278;e.quotedblleft=500;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=540;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=300;e.Lslash=667;e.Oslash=778;e.OE=1e3;e.ordmasculine=330;e.ae=722;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=556;e.Idieresis=389;e.eacute=444;e.abreve=500;e.uhungarumlaut=556;e.ecaron=444;e.Ydieresis=722;e.divide=570;e.Yacute=722;e.Acircumflex=722;e.aacute=500;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=747;e.Emacron=667;e.ccaron=444;e.aring=500;e.Ncommaaccent=722;e.lacute=278;e.agrave=500;e.Tcommaaccent=667;e.Cacute=722;e.atilde=500;e.Edotaccent=667;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=500;e.Amacron=722;e.rcaron=444;e.ccedilla=444;e.Zdotaccent=667;e.Thorn=611;e.Omacron=778;e.Racute=722;e.Sacute=556;e.dcaron=672;e.Umacron=722;e.uring=556;e.threesuperior=300;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=570;e.uacute=556;e.Tcaron=667;e.partialdiff=494;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=389;e.plusminus=570;e.brokenbar=220;e.registered=747;e.Gbreve=778;e.Idotaccent=389;e.summation=600;e.Egrave=667;e.racute=444;e.omacron=500;e.Zacute=667;e.Zcaron=667;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=416;e.eogonek=444;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=444;e.zacute=444;e.iogonek=278;e.Oacute=778;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=300;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=667;e.dcroat=556;e.threequarters=750;e.Scedilla=556;e.lcaron=394;e.Kcommaaccent=778;e.Lacute=667;e.trademark=1e3;e.edotaccent=444;e.Igrave=389;e.Imacron=389;e.Lcaron=667;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=778;e.degree=400;e.ograve=500;e.Ccaron=722;e.ugrave=556;e.radical=549;e.Dcaron=722;e.rcommaaccent=444;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=722;e.Lcommaaccent=667;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=444;e.Ecaron=667;e.Iogonek=389;e.kcommaaccent=556;e.minus=570;e.Icircumflex=389;e.ncaron=556;e.tcommaaccent=333;e.logicalnot=570;e.odieresis=500;e.udieresis=556;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=444;e.ncommaaccent=556;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-BoldItalic"]=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=389;e.quotedbl=555;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=570;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=570;e.equal=570;e.greater=570;e.question=500;e.at=832;e.A=667;e.B=667;e.C=667;e.D=722;e.E=667;e.F=667;e.G=722;e.H=778;e.I=389;e.J=500;e.K=667;e.L=611;e.M=889;e.N=722;e.O=722;e.P=611;e.Q=722;e.R=667;e.S=556;e.T=611;e.U=722;e.V=667;e.W=889;e.X=667;e.Y=611;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=570;e.underscore=500;e.quoteleft=333;e.a=500;e.b=500;e.c=444;e.d=500;e.e=444;e.f=333;e.g=500;e.h=556;e.i=278;e.j=278;e.k=500;e.l=278;e.m=778;e.n=556;e.o=500;e.p=500;e.q=500;e.r=389;e.s=389;e.t=278;e.u=556;e.v=444;e.w=667;e.x=500;e.y=444;e.z=389;e.braceleft=348;e.bar=220;e.braceright=348;e.asciitilde=570;e.exclamdown=389;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=278;e.quotedblleft=500;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=500;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=944;e.ordfeminine=266;e.Lslash=611;e.Oslash=722;e.OE=944;e.ordmasculine=300;e.ae=722;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=500;e.Idieresis=389;e.eacute=444;e.abreve=500;e.uhungarumlaut=556;e.ecaron=444;e.Ydieresis=611;e.divide=570;e.Yacute=611;e.Acircumflex=667;e.aacute=500;e.Ucircumflex=722;e.yacute=444;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=747;e.Emacron=667;e.ccaron=444;e.aring=500;e.Ncommaaccent=722;e.lacute=278;e.agrave=500;e.Tcommaaccent=611;e.Cacute=667;e.atilde=500;e.Edotaccent=667;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=494;e.Rcaron=667;e.Gcommaaccent=722;e.ucircumflex=556;e.acircumflex=500;e.Amacron=667;e.rcaron=389;e.ccedilla=444;e.Zdotaccent=611;e.Thorn=611;e.Omacron=722;e.Racute=667;e.Sacute=556;e.dcaron=608;e.Umacron=722;e.uring=556;e.threesuperior=300;e.Ograve=722;e.Agrave=667;e.Abreve=667;e.multiply=570;e.uacute=556;e.Tcaron=611;e.partialdiff=494;e.ydieresis=444;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=389;e.plusminus=570;e.brokenbar=220;e.registered=747;e.Gbreve=722;e.Idotaccent=389;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=500;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=366;e.eogonek=444;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=444;e.zacute=389;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=576;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=667;e.dcroat=500;e.threequarters=750;e.Scedilla=556;e.lcaron=382;e.Kcommaaccent=667;e.Lacute=611;e.trademark=1e3;e.edotaccent=444;e.Igrave=389;e.Imacron=389;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=556;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=667;e.Lcommaaccent=611;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=722;e.zdotaccent=389;e.Ecaron=667;e.Iogonek=389;e.kcommaaccent=500;e.minus=606;e.Icircumflex=389;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=606;e.odieresis=500;e.udieresis=556;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=389;e.ncommaaccent=556;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-Italic"]=(0,r.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.quotedbl=420;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=675;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=675;e.equal=675;e.greater=675;e.question=500;e.at=920;e.A=611;e.B=611;e.C=667;e.D=722;e.E=611;e.F=611;e.G=722;e.H=722;e.I=333;e.J=444;e.K=667;e.L=556;e.M=833;e.N=667;e.O=722;e.P=611;e.Q=722;e.R=611;e.S=500;e.T=556;e.U=722;e.V=611;e.W=833;e.X=611;e.Y=556;e.Z=556;e.bracketleft=389;e.backslash=278;e.bracketright=389;e.asciicircum=422;e.underscore=500;e.quoteleft=333;e.a=500;e.b=500;e.c=444;e.d=500;e.e=444;e.f=278;e.g=500;e.h=500;e.i=278;e.j=278;e.k=444;e.l=278;e.m=722;e.n=500;e.o=500;e.p=500;e.q=500;e.r=389;e.s=389;e.t=278;e.u=500;e.v=444;e.w=667;e.x=444;e.y=444;e.z=389;e.braceleft=400;e.bar=275;e.braceright=400;e.asciitilde=541;e.exclamdown=389;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=214;e.quotedblleft=556;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=523;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=556;e.quotedblright=556;e.guillemotright=500;e.ellipsis=889;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=889;e.AE=889;e.ordfeminine=276;e.Lslash=556;e.Oslash=722;e.OE=944;e.ordmasculine=310;e.ae=667;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=667;e.germandbls=500;e.Idieresis=333;e.eacute=444;e.abreve=500;e.uhungarumlaut=500;e.ecaron=444;e.Ydieresis=556;e.divide=675;e.Yacute=556;e.Acircumflex=611;e.aacute=500;e.Ucircumflex=722;e.yacute=444;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=500;e.Edieresis=611;e.Dcroat=722;e.commaaccent=250;e.copyright=760;e.Emacron=611;e.ccaron=444;e.aring=500;e.Ncommaaccent=667;e.lacute=278;e.agrave=500;e.Tcommaaccent=556;e.Cacute=667;e.atilde=500;e.Edotaccent=611;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=471;e.Rcaron=611;e.Gcommaaccent=722;e.ucircumflex=500;e.acircumflex=500;e.Amacron=611;e.rcaron=389;e.ccedilla=444;e.Zdotaccent=556;e.Thorn=611;e.Omacron=722;e.Racute=611;e.Sacute=500;e.dcaron=544;e.Umacron=722;e.uring=500;e.threesuperior=300;e.Ograve=722;e.Agrave=611;e.Abreve=611;e.multiply=675;e.uacute=500;e.Tcaron=556;e.partialdiff=476;e.ydieresis=444;e.Nacute=667;e.icircumflex=278;e.Ecircumflex=611;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=500;e.umacron=500;e.Ncaron=667;e.Iacute=333;e.plusminus=675;e.brokenbar=275;e.registered=760;e.Gbreve=722;e.Idotaccent=333;e.summation=600;e.Egrave=611;e.racute=389;e.omacron=500;e.Zacute=556;e.Zcaron=556;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=300;e.eogonek=444;e.Uogonek=722;e.Aacute=611;e.Adieresis=611;e.egrave=444;e.zacute=389;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=500;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=611;e.dcroat=500;e.threequarters=750;e.Scedilla=500;e.lcaron=300;e.Kcommaaccent=667;e.Lacute=556;e.trademark=980;e.edotaccent=444;e.Igrave=333;e.Imacron=333;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=500;e.Uhungarumlaut=722;e.Eacute=611;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=500;e.Scommaaccent=500;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=500;e.radical=453;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=667;e.otilde=500;e.Rcommaaccent=611;e.Lcommaaccent=556;e.Atilde=611;e.Aogonek=611;e.Aring=611;e.Otilde=722;e.zdotaccent=389;e.Ecaron=611;e.Iogonek=333;e.kcommaaccent=444;e.minus=675;e.Icircumflex=333;e.ncaron=500;e.tcommaaccent=278;e.logicalnot=675;e.odieresis=500;e.udieresis=500;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=389;e.ncommaaccent=500;e.onesuperior=300;e.imacron=278;e.Euro=500}));e.ZapfDingbats=(0,r.getLookupTableFactory)((function(e){e.space=278;e.a1=974;e.a2=961;e.a202=974;e.a3=980;e.a4=719;e.a5=789;e.a119=790;e.a118=791;e.a117=690;e.a11=960;e.a12=939;e.a13=549;e.a14=855;e.a15=911;e.a16=933;e.a105=911;e.a17=945;e.a18=974;e.a19=755;e.a20=846;e.a21=762;e.a22=761;e.a23=571;e.a24=677;e.a25=763;e.a26=760;e.a27=759;e.a28=754;e.a6=494;e.a7=552;e.a8=537;e.a9=577;e.a10=692;e.a29=786;e.a30=788;e.a31=788;e.a32=790;e.a33=793;e.a34=794;e.a35=816;e.a36=823;e.a37=789;e.a38=841;e.a39=823;e.a40=833;e.a41=816;e.a42=831;e.a43=923;e.a44=744;e.a45=723;e.a46=749;e.a47=790;e.a48=792;e.a49=695;e.a50=776;e.a51=768;e.a52=792;e.a53=759;e.a54=707;e.a55=708;e.a56=682;e.a57=701;e.a58=826;e.a59=815;e.a60=789;e.a61=789;e.a62=707;e.a63=687;e.a64=696;e.a65=689;e.a66=786;e.a67=787;e.a68=713;e.a69=791;e.a70=785;e.a71=791;e.a72=873;e.a73=761;e.a74=762;e.a203=762;e.a75=759;e.a204=759;e.a76=892;e.a77=892;e.a78=788;e.a79=784;e.a81=438;e.a82=138;e.a83=277;e.a84=415;e.a97=392;e.a98=392;e.a99=668;e.a100=668;e.a89=390;e.a90=390;e.a93=317;e.a94=317;e.a91=276;e.a92=276;e.a205=509;e.a85=509;e.a206=410;e.a86=410;e.a87=234;e.a88=234;e.a95=334;e.a96=334;e.a101=732;e.a102=544;e.a103=544;e.a104=910;e.a106=667;e.a107=760;e.a108=760;e.a112=776;e.a111=595;e.a110=694;e.a109=626;e.a120=788;e.a121=788;e.a122=788;e.a123=788;e.a124=788;e.a125=788;e.a126=788;e.a127=788;e.a128=788;e.a129=788;e.a130=788;e.a131=788;e.a132=788;e.a133=788;e.a134=788;e.a135=788;e.a136=788;e.a137=788;e.a138=788;e.a139=788;e.a140=788;e.a141=788;e.a142=788;e.a143=788;e.a144=788;e.a145=788;e.a146=788;e.a147=788;e.a148=788;e.a149=788;e.a150=788;e.a151=788;e.a152=788;e.a153=788;e.a154=788;e.a155=788;e.a156=788;e.a157=788;e.a158=788;e.a159=788;e.a160=894;e.a161=838;e.a163=1016;e.a164=458;e.a196=748;e.a165=924;e.a192=748;e.a166=918;e.a167=927;e.a168=928;e.a169=928;e.a170=834;e.a171=873;e.a172=828;e.a173=924;e.a162=924;e.a174=917;e.a175=930;e.a176=931;e.a177=463;e.a178=883;e.a179=836;e.a193=836;e.a180=867;e.a199=867;e.a181=696;e.a200=696;e.a182=874;e.a201=874;e.a183=760;e.a184=946;e.a197=771;e.a185=865;e.a194=771;e.a198=888;e.a186=967;e.a195=888;e.a187=831;e.a188=873;e.a189=927;e.a190=970;e.a191=918}))}));t.getMetrics=n;const i=(0,r.getLookupTableFactory)((function(e){e.Courier={ascent:629,descent:-157,capHeight:562,xHeight:-426};e["Courier-Bold"]={ascent:629,descent:-157,capHeight:562,xHeight:439};e["Courier-Oblique"]={ascent:629,descent:-157,capHeight:562,xHeight:426};e["Courier-BoldOblique"]={ascent:629,descent:-157,capHeight:562,xHeight:426};e.Helvetica={ascent:718,descent:-207,capHeight:718,xHeight:523};e["Helvetica-Bold"]={ascent:718,descent:-207,capHeight:718,xHeight:532};e["Helvetica-Oblique"]={ascent:718,descent:-207,capHeight:718,xHeight:523};e["Helvetica-BoldOblique"]={ascent:718,descent:-207,capHeight:718,xHeight:532};e["Times-Roman"]={ascent:683,descent:-217,capHeight:662,xHeight:450};e["Times-Bold"]={ascent:683,descent:-217,capHeight:676,xHeight:461};e["Times-Italic"]={ascent:683,descent:-217,capHeight:653,xHeight:441};e["Times-BoldItalic"]={ascent:683,descent:-217,capHeight:669,xHeight:462};e.Symbol={ascent:Math.NaN,descent:Math.NaN,capHeight:Math.NaN,xHeight:Math.NaN};e.ZapfDingbats={ascent:Math.NaN,descent:Math.NaN,capHeight:Math.NaN,xHeight:Math.NaN}}));t.getFontBasicMetrics=i},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.GlyfTable=void 0;t.GlyfTable=class GlyfTable{constructor({glyfTable:e,isGlyphLocationsLong:t,locaTable:a,numGlyphs:r}){this.glyphs=[];const n=new DataView(a.buffer,a.byteOffset,a.byteLength),i=new DataView(e.buffer,e.byteOffset,e.byteLength),s=t?4:2;let o=t?n.getUint32(0):2*n.getUint16(0),c=0;for(let e=0;ee+(t.getSize()+3&-4)),0)}write(){const e=this.getSize(),t=new DataView(new ArrayBuffer(e)),a=e>131070,r=a?4:2,n=new DataView(new ArrayBuffer((this.glyphs.length+1)*r));a?n.setUint32(0,0):n.setUint16(0,0);let i=0,s=0;for(const e of this.glyphs){i+=e.write(i,t);i=i+3&-4;s+=r;a?n.setUint32(s,i):n.setUint16(s,i>>1)}return{isLocationLong:a,loca:new Uint8Array(n.buffer),glyf:new Uint8Array(t.buffer)}}scale(e){for(let t=0,a=this.glyphs.length;te+t.getSize()),0);return this.header.getSize()+e}write(e,t){if(!this.header)return 0;const a=e;e+=this.header.write(e,t);if(this.simple)e+=this.simple.write(e,t);else for(const a of this.composites)e+=a.write(e,t);return e-a}scale(e){if(!this.header)return;const t=(this.header.xMin+this.header.xMax)/2;this.header.scale(t,e);if(this.simple)this.simple.scale(t,e);else for(const a of this.composites)a.scale(t,e)}}class GlyphHeader{constructor({numberOfContours:e,xMin:t,yMin:a,xMax:r,yMax:n}){this.numberOfContours=e;this.xMin=t;this.yMin=a;this.xMax=r;this.yMax=n}static parse(e,t){return[10,new GlyphHeader({numberOfContours:t.getInt16(e),xMin:t.getInt16(e+2),yMin:t.getInt16(e+4),xMax:t.getInt16(e+6),yMax:t.getInt16(e+8)})]}getSize(){return 10}write(e,t){t.setInt16(e,this.numberOfContours);t.setInt16(e+2,this.xMin);t.setInt16(e+4,this.yMin);t.setInt16(e+6,this.xMax);t.setInt16(e+8,this.yMax);return 10}scale(e,t){this.xMin=Math.round(e+(this.xMin-e)*t);this.xMax=Math.round(e+(this.xMax-e)*t)}}class Contour{constructor({flags:e,xCoordinates:t,yCoordinates:a}){this.xCoordinates=t;this.yCoordinates=a;this.flags=e}}class SimpleGlyph{constructor({contours:e,instructions:t}){this.contours=e;this.instructions=t}static parse(e,t,a){const r=[];for(let n=0;n255?e+=2:o>0&&(e+=1);t=i;o=Math.abs(s-a);o>255?e+=2:o>0&&(e+=1);a=s}}return e}write(e,t){const a=e,r=[],n=[],i=[];let s=0,o=0;for(const a of this.contours){for(let e=0,t=a.xCoordinates.length;e=0?18:2;r.push(e)}else r.push(l)}s=c;const h=a.yCoordinates[e];l=h-o;if(0===l){t|=32;n.push(0)}else{const e=Math.abs(l);if(e<=255){t|=l>=0?36:4;n.push(e)}else n.push(l)}o=h;i.push(t)}t.setUint16(e,r.length-1);e+=2}t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}for(const a of i)t.setUint8(e++,a);for(let a=0,n=r.length;a=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(e+=2):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(e+=2);return e}write(e,t){const a=e;2&this.flags?this.argument1>=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(this.flags|=1):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(this.flags|=1);t.setUint16(e,this.flags);t.setUint16(e+2,this.glyphIndex);e+=4;if(1&this.flags){if(2&this.flags){t.setInt16(e,this.argument1);t.setInt16(e+2,this.argument2)}else{t.setUint16(e,this.argument1);t.setUint16(e+2,this.argument2)}e+=4}else{t.setUint8(e,this.argument1);t.setUint8(e+1,this.argument2);e+=2}if(256&this.flags){t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}}return e-a}scale(e,t){}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.OpenTypeFileBuilder=void 0;var r=a(3),n=a(2);function writeInt16(e,t,a){e[t]=a>>8&255;e[t+1]=255&a}function writeInt32(e,t,a){e[t]=a>>24&255;e[t+1]=a>>16&255;e[t+2]=a>>8&255;e[t+3]=255&a}function writeData(e,t,a){if(a instanceof Uint8Array)e.set(a,t);else if("string"==typeof a)for(let r=0,n=a.length;ra;){a<<=1;r++}const n=a*t;return{range:n,entry:r,rangeShift:t*e-n}}toArray(){let e=this.sfnt;const t=this.tables,a=Object.keys(t);a.sort();const i=a.length;let s,o,c,l,h,u=12+16*i;const d=[u];for(s=0;s>>0;d.push(u)}const f=new Uint8Array(u);for(s=0;s>>0}writeInt32(f,u+4,e);writeInt32(f,u+8,d[s]);writeInt32(f,u+12,t[h].length);u+=16}return f}addTable(e,t){if(e in this.tables)throw new Error("Table "+e+" already exists");this.tables[e]=t}}t.OpenTypeFileBuilder=OpenTypeFileBuilder},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Type1Font=void 0;var r=a(35),n=a(2),i=a(38),s=a(3),o=a(8),c=a(49);function findBlock(e,t,a){const r=e.length,n=t.length,i=r-n;let o=a,c=!1;for(;o=n){o+=a;for(;o=0&&(r[e]=n)}}return(0,i.type1FontGlyphMapping)(e,r,a)}hasGlyphId(e){if(e<0||e>=this.numGlyphs)return!1;if(0===e)return!0;return this.charstrings[e-1].charstring.length>0}getSeacs(e){const t=[];for(let a=0,r=e.length;a0;e--)t[e]-=t[e-1];g.setByName(e,t)}s.topDict.privateDict=g;const m=new r.CFFIndex;for(u=0,d=n.length;u{Object.defineProperty(t,"__esModule",{value:!0});t.Type1Parser=void 0;var r=a(37),n=a(3),i=a(8),s=a(2);const o=[4],c=[5],l=[6],h=[7],u=[8],d=[12,35],f=[14],g=[21],p=[22],m=[30],b=[31];class Type1CharString{constructor(){this.width=0;this.lsb=0;this.flexing=!1;this.output=[];this.stack=[]}convert(e,t,a){const r=e.length;let n,i,y,w=!1;for(let S=0;Sr)return!0;const n=r-e;for(let e=n;e>8&255,255&t);else{t=65536*t|0;this.output.push(255,t>>24&255,t>>16&255,t>>8&255,255&t)}}this.output.push(...t);a?this.stack.splice(n,e):this.stack.length=0;return!1}}function isHexDigit(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function decrypt(e,t,a){if(a>=e.length)return new Uint8Array(0);let r,n,i=0|t;for(r=0;r>8;i=52845*(t+i)+22719&65535}return o}function isSpecial(e){return 47===e||91===e||93===e||123===e||125===e||40===e||41===e}t.Type1Parser=class Type1Parser{constructor(e,t,a){if(t){const t=e.getBytes(),a=!((isHexDigit(t[0])||(0,n.isWhiteSpace)(t[0]))&&isHexDigit(t[1])&&isHexDigit(t[2])&&isHexDigit(t[3])&&isHexDigit(t[4])&&isHexDigit(t[5])&&isHexDigit(t[6])&&isHexDigit(t[7]));e=new i.Stream(a?decrypt(t,55665,4):function decryptAscii(e,t,a){let r=0|t;const n=e.length,i=new Uint8Array(n>>>1);let s,o;for(s=0,o=0;s>8;r=52845*(e+r)+22719&65535}}return i.slice(a,o)}(t,55665,4))}this.seacAnalysisEnabled=!!a;this.stream=e;this.nextChar()}readNumberArray(){this.getToken();const e=[];for(;;){const t=this.getToken();if(null===t||"]"===t||"}"===t)break;e.push(parseFloat(t||0))}return e}readNumber(){const e=this.getToken();return parseFloat(e||0)}readInt(){const e=this.getToken();return 0|parseInt(e||0,10)}readBoolean(){return"true"===this.getToken()?1:0}nextChar(){return this.currentChar=this.stream.getByte()}prevChar(){this.stream.skip(-2);return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(-1===t)return null;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!(0,n.isWhiteSpace)(t))break;t=this.nextChar()}if(isSpecial(t)){this.nextChar();return String.fromCharCode(t)}let a="";do{a+=String.fromCharCode(t);t=this.nextChar()}while(t>=0&&!(0,n.isWhiteSpace)(t)&&!isSpecial(t));return a}readCharStrings(e,t){return-1===t?e:decrypt(e,4330,t)}extractFontProgram(e){const t=this.stream,a=[],r=[],n=Object.create(null);n.lenIV=4;const i={subrs:[],charstrings:[],properties:{privateData:n}};let s,o,c,l;for(;null!==(s=this.getToken());)if("/"===s){s=this.getToken();switch(s){case"CharStrings":this.getToken();this.getToken();this.getToken();this.getToken();for(;;){s=this.getToken();if(null===s||"end"===s)break;if("/"!==s)continue;const e=this.getToken();o=this.readInt();this.getToken();c=o>0?t.getBytes(o):new Uint8Array(0);l=i.properties.privateData.lenIV;const a=this.readCharStrings(c,l);this.nextChar();s=this.getToken();"noaccess"===s?this.getToken():"/"===s&&this.prevChar();r.push({glyph:e,encoded:a})}break;case"Subrs":this.readInt();this.getToken();for(;"dup"===this.getToken();){const e=this.readInt();o=this.readInt();this.getToken();c=o>0?t.getBytes(o):new Uint8Array(0);l=i.properties.privateData.lenIV;const r=this.readCharStrings(c,l);this.nextChar();s=this.getToken();"noaccess"===s&&this.getToken();a[e]=r}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":const e=this.readNumberArray();e.length>0&&e.length,0;break;case"StemSnapH":case"StemSnapV":i.properties.privateData[s]=this.readNumberArray();break;case"StdHW":case"StdVW":i.properties.privateData[s]=this.readNumberArray()[0];break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":i.properties.privateData[s]=this.readNumber();break;case"ExpansionFactor":i.properties.privateData[s]=this.readNumber()||.06;break;case"ForceBold":i.properties.privateData[s]=this.readBoolean()}}for(const{encoded:t,glyph:n}of r){const r=new Type1CharString,s=r.convert(t,a,this.seacAnalysisEnabled);let o=r.output;s&&(o=[14]);const c={glyphName:n,charstring:o,width:r.width,lsb:r.lsb,seac:r.seac};".notdef"===n?i.charstrings.unshift(c):i.charstrings.push(c);if(e.builtInEncoding){const t=e.builtInEncoding.indexOf(n);t>-1&&void 0===e.widths[t]&&t>=e.firstChar&&t<=e.lastChar&&(e.widths[t]=r.width)}}return i}extractFontHeader(e){let t;for(;null!==(t=this.getToken());)if("/"===t){t=this.getToken();switch(t){case"FontMatrix":const a=this.readNumberArray();e.fontMatrix=a;break;case"Encoding":const n=this.getToken();let i;if(/^\d+$/.test(n)){i=[];const e=0|parseInt(n,10);this.getToken();for(let a=0;a{Object.defineProperty(t,"__esModule",{value:!0});t.Pattern=void 0;t.clearPatternCaches=function clearPatternCaches(){f=Object.create(null)};t.getTilingPatternIR=function getTilingPatternIR(e,t,a){const n=t.getArray("Matrix"),i=r.Util.normalizeRect(t.getArray("BBox")),s=t.get("XStep"),o=t.get("YStep"),c=t.get("PaintType"),l=t.get("TilingType");if(i[2]-i[0]==0||i[3]-i[1]==0)throw new r.FormatError(`Invalid getTilingPatternIR /BBox array: [${i}].`);return["TilingPattern",a,e,n,i,s,o,c,l]};var r=a(2),n=a(5),i=a(12),s=a(3);const o=2,c=3,l=4,h=5,u=6,d=7;t.Pattern=class Pattern{constructor(){(0,r.unreachable)("Cannot initialize Pattern.")}static parseShading(e,t,a,i,f){const g=e instanceof n.BaseStream?e.dict:e,p=g.get("ShadingType");try{switch(p){case o:case c:return new RadialAxialShading(g,t,a,i,f);case l:case h:case u:case d:return new MeshShading(e,t,a,i,f);default:throw new r.FormatError("Unsupported ShadingType: "+p)}}catch(e){if(e instanceof s.MissingDataException)throw e;(0,r.warn)(e);return new DummyShading}}};class BaseShading{static SMALL_NUMBER=1e-6;constructor(){this.constructor===BaseShading&&(0,r.unreachable)("Cannot initialize BaseShading.")}getIR(){(0,r.unreachable)("Abstract method `getIR` called.")}}class RadialAxialShading extends BaseShading{constructor(e,t,a,n,s){super();this.coordsArr=e.getArray("Coords");this.shadingType=e.get("ShadingType");const o=i.ColorSpace.parse({cs:e.getRaw("CS")||e.getRaw("ColorSpace"),xref:t,resources:a,pdfFunctionFactory:n,localColorSpaceCache:s}),l=e.getArray("BBox");this.bbox=Array.isArray(l)&&4===l.length?r.Util.normalizeRect(l):null;let h=0,u=1;if(e.has("Domain")){const t=e.getArray("Domain");h=t[0];u=t[1]}let d=!1,f=!1;if(e.has("Extend")){const t=e.getArray("Extend");d=t[0];f=t[1]}if(!(this.shadingType!==c||d&&f)){const[e,t,a,n,i,s]=this.coordsArr,o=Math.hypot(e-n,t-i);a<=s+o&&s<=a+o&&(0,r.warn)("Unsupported radial gradient.")}this.extendStart=d;this.extendEnd=f;const g=e.getRaw("Function"),p=n.createFromArray(g),m=(u-h)/840,b=this.colorStops=[];if(h>=u||m<=0){(0,r.info)("Bad shading domain.");return}const y=new Float32Array(o.numComps),w=new Float32Array(1);let S,x=0;w[0]=h;p(w,0,y,0);let C=o.getRgb(y,0);const k=r.Util.makeHexColor(C[0],C[1],C[2]);b.push([0,k]);let v=1;w[0]=h+m;p(w,0,y,0);let F=o.getRgb(y,0),O=F[0]-C[0]+1,T=F[1]-C[1]+1,M=F[2]-C[2]+1,D=F[0]-C[0]-1,E=F[1]-C[1]-1,N=F[2]-C[2]-1;for(let e=2;e<840;e++){w[0]=h+e*m;p(w,0,y,0);S=o.getRgb(y,0);const t=e-x;O=Math.min(O,(S[0]-C[0]+1)/t);T=Math.min(T,(S[1]-C[1]+1)/t);M=Math.min(M,(S[2]-C[2]+1)/t);D=Math.max(D,(S[0]-C[0]-1)/t);E=Math.max(E,(S[1]-C[1]-1)/t);N=Math.max(N,(S[2]-C[2]-1)/t);if(!(D<=O&&E<=T&&N<=M)){const e=r.Util.makeHexColor(F[0],F[1],F[2]);b.push([v/840,e]);O=S[0]-F[0]+1;T=S[1]-F[1]+1;M=S[2]-F[2]+1;D=S[0]-F[0]-1;E=S[1]-F[1]-1;N=S[2]-F[2]-1;x=v;C=F}v=e;F=S}const R=r.Util.makeHexColor(F[0],F[1],F[2]);b.push([1,R]);let L="transparent";if(e.has("Background")){S=o.getRgb(e.get("Background"),0);L=r.Util.makeHexColor(S[0],S[1],S[2])}if(!d){b.unshift([0,L]);b[1][0]+=BaseShading.SMALL_NUMBER}if(!f){b.at(-1)[0]-=BaseShading.SMALL_NUMBER;b.push([1,L])}this.colorStops=b}getIR(){const e=this.coordsArr,t=this.shadingType;let a,n,i,s,l;if(t===o){n=[e[0],e[1]];i=[e[2],e[3]];s=null;l=null;a="axial"}else if(t===c){n=[e[0],e[1]];i=[e[3],e[4]];s=e[2];l=e[5];a="radial"}else(0,r.unreachable)(`getPattern type unknown: ${t}`);return["RadialAxial",a,this.bbox,this.colorStops,n,i,s,l]}}class MeshStreamReader{constructor(e,t){this.stream=e;this.context=t;this.buffer=0;this.bufferLength=0;const a=t.numComps;this.tmpCompsBuf=new Float32Array(a);const r=t.colorSpace.numComps;this.tmpCsCompsBuf=t.colorFn?new Float32Array(r):this.tmpCompsBuf}get hasData(){if(this.stream.end)return this.stream.pos0)return!0;const e=this.stream.getByte();if(e<0)return!1;this.buffer=e;this.bufferLength=8;return!0}readBits(e){let t=this.buffer,a=this.bufferLength;if(32===e){if(0===a)return(this.stream.getByte()<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte())>>>0;t=t<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte();const e=this.stream.getByte();this.buffer=e&(1<>a)>>>0}if(8===e&&0===a)return this.stream.getByte();for(;a>a}align(){this.buffer=0;this.bufferLength=0}readFlag(){return this.readBits(this.context.bitsPerFlag)}readCoordinate(){const e=this.context.bitsPerCoordinate,t=this.readBits(e),a=this.readBits(e),r=this.context.decode,n=e<32?1/((1<i?i:e;t=t>s?s:t;a=a{Object.defineProperty(t,"__esModule",{value:!0});t.getXfaFontDict=function getXfaFontDict(e){const t=function getXfaFontWidths(e){const t=getXfaFontName(e);if(!t)return null;const{baseWidths:a,baseMapping:r,factors:n}=t,i=n?a.map(((e,t)=>e*n[t])):a;let s,o=-2;const c=[];for(const[e,t]of r.map(((e,t)=>[e,t])).sort((([e],[t])=>e-t)))if(-1!==e)if(e===o+1){s.push(i[t]);o+=1}else{o=e;s=[i[t]];c.push(e,s)}return c}(e),a=new n.Dict(null);a.set("BaseFont",n.Name.get(e));a.set("Type",n.Name.get("Font"));a.set("Subtype",n.Name.get("CIDFontType2"));a.set("Encoding",n.Name.get("Identity-H"));a.set("CIDToGIDMap",n.Name.get("Identity"));a.set("W",t);a.set("FirstChar",t[0]);a.set("LastChar",t.at(-2)+t.at(-1).length-1);const r=new n.Dict(null);a.set("FontDescriptor",r);const i=new n.Dict(null);i.set("Ordering","Identity");i.set("Registry","Adobe");i.set("Supplement",0);a.set("CIDSystemInfo",i);return a};t.getXfaFontName=getXfaFontName;var r=a(52),n=a(4),i=a(53),s=a(54),o=a(55),c=a(56),l=a(3),h=a(38);const u=(0,l.getLookupTableFactory)((function(e){e["MyriadPro-Regular"]=e["PdfJS-Fallback-Regular"]={name:"LiberationSans-Regular",factors:o.MyriadProRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:o.MyriadProRegularMetrics};e["MyriadPro-Bold"]=e["PdfJS-Fallback-Bold"]={name:"LiberationSans-Bold",factors:o.MyriadProBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:o.MyriadProBoldMetrics};e["MyriadPro-It"]=e["MyriadPro-Italic"]=e["PdfJS-Fallback-Italic"]={name:"LiberationSans-Italic",factors:o.MyriadProItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:o.MyriadProItalicMetrics};e["MyriadPro-BoldIt"]=e["MyriadPro-BoldItalic"]=e["PdfJS-Fallback-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:o.MyriadProBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:o.MyriadProBoldItalicMetrics};e.ArialMT=e.Arial=e["Arial-Regular"]={name:"LiberationSans-Regular",baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping};e["Arial-BoldMT"]=e["Arial-Bold"]={name:"LiberationSans-Bold",baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping};e["Arial-ItalicMT"]=e["Arial-Italic"]={name:"LiberationSans-Italic",baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping};e["Arial-BoldItalicMT"]=e["Arial-BoldItalic"]={name:"LiberationSans-BoldItalic",baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping};e["Calibri-Regular"]={name:"LiberationSans-Regular",factors:r.CalibriRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:r.CalibriRegularMetrics};e["Calibri-Bold"]={name:"LiberationSans-Bold",factors:r.CalibriBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:r.CalibriBoldMetrics};e["Calibri-Italic"]={name:"LiberationSans-Italic",factors:r.CalibriItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:r.CalibriItalicMetrics};e["Calibri-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:r.CalibriBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:r.CalibriBoldItalicMetrics};e["Segoeui-Regular"]={name:"LiberationSans-Regular",factors:c.SegoeuiRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:c.SegoeuiRegularMetrics};e["Segoeui-Bold"]={name:"LiberationSans-Bold",factors:c.SegoeuiBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:c.SegoeuiBoldMetrics};e["Segoeui-Italic"]={name:"LiberationSans-Italic",factors:c.SegoeuiItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:c.SegoeuiItalicMetrics};e["Segoeui-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:c.SegoeuiBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:c.SegoeuiBoldItalicMetrics};e["Helvetica-Regular"]=e.Helvetica={name:"LiberationSans-Regular",factors:i.HelveticaRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:i.HelveticaRegularMetrics};e["Helvetica-Bold"]={name:"LiberationSans-Bold",factors:i.HelveticaBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:i.HelveticaBoldMetrics};e["Helvetica-Italic"]={name:"LiberationSans-Italic",factors:i.HelveticaItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:i.HelveticaItalicMetrics};e["Helvetica-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:i.HelveticaBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:i.HelveticaBoldItalicMetrics}}));function getXfaFontName(e){const t=(0,h.normalizeFontName)(e);return u()[t]}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CalibriRegularMetrics=t.CalibriRegularFactors=t.CalibriItalicMetrics=t.CalibriItalicFactors=t.CalibriBoldMetrics=t.CalibriBoldItalicMetrics=t.CalibriBoldItalicFactors=t.CalibriBoldFactors=void 0;t.CalibriBoldFactors=[1.3877,1,1,1,.97801,.92482,.89552,.91133,.81988,.97566,.98152,.93548,.93548,1.2798,.85284,.92794,1,.96134,1.54657,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.82845,.82845,.85284,.85284,.85284,.75859,.92138,.83908,.7762,.73293,.87289,.73133,.7514,.81921,.87356,.95958,.59526,.75727,.69225,1.04924,.9121,.86943,.79795,.88198,.77958,.70864,.81055,.90399,.88653,.96017,.82577,.77892,.78257,.97507,1.54657,.97507,.85284,.89552,.90176,.88762,.8785,.75241,.8785,.90518,.95015,.77618,.8785,.88401,.91916,.86304,.88401,.91488,.8785,.8801,.8785,.8785,.91343,.7173,1.04106,.8785,.85075,.95794,.82616,.85162,.79492,.88331,1.69808,.88331,.85284,.97801,.89552,.91133,.89552,.91133,1.7801,.89552,1.24487,1.13254,1.12401,.96839,.85284,.68787,.70645,.85592,.90747,1.01466,1.0088,.90323,1,1.07463,1,.91056,.75806,1.19118,.96839,.78864,.82845,.84133,.75859,.83908,.83908,.83908,.83908,.83908,.83908,.77539,.73293,.73133,.73133,.73133,.73133,.95958,.95958,.95958,.95958,.88506,.9121,.86943,.86943,.86943,.86943,.86943,.85284,.87508,.90399,.90399,.90399,.90399,.77892,.79795,.90807,.88762,.88762,.88762,.88762,.88762,.88762,.8715,.75241,.90518,.90518,.90518,.90518,.88401,.88401,.88401,.88401,.8785,.8785,.8801,.8801,.8801,.8801,.8801,.90747,.89049,.8785,.8785,.8785,.8785,.85162,.8785,.85162,.83908,.88762,.83908,.88762,.83908,.88762,.73293,.75241,.73293,.75241,.73293,.75241,.73293,.75241,.87289,.83016,.88506,.93125,.73133,.90518,.73133,.90518,.73133,.90518,.73133,.90518,.73133,.90518,.81921,.77618,.81921,.77618,.81921,.77618,1,1,.87356,.8785,.91075,.89608,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.76229,.90167,.59526,.91916,1,1,.86304,.69225,.88401,1,1,.70424,.79468,.91926,.88175,.70823,.94903,.9121,.8785,1,1,.9121,.8785,.87802,.88656,.8785,.86943,.8801,.86943,.8801,.86943,.8801,.87402,.89291,.77958,.91343,1,1,.77958,.91343,.70864,.7173,.70864,.7173,.70864,.7173,.70864,.7173,1,1,.81055,.75841,.81055,1.06452,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.96017,.95794,.77892,.85162,.77892,.78257,.79492,.78257,.79492,.78257,.79492,.9297,.56892,.83908,.88762,.77539,.8715,.87508,.89049,1,1,.81055,1.04106,1.20528,1.20528,1,1.15543,.70674,.98387,.94721,1.33431,1.45894,.95161,1.06303,.83908,.80352,.57184,.6965,.56289,.82001,.56029,.81235,1.02988,.83908,.7762,.68156,.80367,.73133,.78257,.87356,.86943,.95958,.75727,.89019,1.04924,.9121,.7648,.86943,.87356,.79795,.78275,.81055,.77892,.9762,.82577,.99819,.84896,.95958,.77892,.96108,1.01407,.89049,1.02988,.94211,.96108,.8936,.84021,.87842,.96399,.79109,.89049,1.00813,1.02988,.86077,.87445,.92099,.84723,.86513,.8801,.75638,.85714,.78216,.79586,.87965,.94211,.97747,.78287,.97926,.84971,1.02988,.94211,.8801,.94211,.84971,.73133,1,1,1,1,1,1,1,1,1,1,1,1,.90264,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.90518,1,1,1,1,1,1,1,1,1,1,1,1,.90548,1,1,1,1,1,1,.96017,.95794,.96017,.95794,.96017,.95794,.77892,.85162,1,1,.89552,.90527,1,.90363,.92794,.92794,.92794,.92794,.87012,.87012,.87012,.89552,.89552,1.42259,.71143,1.06152,1,1,1.03372,1.03372,.97171,1.4956,2.2807,.93835,.83406,.91133,.84107,.91133,1,1,1,.72021,1,1.23108,.83489,.88525,.88525,.81499,.90527,1.81055,.90527,1.81055,1.31006,1.53711,.94434,1.08696,1,.95018,.77192,.85284,.90747,1.17534,.69825,.9716,1.37077,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.08004,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,.90727,.90727,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.CalibriBoldMetrics={lineHeight:1.2207,lineGap:.2207};t.CalibriBoldItalicFactors=[1.3877,1,1,1,.97801,.92482,.89552,.91133,.81988,.97566,.98152,.93548,.93548,1.2798,.85284,.92794,1,.96134,1.56239,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.82845,.82845,.85284,.85284,.85284,.75859,.92138,.83908,.7762,.71805,.87289,.73133,.7514,.81921,.87356,.95958,.59526,.75727,.69225,1.04924,.90872,.85938,.79795,.87068,.77958,.69766,.81055,.90399,.88653,.96068,.82577,.77892,.78257,.97507,1.529,.97507,.85284,.89552,.90176,.94908,.86411,.74012,.86411,.88323,.95015,.86411,.86331,.88401,.91916,.86304,.88401,.9039,.86331,.86331,.86411,.86411,.90464,.70852,1.04106,.86331,.84372,.95794,.82616,.84548,.79492,.88331,1.69808,.88331,.85284,.97801,.89552,.91133,.89552,.91133,1.7801,.89552,1.24487,1.13254,1.19129,.96839,.85284,.68787,.70645,.85592,.90747,1.01466,1.0088,.90323,1,1.07463,1,.91056,.75806,1.19118,.96839,.78864,.82845,.84133,.75859,.83908,.83908,.83908,.83908,.83908,.83908,.77539,.71805,.73133,.73133,.73133,.73133,.95958,.95958,.95958,.95958,.88506,.90872,.85938,.85938,.85938,.85938,.85938,.85284,.87068,.90399,.90399,.90399,.90399,.77892,.79795,.90807,.94908,.94908,.94908,.94908,.94908,.94908,.85887,.74012,.88323,.88323,.88323,.88323,.88401,.88401,.88401,.88401,.8785,.86331,.86331,.86331,.86331,.86331,.86331,.90747,.89049,.86331,.86331,.86331,.86331,.84548,.86411,.84548,.83908,.94908,.83908,.94908,.83908,.94908,.71805,.74012,.71805,.74012,.71805,.74012,.71805,.74012,.87289,.79538,.88506,.92726,.73133,.88323,.73133,.88323,.73133,.88323,.73133,.88323,.73133,.88323,.81921,.86411,.81921,.86411,.81921,.86411,1,1,.87356,.86331,.91075,.8777,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.76467,.90167,.59526,.91916,1,1,.86304,.69225,.88401,1,1,.70424,.77312,.91926,.88175,.70823,.94903,.90872,.86331,1,1,.90872,.86331,.86906,.88116,.86331,.85938,.86331,.85938,.86331,.85938,.86331,.87402,.86549,.77958,.90464,1,1,.77958,.90464,.69766,.70852,.69766,.70852,.69766,.70852,.69766,.70852,1,1,.81055,.75841,.81055,1.06452,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.96068,.95794,.77892,.84548,.77892,.78257,.79492,.78257,.79492,.78257,.79492,.9297,.56892,.83908,.94908,.77539,.85887,.87068,.89049,1,1,.81055,1.04106,1.20528,1.20528,1,1.15543,.70088,.98387,.94721,1.33431,1.45894,.95161,1.48387,.83908,.80352,.57118,.6965,.56347,.79179,.55853,.80346,1.02988,.83908,.7762,.67174,.86036,.73133,.78257,.87356,.86441,.95958,.75727,.89019,1.04924,.90872,.74889,.85938,.87891,.79795,.7957,.81055,.77892,.97447,.82577,.97466,.87179,.95958,.77892,.94252,.95612,.8753,1.02988,.92733,.94252,.87411,.84021,.8728,.95612,.74081,.8753,1.02189,1.02988,.84814,.87445,.91822,.84723,.85668,.86331,.81344,.87581,.76422,.82046,.96057,.92733,.99375,.78022,.95452,.86015,1.02988,.92733,.86331,.92733,.86015,.73133,1,1,1,1,1,1,1,1,1,1,1,1,.90631,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.88323,1,1,1,1,1,1,1,1,1,1,1,1,.85174,1,1,1,1,1,1,.96068,.95794,.96068,.95794,.96068,.95794,.77892,.84548,1,1,.89552,.90527,1,.90363,.92794,.92794,.92794,.89807,.87012,.87012,.87012,.89552,.89552,1.42259,.71094,1.06152,1,1,1.03372,1.03372,.97171,1.4956,2.2807,.92972,.83406,.91133,.83326,.91133,1,1,1,.72021,1,1.23108,.83489,.88525,.88525,.81499,.90616,1.81055,.90527,1.81055,1.3107,1.53711,.94434,1.08696,1,.95018,.77192,.85284,.90747,1.17534,.69825,.9716,1.37077,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.08004,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,.90727,.90727,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.CalibriBoldItalicMetrics={lineHeight:1.2207,lineGap:.2207};t.CalibriItalicFactors=[1.3877,1,1,1,1.17223,1.1293,.89552,.91133,.80395,1.02269,1.15601,.91056,.91056,1.2798,.85284,.89807,1,.90861,1.39543,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.96309,.96309,.85284,.85284,.85284,.83319,.88071,.8675,.81552,.72346,.85193,.73206,.7522,.81105,.86275,.90685,.6377,.77892,.75593,1.02638,.89249,.84118,.77452,.85374,.75186,.67789,.79776,.88844,.85066,.94309,.77818,.7306,.76659,1.10369,1.38313,1.10369,1.06139,.89552,.8739,.9245,.9245,.83203,.9245,.85865,1.09842,.9245,.9245,1.03297,1.07692,.90918,1.03297,.94959,.9245,.92274,.9245,.9245,1.02933,.77832,1.20562,.9245,.8916,.98986,.86621,.89453,.79004,.94152,1.77256,.94152,.85284,.97801,.89552,.91133,.89552,.91133,1.91729,.89552,1.17889,1.13254,1.16359,.92098,.85284,.68787,.71353,.84737,.90747,1.0088,1.0044,.87683,1,1.09091,1,.92229,.739,1.15642,.92098,.76288,.80504,.80972,.75859,.8675,.8675,.8675,.8675,.8675,.8675,.76318,.72346,.73206,.73206,.73206,.73206,.90685,.90685,.90685,.90685,.86477,.89249,.84118,.84118,.84118,.84118,.84118,.85284,.84557,.88844,.88844,.88844,.88844,.7306,.77452,.86331,.9245,.9245,.9245,.9245,.9245,.9245,.84843,.83203,.85865,.85865,.85865,.85865,.82601,.82601,.82601,.82601,.94469,.9245,.92274,.92274,.92274,.92274,.92274,.90747,.86651,.9245,.9245,.9245,.9245,.89453,.9245,.89453,.8675,.9245,.8675,.9245,.8675,.9245,.72346,.83203,.72346,.83203,.72346,.83203,.72346,.83203,.85193,.8875,.86477,.99034,.73206,.85865,.73206,.85865,.73206,.85865,.73206,.85865,.73206,.85865,.81105,.9245,.81105,.9245,.81105,.9245,1,1,.86275,.9245,.90872,.93591,.90685,.82601,.90685,.82601,.90685,.82601,.90685,1.03297,.90685,.82601,.77896,1.05611,.6377,1.07692,1,1,.90918,.75593,1.03297,1,1,.76032,.9375,.98156,.93407,.77261,1.11429,.89249,.9245,1,1,.89249,.9245,.92534,.86698,.9245,.84118,.92274,.84118,.92274,.84118,.92274,.8667,.86291,.75186,1.02933,1,1,.75186,1.02933,.67789,.77832,.67789,.77832,.67789,.77832,.67789,.77832,1,1,.79776,.97655,.79776,1.23023,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.94309,.98986,.7306,.89453,.7306,.76659,.79004,.76659,.79004,.76659,.79004,1.09231,.54873,.8675,.9245,.76318,.84843,.84557,.86651,1,1,.79776,1.20562,1.18622,1.18622,1,1.1437,.67009,.96334,.93695,1.35191,1.40909,.95161,1.48387,.8675,.90861,.6192,.7363,.64824,.82411,.56321,.85696,1.23516,.8675,.81552,.7286,.84134,.73206,.76659,.86275,.84369,.90685,.77892,.85871,1.02638,.89249,.75828,.84118,.85984,.77452,.76466,.79776,.7306,.90782,.77818,.903,.87291,.90685,.7306,.99058,1.03667,.94635,1.23516,.9849,.99058,.92393,.8916,.942,1.03667,.75026,.94635,1.0297,1.23516,.90918,.94048,.98217,.89746,.84153,.92274,.82507,.88832,.84438,.88178,1.03525,.9849,1.00225,.78086,.97248,.89404,1.23516,.9849,.92274,.9849,.89404,.73206,1,1,1,1,1,1,1,1,1,1,1,1,.89693,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.85865,1,1,1,1,1,1,1,1,1,1,1,1,.90933,1,1,1,1,1,1,.94309,.98986,.94309,.98986,.94309,.98986,.7306,.89453,1,1,.89552,.90527,1,.90186,1.12308,1.12308,1.12308,1.12308,1.2566,1.2566,1.2566,.89552,.89552,1.42259,.68994,1.03809,1,1,1.0176,1.0176,1.11523,1.4956,2.01462,.97858,.82616,.91133,.83437,.91133,1,1,1,.70508,1,1.23108,.79801,.84426,.84426,.774,.90572,1.81055,.90749,1.81055,1.28809,1.55469,.94434,1.07806,1,.97094,.7589,.85284,.90747,1.19658,.69825,.97622,1.33512,.90747,.90747,.85284,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.0336,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,1.05859,1.05859,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.CalibriItalicMetrics={lineHeight:1.2207,lineGap:.2207};t.CalibriRegularFactors=[1.3877,1,1,1,1.17223,1.1293,.89552,.91133,.80395,1.02269,1.15601,.91056,.91056,1.2798,.85284,.89807,1,.90861,1.39016,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.96309,.96309,.85284,.85284,.85284,.83319,.88071,.8675,.81552,.73834,.85193,.73206,.7522,.81105,.86275,.90685,.6377,.77892,.75593,1.02638,.89385,.85122,.77452,.86503,.75186,.68887,.79776,.88844,.85066,.94258,.77818,.7306,.76659,1.10369,1.39016,1.10369,1.06139,.89552,.8739,.86128,.94469,.8457,.94469,.89464,1.09842,.84636,.94469,1.03297,1.07692,.90918,1.03297,.95897,.94469,.9482,.94469,.94469,1.04692,.78223,1.20562,.94469,.90332,.98986,.86621,.90527,.79004,.94152,1.77256,.94152,.85284,.97801,.89552,.91133,.89552,.91133,1.91729,.89552,1.17889,1.13254,1.08707,.92098,.85284,.68787,.71353,.84737,.90747,1.0088,1.0044,.87683,1,1.09091,1,.92229,.739,1.15642,.92098,.76288,.80504,.80972,.75859,.8675,.8675,.8675,.8675,.8675,.8675,.76318,.73834,.73206,.73206,.73206,.73206,.90685,.90685,.90685,.90685,.86477,.89385,.85122,.85122,.85122,.85122,.85122,.85284,.85311,.88844,.88844,.88844,.88844,.7306,.77452,.86331,.86128,.86128,.86128,.86128,.86128,.86128,.8693,.8457,.89464,.89464,.89464,.89464,.82601,.82601,.82601,.82601,.94469,.94469,.9482,.9482,.9482,.9482,.9482,.90747,.86651,.94469,.94469,.94469,.94469,.90527,.94469,.90527,.8675,.86128,.8675,.86128,.8675,.86128,.73834,.8457,.73834,.8457,.73834,.8457,.73834,.8457,.85193,.92454,.86477,.9921,.73206,.89464,.73206,.89464,.73206,.89464,.73206,.89464,.73206,.89464,.81105,.84636,.81105,.84636,.81105,.84636,1,1,.86275,.94469,.90872,.95786,.90685,.82601,.90685,.82601,.90685,.82601,.90685,1.03297,.90685,.82601,.77741,1.05611,.6377,1.07692,1,1,.90918,.75593,1.03297,1,1,.76032,.90452,.98156,1.11842,.77261,1.11429,.89385,.94469,1,1,.89385,.94469,.95877,.86901,.94469,.85122,.9482,.85122,.9482,.85122,.9482,.8667,.90016,.75186,1.04692,1,1,.75186,1.04692,.68887,.78223,.68887,.78223,.68887,.78223,.68887,.78223,1,1,.79776,.92188,.79776,1.23023,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.94258,.98986,.7306,.90527,.7306,.76659,.79004,.76659,.79004,.76659,.79004,1.09231,.54873,.8675,.86128,.76318,.8693,.85311,.86651,1,1,.79776,1.20562,1.18622,1.18622,1,1.1437,.67742,.96334,.93695,1.35191,1.40909,.95161,1.48387,.86686,.90861,.62267,.74359,.65649,.85498,.56963,.88254,1.23516,.8675,.81552,.75443,.84503,.73206,.76659,.86275,.85122,.90685,.77892,.85746,1.02638,.89385,.75657,.85122,.86275,.77452,.74171,.79776,.7306,.95165,.77818,.89772,.88831,.90685,.7306,.98142,1.02191,.96576,1.23516,.99018,.98142,.9236,.89258,.94035,1.02191,.78848,.96576,.9561,1.23516,.90918,.92578,.95424,.89746,.83969,.9482,.80113,.89442,.85208,.86155,.98022,.99018,1.00452,.81209,.99247,.89181,1.23516,.99018,.9482,.99018,.89181,.73206,1,1,1,1,1,1,1,1,1,1,1,1,.88844,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.89464,1,1,1,1,1,1,1,1,1,1,1,1,.96766,1,1,1,1,1,1,.94258,.98986,.94258,.98986,.94258,.98986,.7306,.90527,1,1,.89552,.90527,1,.90186,1.12308,1.12308,1.12308,1.12308,1.2566,1.2566,1.2566,.89552,.89552,1.42259,.69043,1.03809,1,1,1.0176,1.0176,1.11523,1.4956,2.01462,.99331,.82616,.91133,.84286,.91133,1,1,1,.70508,1,1.23108,.79801,.84426,.84426,.774,.90527,1.81055,.90527,1.81055,1.28809,1.55469,.94434,1.07806,1,.97094,.7589,.85284,.90747,1.19658,.69825,.97622,1.33512,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.0336,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,1.05859,1.05859,1,1,1,1.07185,.99413,.96334,1.08065,1,1,1,1,1,1,1,1,1,1,1];t.CalibriRegularMetrics={lineHeight:1.2207,lineGap:.2207}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.HelveticaRegularMetrics=t.HelveticaRegularFactors=t.HelveticaItalicMetrics=t.HelveticaItalicFactors=t.HelveticaBoldMetrics=t.HelveticaBoldItalicMetrics=t.HelveticaBoldItalicFactors=t.HelveticaBoldFactors=void 0;t.HelveticaBoldFactors=[.76116,1,1,1.0006,.99998,.99974,.99973,.99973,.99982,.99977,1.00087,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,1.00003,1.00003,1.00003,1.00026,.9999,.99977,.99977,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,.99973,.99977,1.00026,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,.99998,1.0006,.99998,1.00003,.99973,.99998,.99973,1.00026,.99973,1.00026,.99973,.99998,1.00026,1.00026,1.0006,1.0006,.99973,1.0006,.99982,1.00026,1.00026,1.00026,1.00026,.99959,.99973,.99998,1.00026,.99973,1.00022,.99973,.99973,1,.99959,1.00077,.99959,1.00003,.99998,.99973,.99973,.99973,.99973,1.00077,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.99973,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,.99977,.99977,.99977,.99977,.99977,.99977,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,.99973,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.06409,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,1.00026,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,1.03374,.99977,1.00026,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,.99977,1.00026,.99977,1.00026,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.00042,.99973,.99973,1.0006,.99977,.99973,.99973,1.00026,1.0006,1.00026,1.0006,1.00026,1.03828,1.00026,.99999,1.00026,1.0006,.99977,1.00026,.99977,1.00026,.99977,1.00026,.9993,.9998,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1,1.00016,.99977,.99959,.99977,.99959,.99977,.99959,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00026,.99998,1.00026,.8121,1.00026,.99998,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,1.00016,1.00022,1.00001,.99973,1.00001,1.00026,1,1.00026,1,1.00026,1,1.0006,.99973,.99977,.99973,1,.99982,1.00022,1.00026,1.00001,.99973,1.00026,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,1.00034,.99977,1,.99997,1.00026,1.00078,1.00036,.99973,1.00013,1.0006,.99977,.99977,.99988,.85148,1.00001,1.00026,.99977,1.00022,1.0006,.99977,1.00001,.99999,.99977,1.00069,1.00022,.99977,1.00001,.99984,1.00026,1.00001,1.00024,1.00001,.9999,1,1.0006,1.00001,1.00041,.99962,1.00026,1.0006,.99995,1.00041,.99942,.99973,.99927,1.00082,.99902,1.00026,1.00087,1.0006,1.00069,.99973,.99867,.99973,.9993,1.00026,1.00049,1.00056,1,.99988,.99935,.99995,.99954,1.00055,.99945,1.00032,1.0006,.99995,1.00026,.99995,1.00032,1.00001,1.00008,.99971,1.00019,.9994,1.00001,1.0006,1.00044,.99973,1.00023,1.00047,1,.99942,.99561,.99989,1.00035,.99977,1.00035,.99977,1.00019,.99944,1.00001,1.00021,.99926,1.00035,1.00035,.99942,1.00048,.99999,.99977,1.00022,1.00035,1.00001,.99977,1.00026,.99989,1.00057,1.00001,.99936,1.00052,1.00012,.99996,1.00043,1,1.00035,.9994,.99976,1.00035,.99973,1.00052,1.00041,1.00119,1.00037,.99973,1.00002,.99986,1.00041,1.00041,.99902,.9996,1.00034,.99999,1.00026,.99999,1.00026,.99973,1.00052,.99973,1,.99973,1.00041,1.00075,.9994,1.0003,.99999,1,1.00041,.99955,1,.99915,.99973,.99973,1.00026,1.00119,.99955,.99973,1.0006,.99911,1.0006,1.00026,.99972,1.00026,.99902,1.00041,.99973,.99999,1,1,1.00038,1.0005,1.00016,1.00022,1.00016,1.00022,1.00016,1.00022,1.00001,.99973,1,1,.99973,1,1,.99955,1.0006,1.0006,1.0006,1.0006,1,1,1,.99973,.99973,.99972,1,1,1.00106,.99999,.99998,.99998,.99999,.99998,1.66475,1,.99973,.99973,1.00023,.99973,.99971,1.00047,1.00023,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1,1,1,1,1,1,1,.99972,1,1.20985,1.39713,1.00003,1.00031,1.00015,1,.99561,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.99972,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1];t.HelveticaBoldMetrics={lineHeight:1.2,lineGap:.2};t.HelveticaBoldItalicFactors=[.76116,1,1,1.0006,.99998,.99974,.99973,.99973,.99982,.99977,1.00087,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,1.00003,1.00003,1.00003,1.00026,.9999,.99977,.99977,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,.99973,.99977,1.00026,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,.99998,1.0006,.99998,1.00003,.99973,.99998,.99973,1.00026,.99973,1.00026,.99973,.99998,1.00026,1.00026,1.0006,1.0006,.99973,1.0006,.99982,1.00026,1.00026,1.00026,1.00026,.99959,.99973,.99998,1.00026,.99973,1.00022,.99973,.99973,1,.99959,1.00077,.99959,1.00003,.99998,.99973,.99973,.99973,.99973,1.00077,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.99973,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,.99977,.99977,.99977,.99977,.99977,.99977,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,.99973,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.06409,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,1.00026,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,1.0044,.99977,1.00026,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,.99977,1.00026,.99977,1.00026,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99971,.99973,.99973,1.0006,.99977,.99973,.99973,1.00026,1.0006,1.00026,1.0006,1.00026,1.01011,1.00026,.99999,1.00026,1.0006,.99977,1.00026,.99977,1.00026,.99977,1.00026,.9993,.9998,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1,1.00016,.99977,.99959,.99977,.99959,.99977,.99959,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00026,.99998,1.00026,.8121,1.00026,.99998,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,1.00016,1.00022,1.00001,.99973,1.00001,1.00026,1,1.00026,1,1.00026,1,1.0006,.99973,.99977,.99973,1,.99982,1.00022,1.00026,1.00001,.99973,1.00026,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99977,1,1,1.00026,.99969,.99972,.99981,.9998,1.0006,.99977,.99977,1.00022,.91155,1.00001,1.00026,.99977,1.00022,1.0006,.99977,1.00001,.99999,.99977,.99966,1.00022,1.00032,1.00001,.99944,1.00026,1.00001,.99968,1.00001,1.00047,1,1.0006,1.00001,.99981,1.00101,1.00026,1.0006,.99948,.99981,1.00064,.99973,.99942,1.00101,1.00061,1.00026,1.00069,1.0006,1.00014,.99973,1.01322,.99973,1.00065,1.00026,1.00012,.99923,1,1.00064,1.00076,.99948,1.00055,1.00063,1.00007,.99943,1.0006,.99948,1.00026,.99948,.99943,1.00001,1.00001,1.00029,1.00038,1.00035,1.00001,1.0006,1.0006,.99973,.99978,1.00001,1.00057,.99989,.99967,.99964,.99967,.99977,.99999,.99977,1.00038,.99977,1.00001,.99973,1.00066,.99967,.99967,1.00041,.99998,.99999,.99977,1.00022,.99967,1.00001,.99977,1.00026,.99964,1.00031,1.00001,.99999,.99999,1,1.00023,1,1,.99999,1.00035,1.00001,.99999,.99973,.99977,.99999,1.00058,.99973,.99973,.99955,.9995,1.00026,1.00026,1.00032,.99989,1.00034,.99999,1.00026,1.00026,1.00026,.99973,.45998,.99973,1.00026,.99973,1.00001,.99999,.99982,.99994,.99996,1,1.00042,1.00044,1.00029,1.00023,.99973,.99973,1.00026,.99949,1.00002,.99973,1.0006,1.0006,1.0006,.99975,1.00026,1.00026,1.00032,.98685,.99973,1.00026,1,1,.99966,1.00044,1.00016,1.00022,1.00016,1.00022,1.00016,1.00022,1.00001,.99973,1,1,.99973,1,1,.99955,1.0006,1.0006,1.0006,1.0006,1,1,1,.99973,.99973,.99972,1,1,1.00106,.99999,.99998,.99998,.99999,.99998,1.66475,1,.99973,.99973,1,.99973,.99971,.99978,1,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1.00098,1,1,1,1.00049,1,1,.99972,1,1.20985,1.39713,1.00003,1.00031,1.00015,1,.99561,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.99972,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1];t.HelveticaBoldItalicMetrics={lineHeight:1.35,lineGap:.2};t.HelveticaItalicFactors=[.76116,1,1,1.0006,1.0006,1.00006,.99973,.99973,.99982,1.00001,1.00043,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.0006,1,1.00003,1.00003,1.00003,.99973,.99987,1.00001,1.00001,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,1,1.00001,.99973,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,1.0006,1.0006,1.0006,.99949,.99973,.99998,.99973,.99973,1,.99973,.99973,1.0006,.99973,.99973,.99924,.99924,1,.99924,.99999,.99973,.99973,.99973,.99973,.99998,1,1.0006,.99973,1,.99977,1,1,1,1.00005,1.0009,1.00005,1.00003,.99998,.99973,.99973,.99973,.99973,1.0009,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.9998,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,1,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.06409,1.00026,.99973,.99973,.99973,.99973,1,.99973,1,1.00001,.99973,1.00001,.99973,1.00001,.99973,.99977,1,.99977,1,.99977,1,.99977,1,.99977,1.0288,.99977,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,.99977,.99973,.99977,.99973,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99924,1.0006,1.0006,.99946,1.00034,1,.99924,1.00001,1,1,.99973,.99924,.99973,.99924,.99973,1.06311,.99973,1.00024,.99973,.99924,.99977,.99973,.99977,.99973,.99977,.99973,1.00041,.9998,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1,1.00016,.99977,.99998,.99977,.99998,.99977,.99998,1.00001,1,1.00001,1,1.00001,1,1.00001,1,1.00026,1.0006,1.00026,.89547,1.00026,1.0006,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,1.00016,.99977,1.00001,1,1.00001,1.00026,1,1.00026,1,1.00026,1,.99924,.99973,1.00001,.99973,1,.99982,1.00022,1.00026,1.00001,1,1.00026,1.0006,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,1.00001,1,1.00054,.99977,1.00084,1.00007,.99973,1.00013,.99924,1.00001,1.00001,.99945,.91221,1.00001,1.00026,.99977,1.00022,1.0006,1.00001,1.00001,.99999,.99977,.99933,1.00022,1.00054,1.00001,1.00065,1.00026,1.00001,1.0001,1.00001,1.00052,1,1.0006,1.00001,.99945,.99897,.99968,.99924,1.00036,.99945,.99949,1,1.0006,.99897,.99918,.99968,.99911,.99924,1,.99962,1.01487,1,1.0005,.99973,1.00012,1.00043,1,.99995,.99994,1.00036,.99947,1.00019,1.00063,1.00025,.99924,1.00036,.99973,1.00036,1.00025,1.00001,1.00001,1.00027,1.0001,1.00068,1.00001,1.0006,1.0006,1,1.00008,.99957,.99972,.9994,.99954,.99975,1.00051,1.00001,1.00019,1.00001,1.0001,.99986,1.00001,1.00001,1.00038,.99954,.99954,.9994,1.00066,.99999,.99977,1.00022,1.00054,1.00001,.99977,1.00026,.99975,1.0001,1.00001,.99993,.9995,.99955,1.00016,.99978,.99974,1.00019,1.00022,.99955,1.00053,.99973,1.00089,1.00005,.99967,1.00048,.99973,1.00002,1.00034,.99973,.99973,.99964,1.00006,1.00066,.99947,.99973,.98894,.99973,1,.44898,1,.99946,1,1.00039,1.00082,.99991,.99991,.99985,1.00022,1.00023,1.00061,1.00006,.99966,.99973,.99973,.99973,1.00019,1.0008,1,.99924,.99924,.99924,.99983,1.00044,.99973,.99964,.98332,1,.99973,1,1,.99962,.99895,1.00016,.99977,1.00016,.99977,1.00016,.99977,1.00001,1,1,1,.99973,1,1,.99955,.99924,.99924,.99924,.99924,.99998,.99998,.99998,.99973,.99973,.99972,1,1,1.00267,.99999,.99998,.99998,1,.99998,1.66475,1,.99973,.99973,1.00023,.99973,1.00423,.99925,.99999,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1.00049,1,1.00245,1,1,1,1,.96329,1,1.20985,1.39713,1.00003,.8254,1.00015,1,1.00035,1.00027,1.00031,1.00031,1.00003,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.95317,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1];t.HelveticaItalicMetrics={lineHeight:1.35,lineGap:.2};t.HelveticaRegularFactors=[.76116,1,1,1.0006,1.0006,1.00006,.99973,.99973,.99982,1.00001,1.00043,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.0006,1,1.00003,1.00003,1.00003,.99973,.99987,1.00001,1.00001,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,1,1.00001,.99973,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,1.0006,1.0006,1.0006,.99949,.99973,.99998,.99973,.99973,1,.99973,.99973,1.0006,.99973,.99973,.99924,.99924,1,.99924,.99999,.99973,.99973,.99973,.99973,.99998,1,1.0006,.99973,1,.99977,1,1,1,1.00005,1.0009,1.00005,1.00003,.99998,.99973,.99973,.99973,.99973,1.0009,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.9998,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,1,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.06409,1.00026,.99973,.99973,.99973,.99973,1,.99973,1,1.00001,.99973,1.00001,.99973,1.00001,.99973,.99977,1,.99977,1,.99977,1,.99977,1,.99977,1.04596,.99977,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,.99977,.99973,.99977,.99973,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99924,1.0006,1.0006,1.00019,1.00034,1,.99924,1.00001,1,1,.99973,.99924,.99973,.99924,.99973,1.02572,.99973,1.00005,.99973,.99924,.99977,.99973,.99977,.99973,.99977,.99973,.99999,.9998,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1,1.00016,.99977,.99998,.99977,.99998,.99977,.99998,1.00001,1,1.00001,1,1.00001,1,1.00001,1,1.00026,1.0006,1.00026,.84533,1.00026,1.0006,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,1.00016,.99977,1.00001,1,1.00001,1.00026,1,1.00026,1,1.00026,1,.99924,.99973,1.00001,.99973,1,.99982,1.00022,1.00026,1.00001,1,1.00026,1.0006,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99928,1,.99977,1.00013,1.00055,.99947,.99945,.99941,.99924,1.00001,1.00001,1.0004,.91621,1.00001,1.00026,.99977,1.00022,1.0006,1.00001,1.00005,.99999,.99977,1.00015,1.00022,.99977,1.00001,.99973,1.00026,1.00001,1.00019,1.00001,.99946,1,1.0006,1.00001,.99978,1.00045,.99973,.99924,1.00023,.99978,.99966,1,1.00065,1.00045,1.00019,.99973,.99973,.99924,1,1,.96499,1,1.00055,.99973,1.00008,1.00027,1,.9997,.99995,1.00023,.99933,1.00019,1.00015,1.00031,.99924,1.00023,.99973,1.00023,1.00031,1.00001,.99928,1.00029,1.00092,1.00035,1.00001,1.0006,1.0006,1,.99988,.99975,1,1.00082,.99561,.9996,1.00035,1.00001,.99962,1.00001,1.00092,.99964,1.00001,.99963,.99999,1.00035,1.00035,1.00082,.99962,.99999,.99977,1.00022,1.00035,1.00001,.99977,1.00026,.9996,.99967,1.00001,1.00034,1.00074,1.00054,1.00053,1.00063,.99971,.99962,1.00035,.99975,.99977,.99973,1.00043,.99953,1.0007,.99915,.99973,1.00008,.99892,1.00073,1.00073,1.00114,.99915,1.00073,.99955,.99973,1.00092,.99973,1,.99998,1,1.0003,1,1.00043,1.00001,.99969,1.0003,1,1.00035,1.00001,.9995,1,1.00092,.99973,.99973,.99973,1.0007,.9995,1,.99924,1.0006,.99924,.99972,1.00062,.99973,1.00114,1.00073,1,.99955,1,1,1.00047,.99968,1.00016,.99977,1.00016,.99977,1.00016,.99977,1.00001,1,1,1,.99973,1,1,.99955,.99924,.99924,.99924,.99924,.99998,.99998,.99998,.99973,.99973,.99972,1,1,1.00267,.99999,.99998,.99998,1,.99998,1.66475,1,.99973,.99973,1.00023,.99973,.99971,.99925,1.00023,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1,1,1,1,1,1,1,.96329,1,1.20985,1.39713,1.00003,.8254,1.00015,1,1.00035,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.95317,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.HelveticaRegularMetrics={lineHeight:1.2,lineGap:.2}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.LiberationSansRegularWidths=t.LiberationSansRegularMapping=t.LiberationSansItalicWidths=t.LiberationSansItalicMapping=t.LiberationSansBoldWidths=t.LiberationSansBoldMapping=t.LiberationSansBoldItalicWidths=t.LiberationSansBoldItalicMapping=void 0;t.LiberationSansBoldWidths=[365,0,333,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,333,556,556,556,556,280,556,333,737,370,556,584,737,552,400,549,333,333,333,576,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,549,611,611,611,611,611,556,611,556,722,556,722,556,722,556,722,556,722,556,722,556,722,556,722,719,722,611,667,556,667,556,667,556,667,556,667,556,778,611,778,611,778,611,778,611,722,611,722,611,278,278,278,278,278,278,278,278,278,278,785,556,556,278,722,556,556,611,278,611,278,611,385,611,479,611,278,722,611,722,611,722,611,708,723,611,778,611,778,611,778,611,1e3,944,722,389,722,389,722,389,667,556,667,556,667,556,667,556,611,333,611,479,611,333,722,611,722,611,722,611,722,611,722,611,722,611,944,778,667,556,667,611,500,611,500,611,500,278,556,722,556,1e3,889,778,611,667,556,611,333,333,333,333,333,333,333,333,333,333,333,465,722,333,853,906,474,825,927,838,278,722,722,601,719,667,611,722,778,278,722,667,833,722,644,778,722,667,600,611,667,821,667,809,802,278,667,615,451,611,278,582,615,610,556,606,475,460,611,541,278,558,556,612,556,445,611,766,619,520,684,446,582,715,576,753,845,278,582,611,582,845,667,669,885,567,711,667,278,276,556,1094,1062,875,610,722,622,719,722,719,722,567,712,667,904,626,719,719,610,702,833,722,778,719,667,722,611,622,854,667,730,703,1005,1019,870,979,719,711,1031,719,556,618,615,417,635,556,709,497,615,615,500,635,740,604,611,604,611,556,490,556,875,556,615,581,833,844,729,854,615,552,854,583,556,556,611,417,552,556,278,281,278,969,906,611,500,615,556,604,778,611,487,447,944,778,944,778,944,778,667,556,333,333,556,1e3,1e3,552,278,278,278,278,500,500,500,556,556,350,1e3,1e3,240,479,333,333,604,333,167,396,556,556,1094,556,885,489,1115,1e3,768,600,834,834,834,834,1e3,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,722,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,611,611,333,333,333,333,333,333,333,333,222,222,333,333,333,333,333,333,333,333];t.LiberationSansBoldMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1];t.LiberationSansBoldItalicWidths=[365,0,333,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,333,556,556,556,556,280,556,333,737,370,556,584,737,552,400,549,333,333,333,576,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,549,611,611,611,611,611,556,611,556,722,556,722,556,722,556,722,556,722,556,722,556,722,556,722,740,722,611,667,556,667,556,667,556,667,556,667,556,778,611,778,611,778,611,778,611,722,611,722,611,278,278,278,278,278,278,278,278,278,278,782,556,556,278,722,556,556,611,278,611,278,611,396,611,479,611,278,722,611,722,611,722,611,708,723,611,778,611,778,611,778,611,1e3,944,722,389,722,389,722,389,667,556,667,556,667,556,667,556,611,333,611,479,611,333,722,611,722,611,722,611,722,611,722,611,722,611,944,778,667,556,667,611,500,611,500,611,500,278,556,722,556,1e3,889,778,611,667,556,611,333,333,333,333,333,333,333,333,333,333,333,333,722,333,854,906,473,844,930,847,278,722,722,610,671,667,611,722,778,278,722,667,833,722,657,778,718,667,590,611,667,822,667,829,781,278,667,620,479,611,278,591,620,621,556,610,479,492,611,558,278,566,556,603,556,450,611,712,605,532,664,409,591,704,578,773,834,278,591,611,591,834,667,667,886,614,719,667,278,278,556,1094,1042,854,622,719,677,719,722,708,722,614,722,667,927,643,719,719,615,687,833,722,778,719,667,722,611,677,781,667,729,708,979,989,854,1e3,708,719,1042,729,556,619,604,534,618,556,736,510,611,611,507,622,740,604,611,611,611,556,889,556,885,556,646,583,889,935,707,854,594,552,865,589,556,556,611,469,563,556,278,278,278,969,906,611,507,619,556,611,778,611,575,467,944,778,944,778,944,778,667,556,333,333,556,1e3,1e3,552,278,278,278,278,500,500,500,556,556,350,1e3,1e3,240,479,333,333,604,333,167,396,556,556,1104,556,885,516,1146,1e3,768,600,834,834,834,834,999,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,722,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,611,611,333,333,333,333,333,333,333,333,222,222,333,333,333,333,333,333,333,333];t.LiberationSansBoldItalicMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1];t.LiberationSansItalicWidths=[365,0,333,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,333,556,556,556,556,260,556,333,737,370,556,584,737,552,400,549,333,333,333,576,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,549,611,556,556,556,556,500,556,500,667,556,667,556,667,556,722,500,722,500,722,500,722,500,722,625,722,556,667,556,667,556,667,556,667,556,667,556,778,556,778,556,778,556,778,556,722,556,722,556,278,278,278,278,278,278,278,222,278,278,733,444,500,222,667,500,500,556,222,556,222,556,281,556,400,556,222,722,556,722,556,722,556,615,723,556,778,556,778,556,778,556,1e3,944,722,333,722,333,722,333,667,500,667,500,667,500,667,500,611,278,611,354,611,278,722,556,722,556,722,556,722,556,722,556,722,556,944,722,667,500,667,611,500,611,500,611,500,222,556,667,556,1e3,889,778,611,667,500,611,278,333,333,333,333,333,333,333,333,333,333,333,667,278,789,846,389,794,865,775,222,667,667,570,671,667,611,722,778,278,667,667,833,722,648,778,725,667,600,611,667,837,667,831,761,278,667,570,439,555,222,550,570,571,500,556,439,463,555,542,222,500,492,548,500,447,556,670,573,486,603,374,550,652,546,728,779,222,550,556,550,779,667,667,843,544,708,667,278,278,500,1066,982,844,589,715,639,724,667,651,667,544,704,667,917,614,715,715,589,686,833,722,778,725,667,722,611,639,795,667,727,673,920,923,805,886,651,694,1022,682,556,562,522,493,553,556,688,465,556,556,472,564,686,550,556,556,556,500,833,500,835,500,572,518,830,851,621,736,526,492,752,534,556,556,556,378,496,500,222,222,222,910,828,556,472,565,500,556,778,556,492,339,944,722,944,722,944,722,667,500,333,333,556,1e3,1e3,552,222,222,222,222,333,333,333,556,556,350,1e3,1e3,188,354,333,333,500,333,167,365,556,556,1094,556,885,323,1083,1e3,768,600,834,834,834,834,1e3,500,998,500,1e3,500,500,494,612,823,713,584,549,713,979,719,274,549,549,584,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,500,500,333,333,333,333,333,333,333,333,222,222,294,294,324,324,316,328,398,285];t.LiberationSansItalicMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1];t.LiberationSansRegularWidths=[365,0,333,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,333,556,556,556,556,260,556,333,737,370,556,584,737,552,400,549,333,333,333,576,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,549,611,556,556,556,556,500,556,500,667,556,667,556,667,556,722,500,722,500,722,500,722,500,722,615,722,556,667,556,667,556,667,556,667,556,667,556,778,556,778,556,778,556,778,556,722,556,722,556,278,278,278,278,278,278,278,222,278,278,735,444,500,222,667,500,500,556,222,556,222,556,292,556,334,556,222,722,556,722,556,722,556,604,723,556,778,556,778,556,778,556,1e3,944,722,333,722,333,722,333,667,500,667,500,667,500,667,500,611,278,611,375,611,278,722,556,722,556,722,556,722,556,722,556,722,556,944,722,667,500,667,611,500,611,500,611,500,222,556,667,556,1e3,889,778,611,667,500,611,278,333,333,333,333,333,333,333,333,333,333,333,667,278,784,838,384,774,855,752,222,667,667,551,668,667,611,722,778,278,667,668,833,722,650,778,722,667,618,611,667,798,667,835,748,278,667,578,446,556,222,547,578,575,500,557,446,441,556,556,222,500,500,576,500,448,556,690,569,482,617,395,547,648,525,713,781,222,547,556,547,781,667,667,865,542,719,667,278,278,500,1057,1010,854,583,722,635,719,667,656,667,542,677,667,923,604,719,719,583,656,833,722,778,719,667,722,611,635,760,667,740,667,917,938,792,885,656,719,1010,722,556,573,531,365,583,556,669,458,559,559,438,583,688,552,556,542,556,500,458,500,823,500,573,521,802,823,625,719,521,510,750,542,556,556,556,365,510,500,222,278,222,906,812,556,438,559,500,552,778,556,489,411,944,722,944,722,944,722,667,500,333,333,556,1e3,1e3,552,222,222,222,222,333,333,333,556,556,350,1e3,1e3,188,354,333,333,500,333,167,365,556,556,1094,556,885,323,1073,1e3,768,600,834,834,834,834,1e3,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,719,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,500,500,333,333,333,333,333,333,333,333,222,222,294,294,324,324,316,328,398,285];t.LiberationSansRegularMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.MyriadProRegularMetrics=t.MyriadProRegularFactors=t.MyriadProItalicMetrics=t.MyriadProItalicFactors=t.MyriadProBoldMetrics=t.MyriadProBoldItalicMetrics=t.MyriadProBoldItalicFactors=t.MyriadProBoldFactors=void 0;t.MyriadProBoldFactors=[1.36898,1,1,.72706,.80479,.83734,.98894,.99793,.9897,.93884,.86209,.94292,.94292,1.16661,1.02058,.93582,.96694,.93582,1.19137,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.78076,.78076,1.02058,1.02058,1.02058,.72851,.78966,.90838,.83637,.82391,.96376,.80061,.86275,.8768,.95407,1.0258,.73901,.85022,.83655,1.0156,.95546,.92179,.87107,.92179,.82114,.8096,.89713,.94438,.95353,.94083,.91905,.90406,.9446,.94292,1.18777,.94292,1.02058,.89903,.90088,.94938,.97898,.81093,.97571,.94938,1.024,.9577,.95933,.98621,1.0474,.97455,.98981,.9672,.95933,.9446,.97898,.97407,.97646,.78036,1.10208,.95442,.95298,.97579,.9332,.94039,.938,.80687,1.01149,.80687,1.02058,.80479,.99793,.99793,.99793,.99793,1.01149,1.00872,.90088,.91882,1.0213,.8361,1.02058,.62295,.54324,.89022,1.08595,1,1,.90088,1,.97455,.93582,.90088,1,1.05686,.8361,.99642,.99642,.99642,.72851,.90838,.90838,.90838,.90838,.90838,.90838,.868,.82391,.80061,.80061,.80061,.80061,1.0258,1.0258,1.0258,1.0258,.97484,.95546,.92179,.92179,.92179,.92179,.92179,1.02058,.92179,.94438,.94438,.94438,.94438,.90406,.86958,.98225,.94938,.94938,.94938,.94938,.94938,.94938,.9031,.81093,.94938,.94938,.94938,.94938,.98621,.98621,.98621,.98621,.93969,.95933,.9446,.9446,.9446,.9446,.9446,1.08595,.9446,.95442,.95442,.95442,.95442,.94039,.97898,.94039,.90838,.94938,.90838,.94938,.90838,.94938,.82391,.81093,.82391,.81093,.82391,.81093,.82391,.81093,.96376,.84313,.97484,.97571,.80061,.94938,.80061,.94938,.80061,.94938,.80061,.94938,.80061,.94938,.8768,.9577,.8768,.9577,.8768,.9577,1,1,.95407,.95933,.97069,.95933,1.0258,.98621,1.0258,.98621,1.0258,.98621,1.0258,.98621,1.0258,.98621,.887,1.01591,.73901,1.0474,1,1,.97455,.83655,.98981,1,1,.83655,.73977,.83655,.73903,.84638,1.033,.95546,.95933,1,1,.95546,.95933,.8271,.95417,.95933,.92179,.9446,.92179,.9446,.92179,.9446,.936,.91964,.82114,.97646,1,1,.82114,.97646,.8096,.78036,.8096,.78036,1,1,.8096,.78036,1,1,.89713,.77452,.89713,1.10208,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94083,.97579,.90406,.94039,.90406,.9446,.938,.9446,.938,.9446,.938,1,.99793,.90838,.94938,.868,.9031,.92179,.9446,1,1,.89713,1.10208,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90989,.9358,.91945,.83181,.75261,.87992,.82976,.96034,.83689,.97268,1.0078,.90838,.83637,.8019,.90157,.80061,.9446,.95407,.92436,1.0258,.85022,.97153,1.0156,.95546,.89192,.92179,.92361,.87107,.96318,.89713,.93704,.95638,.91905,.91709,.92796,1.0258,.93704,.94836,1.0373,.95933,1.0078,.95871,.94836,.96174,.92601,.9498,.98607,.95776,.95933,1.05453,1.0078,.98275,.9314,.95617,.91701,1.05993,.9446,.78367,.9553,1,.86832,1.0128,.95871,.99394,.87548,.96361,.86774,1.0078,.95871,.9446,.95871,.86774,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.94083,.97579,.94083,.97579,.94083,.97579,.90406,.94039,.96694,1,.89903,1,1,1,.93582,.93582,.93582,1,.908,.908,.918,.94219,.94219,.96544,1,1.285,1,1,.81079,.81079,1,1,.74854,1,1,1,1,.99793,1,1,1,.65,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.17173,1,.80535,.76169,1.02058,1.0732,1.05486,1,1,1.30692,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.16161,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.MyriadProBoldMetrics={lineHeight:1.2,lineGap:.2};t.MyriadProBoldItalicFactors=[1.36898,1,1,.66227,.80779,.81625,.97276,.97276,.97733,.92222,.83266,.94292,.94292,1.16148,1.02058,.93582,.96694,.93582,1.17337,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.78076,.78076,1.02058,1.02058,1.02058,.71541,.76813,.85576,.80591,.80729,.94299,.77512,.83655,.86523,.92222,.98621,.71743,.81698,.79726,.98558,.92222,.90637,.83809,.90637,.80729,.76463,.86275,.90699,.91605,.9154,.85308,.85458,.90531,.94292,1.21296,.94292,1.02058,.89903,1.18616,.99613,.91677,.78216,.91677,.90083,.98796,.9135,.92168,.95381,.98981,.95298,.95381,.93459,.92168,.91513,.92004,.91677,.95077,.748,1.04502,.91677,.92061,.94236,.89544,.89364,.9,.80687,.8578,.80687,1.02058,.80779,.97276,.97276,.97276,.97276,.8578,.99973,1.18616,.91339,1.08074,.82891,1.02058,.55509,.71526,.89022,1.08595,1,1,1.18616,1,.96736,.93582,1.18616,1,1.04864,.82711,.99043,.99043,.99043,.71541,.85576,.85576,.85576,.85576,.85576,.85576,.845,.80729,.77512,.77512,.77512,.77512,.98621,.98621,.98621,.98621,.95961,.92222,.90637,.90637,.90637,.90637,.90637,1.02058,.90251,.90699,.90699,.90699,.90699,.85458,.83659,.94951,.99613,.99613,.99613,.99613,.99613,.99613,.85811,.78216,.90083,.90083,.90083,.90083,.95381,.95381,.95381,.95381,.9135,.92168,.91513,.91513,.91513,.91513,.91513,1.08595,.91677,.91677,.91677,.91677,.91677,.89364,.92332,.89364,.85576,.99613,.85576,.99613,.85576,.99613,.80729,.78216,.80729,.78216,.80729,.78216,.80729,.78216,.94299,.76783,.95961,.91677,.77512,.90083,.77512,.90083,.77512,.90083,.77512,.90083,.77512,.90083,.86523,.9135,.86523,.9135,.86523,.9135,1,1,.92222,.92168,.92222,.92168,.98621,.95381,.98621,.95381,.98621,.95381,.98621,.95381,.98621,.95381,.86036,.97096,.71743,.98981,1,1,.95298,.79726,.95381,1,1,.79726,.6894,.79726,.74321,.81691,1.0006,.92222,.92168,1,1,.92222,.92168,.79464,.92098,.92168,.90637,.91513,.90637,.91513,.90637,.91513,.909,.87514,.80729,.95077,1,1,.80729,.95077,.76463,.748,.76463,.748,1,1,.76463,.748,1,1,.86275,.72651,.86275,1.04502,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.9154,.94236,.85458,.89364,.85458,.90531,.9,.90531,.9,.90531,.9,1,.97276,.85576,.99613,.845,.85811,.90251,.91677,1,1,.86275,1.04502,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.00899,1.30628,.85576,.80178,.66862,.7927,.69323,.88127,.72459,.89711,.95381,.85576,.80591,.7805,.94729,.77512,.90531,.92222,.90637,.98621,.81698,.92655,.98558,.92222,.85359,.90637,.90976,.83809,.94523,.86275,.83509,.93157,.85308,.83392,.92346,.98621,.83509,.92886,.91324,.92168,.95381,.90646,.92886,.90557,.86847,.90276,.91324,.86842,.92168,.99531,.95381,.9224,.85408,.92699,.86847,1.0051,.91513,.80487,.93481,1,.88159,1.05214,.90646,.97355,.81539,.89398,.85923,.95381,.90646,.91513,.90646,.85923,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.9154,.94236,.9154,.94236,.9154,.94236,.85458,.89364,.96694,1,.89903,1,1,1,.91782,.91782,.91782,1,.896,.896,.896,.9332,.9332,.95973,1,1.26,1,1,.80479,.80178,1,1,.85633,1,1,1,1,.97276,1,1,1,.698,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.14542,1,.79199,.78694,1.02058,1.03493,1.05486,1,1,1.23026,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.20006,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.MyriadProBoldItalicMetrics={lineHeight:1.2,lineGap:.2};t.MyriadProItalicFactors=[1.36898,1,1,.65507,.84943,.85639,.88465,.88465,.86936,.88307,.86948,.85283,.85283,1.06383,1.02058,.75945,.9219,.75945,1.17337,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.75945,.75945,1.02058,1.02058,1.02058,.69046,.70926,.85158,.77812,.76852,.89591,.70466,.76125,.80094,.86822,.83864,.728,.77212,.79475,.93637,.87514,.8588,.76013,.8588,.72421,.69866,.77598,.85991,.80811,.87832,.78112,.77512,.8562,1.0222,1.18417,1.0222,1.27014,.89903,1.15012,.93859,.94399,.846,.94399,.81453,1.0186,.94219,.96017,1.03075,1.02175,.912,1.03075,.96998,.96017,.93859,.94399,.94399,.95493,.746,1.12658,.94578,.91,.979,.882,.882,.83,.85034,.83537,.85034,1.02058,.70869,.88465,.88465,.88465,.88465,.83537,.90083,1.15012,.9161,.94565,.73541,1.02058,.53609,.69353,.79519,1.08595,1,1,1.15012,1,.91974,.75945,1.15012,1,.9446,.73361,.9005,.9005,.9005,.62864,.85158,.85158,.85158,.85158,.85158,.85158,.773,.76852,.70466,.70466,.70466,.70466,.83864,.83864,.83864,.83864,.90561,.87514,.8588,.8588,.8588,.8588,.8588,1.02058,.85751,.85991,.85991,.85991,.85991,.77512,.76013,.88075,.93859,.93859,.93859,.93859,.93859,.93859,.8075,.846,.81453,.81453,.81453,.81453,.82424,.82424,.82424,.82424,.9278,.96017,.93859,.93859,.93859,.93859,.93859,1.08595,.8562,.94578,.94578,.94578,.94578,.882,.94578,.882,.85158,.93859,.85158,.93859,.85158,.93859,.76852,.846,.76852,.846,.76852,.846,.76852,.846,.89591,.8544,.90561,.94399,.70466,.81453,.70466,.81453,.70466,.81453,.70466,.81453,.70466,.81453,.80094,.94219,.80094,.94219,.80094,.94219,1,1,.86822,.96017,.86822,.96017,.83864,.82424,.83864,.82424,.83864,.82424,.83864,1.03075,.83864,.82424,.81402,1.02738,.728,1.02175,1,1,.912,.79475,1.03075,1,1,.79475,.83911,.79475,.66266,.80553,1.06676,.87514,.96017,1,1,.87514,.96017,.86865,.87396,.96017,.8588,.93859,.8588,.93859,.8588,.93859,.867,.84759,.72421,.95493,1,1,.72421,.95493,.69866,.746,.69866,.746,1,1,.69866,.746,1,1,.77598,.88417,.77598,1.12658,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.87832,.979,.77512,.882,.77512,.8562,.83,.8562,.83,.8562,.83,1,.88465,.85158,.93859,.773,.8075,.85751,.8562,1,1,.77598,1.12658,1.15012,1.15012,1.15012,1.15012,1.15012,1.15313,1.15012,1.15012,1.15012,1.08106,1.03901,.85158,.77025,.62264,.7646,.65351,.86026,.69461,.89947,1.03075,.85158,.77812,.76449,.88836,.70466,.8562,.86822,.8588,.83864,.77212,.85308,.93637,.87514,.82352,.8588,.85701,.76013,.89058,.77598,.8156,.82565,.78112,.77899,.89386,.83864,.8156,.9486,.92388,.96186,1.03075,.91123,.9486,.93298,.878,.93942,.92388,.84596,.96186,.95119,1.03075,.922,.88787,.95829,.88,.93559,.93859,.78815,.93758,1,.89217,1.03737,.91123,.93969,.77487,.85769,.86799,1.03075,.91123,.93859,.91123,.86799,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.87832,.979,.87832,.979,.87832,.979,.77512,.882,.9219,1,.89903,1,1,1,.87321,.87321,.87321,1,1.027,1.027,1.027,.86847,.86847,.79121,1,1.124,1,1,.73572,.73572,1,1,.85034,1,1,1,1,.88465,1,1,1,.669,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.04828,1,.74948,.75187,1.02058,.98391,1.02119,1,1,1.06233,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.05233,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.MyriadProItalicMetrics={lineHeight:1.2,lineGap:.2};t.MyriadProRegularFactors=[1.36898,1,1,.76305,.82784,.94935,.89364,.92241,.89073,.90706,.98472,.85283,.85283,1.0664,1.02058,.74505,.9219,.74505,1.23456,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.74505,.74505,1.02058,1.02058,1.02058,.73002,.72601,.91755,.8126,.80314,.92222,.73764,.79726,.83051,.90284,.86023,.74,.8126,.84869,.96518,.91115,.8858,.79761,.8858,.74498,.73914,.81363,.89591,.83659,.89633,.85608,.8111,.90531,1.0222,1.22736,1.0222,1.27014,.89903,.90088,.86667,1.0231,.896,1.01411,.90083,1.05099,1.00512,.99793,1.05326,1.09377,.938,1.06226,1.00119,.99793,.98714,1.0231,1.01231,.98196,.792,1.19137,.99074,.962,1.01915,.926,.942,.856,.85034,.92006,.85034,1.02058,.69067,.92241,.92241,.92241,.92241,.92006,.9332,.90088,.91882,.93484,.75339,1.02058,.56866,.54324,.79519,1.08595,1,1,.90088,1,.95325,.74505,.90088,1,.97198,.75339,.91009,.91009,.91009,.66466,.91755,.91755,.91755,.91755,.91755,.91755,.788,.80314,.73764,.73764,.73764,.73764,.86023,.86023,.86023,.86023,.92915,.91115,.8858,.8858,.8858,.8858,.8858,1.02058,.8858,.89591,.89591,.89591,.89591,.8111,.79611,.89713,.86667,.86667,.86667,.86667,.86667,.86667,.86936,.896,.90083,.90083,.90083,.90083,.84224,.84224,.84224,.84224,.97276,.99793,.98714,.98714,.98714,.98714,.98714,1.08595,.89876,.99074,.99074,.99074,.99074,.942,1.0231,.942,.91755,.86667,.91755,.86667,.91755,.86667,.80314,.896,.80314,.896,.80314,.896,.80314,.896,.92222,.93372,.92915,1.01411,.73764,.90083,.73764,.90083,.73764,.90083,.73764,.90083,.73764,.90083,.83051,1.00512,.83051,1.00512,.83051,1.00512,1,1,.90284,.99793,.90976,.99793,.86023,.84224,.86023,.84224,.86023,.84224,.86023,1.05326,.86023,.84224,.82873,1.07469,.74,1.09377,1,1,.938,.84869,1.06226,1,1,.84869,.83704,.84869,.81441,.85588,1.08927,.91115,.99793,1,1,.91115,.99793,.91887,.90991,.99793,.8858,.98714,.8858,.98714,.8858,.98714,.894,.91434,.74498,.98196,1,1,.74498,.98196,.73914,.792,.73914,.792,1,1,.73914,.792,1,1,.81363,.904,.81363,1.19137,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89633,1.01915,.8111,.942,.8111,.90531,.856,.90531,.856,.90531,.856,1,.92241,.91755,.86667,.788,.86936,.8858,.89876,1,1,.81363,1.19137,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90388,1.03901,.92138,.78105,.7154,.86169,.80513,.94007,.82528,.98612,1.06226,.91755,.8126,.81884,.92819,.73764,.90531,.90284,.8858,.86023,.8126,.91172,.96518,.91115,.83089,.8858,.87791,.79761,.89297,.81363,.88157,.89992,.85608,.81992,.94307,.86023,.88157,.95308,.98699,.99793,1.06226,.95817,.95308,.97358,.928,.98088,.98699,.92761,.99793,.96017,1.06226,.986,.944,.95978,.938,.96705,.98714,.80442,.98972,1,.89762,1.04552,.95817,.99007,.87064,.91879,.88888,1.06226,.95817,.98714,.95817,.88888,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.89633,1.01915,.89633,1.01915,.89633,1.01915,.8111,.942,.9219,1,.89903,1,1,1,.93173,.93173,.93173,1,1.06304,1.06304,1.06904,.89903,.89903,.80549,1,1.156,1,1,.76575,.76575,1,1,.72458,1,1,1,1,.92241,1,1,1,.619,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.07257,1,.74705,.71119,1.02058,1.024,1.02119,1,1,1.1536,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.05638,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.MyriadProRegularMetrics={lineHeight:1.2,lineGap:.2}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.SegoeuiRegularMetrics=t.SegoeuiRegularFactors=t.SegoeuiItalicMetrics=t.SegoeuiItalicFactors=t.SegoeuiBoldMetrics=t.SegoeuiBoldItalicMetrics=t.SegoeuiBoldItalicFactors=t.SegoeuiBoldFactors=void 0;t.SegoeuiBoldFactors=[1.76738,1,1,.99297,.9824,1.04016,1.06497,1.03424,.97529,1.17647,1.23203,1.1085,1.1085,1.16939,1.2107,.9754,1.21408,.9754,1.59578,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,.81378,.81378,1.2107,1.2107,1.2107,.71703,.97847,.97363,.88776,.8641,1.02096,.79795,.85132,.914,1.06085,1.1406,.8007,.89858,.83693,1.14889,1.09398,.97489,.92094,.97489,.90399,.84041,.95923,1.00135,1,1.06467,.98243,.90996,.99361,1.1085,1.56942,1.1085,1.2107,.74627,.94282,.96752,1.01519,.86304,1.01359,.97278,1.15103,1.01359,.98561,1.02285,1.02285,1.00527,1.02285,1.0302,.99041,1.0008,1.01519,1.01359,1.02258,.79104,1.16862,.99041,.97454,1.02511,.99298,.96752,.95801,.94856,1.16579,.94856,1.2107,.9824,1.03424,1.03424,1,1.03424,1.16579,.8727,1.3871,1.18622,1.10818,1.04478,1.2107,1.18622,.75155,.94994,1.28826,1.21408,1.21408,.91056,1,.91572,.9754,.64663,1.18328,1.24866,1.04478,1.14169,1.15749,1.17389,.71703,.97363,.97363,.97363,.97363,.97363,.97363,.93506,.8641,.79795,.79795,.79795,.79795,1.1406,1.1406,1.1406,1.1406,1.02096,1.09398,.97426,.97426,.97426,.97426,.97426,1.2107,.97489,1.00135,1.00135,1.00135,1.00135,.90996,.92094,1.02798,.96752,.96752,.96752,.96752,.96752,.96752,.93136,.86304,.97278,.97278,.97278,.97278,1.02285,1.02285,1.02285,1.02285,.97122,.99041,1,1,1,1,1,1.28826,1.0008,.99041,.99041,.99041,.99041,.96752,1.01519,.96752,.97363,.96752,.97363,.96752,.97363,.96752,.8641,.86304,.8641,.86304,.8641,.86304,.8641,.86304,1.02096,1.03057,1.02096,1.03517,.79795,.97278,.79795,.97278,.79795,.97278,.79795,.97278,.79795,.97278,.914,1.01359,.914,1.01359,.914,1.01359,1,1,1.06085,.98561,1.06085,1.00879,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,.97138,1.08692,.8007,1.02285,1,1,1.00527,.83693,1.02285,1,1,.83693,.9455,.83693,.90418,.83693,1.13005,1.09398,.99041,1,1,1.09398,.99041,.96692,1.09251,.99041,.97489,1.0008,.97489,1.0008,.97489,1.0008,.93994,.97931,.90399,1.02258,1,1,.90399,1.02258,.84041,.79104,.84041,.79104,.84041,.79104,.84041,.79104,1,1,.95923,1.07034,.95923,1.16862,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.06467,1.02511,.90996,.96752,.90996,.99361,.95801,.99361,.95801,.99361,.95801,1.07733,1.03424,.97363,.96752,.93506,.93136,.97489,1.0008,1,1,.95923,1.16862,1.15103,1.15103,1.01173,1.03959,.75953,.81378,.79912,1.15103,1.21994,.95161,.87815,1.01149,.81525,.7676,.98167,1.01134,1.02546,.84097,1.03089,1.18102,.97363,.88776,.85134,.97826,.79795,.99361,1.06085,.97489,1.1406,.89858,1.0388,1.14889,1.09398,.86039,.97489,1.0595,.92094,.94793,.95923,.90996,.99346,.98243,1.02112,.95493,1.1406,.90996,1.03574,1.02597,1.0008,1.18102,1.06628,1.03574,1.0192,1.01932,1.00886,.97531,1.0106,1.0008,1.13189,1.18102,1.02277,.98683,1.0016,.99561,1.07237,1.0008,.90434,.99921,.93803,.8965,1.23085,1.06628,1.04983,.96268,1.0499,.98439,1.18102,1.06628,1.0008,1.06628,.98439,.79795,1,1,1,1,1,1,1,1,1,1,1,1,1.09466,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.97278,1,1,1,1,1,1,1,1,1,1,1,1,1.02065,1,1,1,1,1,1,1.06467,1.02511,1.06467,1.02511,1.06467,1.02511,.90996,.96752,1,1.21408,.89903,1,1,.75155,1.04394,1.04394,1.04394,1.04394,.98633,.98633,.98633,.73047,.73047,1.20642,.91211,1.25635,1.222,1.02956,1.03372,1.03372,.96039,1.24633,1,1.12454,.93503,1.03424,1.19687,1.03424,1,1,1,.771,1,1,1.15749,1.15749,1.15749,1.10948,.86279,.94434,.86279,.94434,.86182,1,1,1.16897,1,.96085,.90137,1.2107,1.18416,1.13973,.69825,.9716,2.10339,1.29004,1.29004,1.21172,1.29004,1.29004,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18874,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.09193,1.09193,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.SegoeuiBoldMetrics={lineHeight:1.33008,lineGap:0};t.SegoeuiBoldItalicFactors=[1.76738,1,1,.98946,1.03959,1.04016,1.02809,1.036,.97639,1.10953,1.23203,1.11144,1.11144,1.16939,1.21237,.9754,1.21261,.9754,1.59754,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,.81378,.81378,1.21237,1.21237,1.21237,.73541,.97847,.97363,.89723,.87897,1.0426,.79429,.85292,.91149,1.05815,1.1406,.79631,.90128,.83853,1.04396,1.10615,.97552,.94436,.97552,.88641,.80527,.96083,1.00135,1,1.06777,.9817,.91142,.99361,1.11144,1.57293,1.11144,1.21237,.74627,1.31818,1.06585,.97042,.83055,.97042,.93503,1.1261,.97042,.97922,1.14236,.94552,1.01054,1.14236,1.02471,.97922,.94165,.97042,.97042,1.0276,.78929,1.1261,.97922,.95874,1.02197,.98507,.96752,.97168,.95107,1.16579,.95107,1.21237,1.03959,1.036,1.036,1,1.036,1.16579,.87357,1.31818,1.18754,1.26781,1.05356,1.21237,1.18622,.79487,.94994,1.29004,1.24047,1.24047,1.31818,1,.91484,.9754,1.31818,1.1349,1.24866,1.05356,1.13934,1.15574,1.17389,.73541,.97363,.97363,.97363,.97363,.97363,.97363,.94385,.87897,.79429,.79429,.79429,.79429,1.1406,1.1406,1.1406,1.1406,1.0426,1.10615,.97552,.97552,.97552,.97552,.97552,1.21237,.97552,1.00135,1.00135,1.00135,1.00135,.91142,.94436,.98721,1.06585,1.06585,1.06585,1.06585,1.06585,1.06585,.96705,.83055,.93503,.93503,.93503,.93503,1.14236,1.14236,1.14236,1.14236,.93125,.97922,.94165,.94165,.94165,.94165,.94165,1.29004,.94165,.97922,.97922,.97922,.97922,.96752,.97042,.96752,.97363,1.06585,.97363,1.06585,.97363,1.06585,.87897,.83055,.87897,.83055,.87897,.83055,.87897,.83055,1.0426,1.0033,1.0426,.97042,.79429,.93503,.79429,.93503,.79429,.93503,.79429,.93503,.79429,.93503,.91149,.97042,.91149,.97042,.91149,.97042,1,1,1.05815,.97922,1.05815,.97922,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,.97441,1.04302,.79631,1.01582,1,1,1.01054,.83853,1.14236,1,1,.83853,1.09125,.83853,.90418,.83853,1.19508,1.10615,.97922,1,1,1.10615,.97922,1.01034,1.10466,.97922,.97552,.94165,.97552,.94165,.97552,.94165,.91602,.91981,.88641,1.0276,1,1,.88641,1.0276,.80527,.78929,.80527,.78929,.80527,.78929,.80527,.78929,1,1,.96083,1.05403,.95923,1.16862,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.06777,1.02197,.91142,.96752,.91142,.99361,.97168,.99361,.97168,.99361,.97168,1.23199,1.036,.97363,1.06585,.94385,.96705,.97552,.94165,1,1,.96083,1.1261,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,.95161,1.27126,1.00811,.83284,.77702,.99137,.95253,1.0347,.86142,1.07205,1.14236,.97363,.89723,.86869,1.09818,.79429,.99361,1.05815,.97552,1.1406,.90128,1.06662,1.04396,1.10615,.84918,.97552,1.04694,.94436,.98015,.96083,.91142,1.00356,.9817,1.01945,.98999,1.1406,.91142,1.04961,.9898,1.00639,1.14236,1.07514,1.04961,.99607,1.02897,1.008,.9898,.95134,1.00639,1.11121,1.14236,1.00518,.97981,1.02186,1,1.08578,.94165,.99314,.98387,.93028,.93377,1.35125,1.07514,1.10687,.93491,1.04232,1.00351,1.14236,1.07514,.94165,1.07514,1.00351,.79429,1,1,1,1,1,1,1,1,1,1,1,1,1.09097,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.93503,1,1,1,1,1,1,1,1,1,1,1,1,.96609,1,1,1,1,1,1,1.06777,1.02197,1.06777,1.02197,1.06777,1.02197,.91142,.96752,1,1.21261,.89903,1,1,.75155,1.04745,1.04745,1.04745,1.04394,.98633,.98633,.98633,.72959,.72959,1.20502,.91406,1.26514,1.222,1.02956,1.03372,1.03372,.96039,1.24633,1,1.09125,.93327,1.03336,1.16541,1.036,1,1,1,.771,1,1,1.15574,1.15574,1.15574,1.15574,.86364,.94434,.86279,.94434,.86224,1,1,1.16798,1,.96085,.90068,1.21237,1.18416,1.13904,.69825,.9716,2.10339,1.29004,1.29004,1.21339,1.29004,1.29004,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18775,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.13269,1.13269,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.SegoeuiBoldItalicMetrics={lineHeight:1.33008,lineGap:0};t.SegoeuiItalicFactors=[1.76738,1,1,.98946,1.14763,1.05365,1.06234,.96927,.92586,1.15373,1.18414,.91349,.91349,1.07403,1.17308,.78383,1.20088,.78383,1.42531,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.78383,.78383,1.17308,1.17308,1.17308,.77349,.94565,.94729,.85944,.88506,.9858,.74817,.80016,.88449,.98039,.95782,.69238,.89898,.83231,.98183,1.03989,.96924,.86237,.96924,.80595,.74524,.86091,.95402,.94143,.98448,.8858,.83089,.93285,1.0949,1.39016,1.0949,1.45994,.74627,1.04839,.97454,.97454,.87207,.97454,.87533,1.06151,.97454,1.00176,1.16484,1.08132,.98047,1.16484,1.02989,1.01054,.96225,.97454,.97454,1.06598,.79004,1.16344,1.00351,.94629,.9973,.91016,.96777,.9043,.91082,.92481,.91082,1.17308,.95748,.96927,.96927,1,.96927,.92481,.80597,1.04839,1.23393,1.1781,.9245,1.17308,1.20808,.63218,.94261,1.24822,1.09971,1.09971,1.04839,1,.85273,.78032,1.04839,1.09971,1.22326,.9245,1.09836,1.13525,1.15222,.70424,.94729,.94729,.94729,.94729,.94729,.94729,.85498,.88506,.74817,.74817,.74817,.74817,.95782,.95782,.95782,.95782,.9858,1.03989,.96924,.96924,.96924,.96924,.96924,1.17308,.96924,.95402,.95402,.95402,.95402,.83089,.86237,.88409,.97454,.97454,.97454,.97454,.97454,.97454,.92916,.87207,.87533,.87533,.87533,.87533,.93146,.93146,.93146,.93146,.93854,1.01054,.96225,.96225,.96225,.96225,.96225,1.24822,.8761,1.00351,1.00351,1.00351,1.00351,.96777,.97454,.96777,.94729,.97454,.94729,.97454,.94729,.97454,.88506,.87207,.88506,.87207,.88506,.87207,.88506,.87207,.9858,.95391,.9858,.97454,.74817,.87533,.74817,.87533,.74817,.87533,.74817,.87533,.74817,.87533,.88449,.97454,.88449,.97454,.88449,.97454,1,1,.98039,1.00176,.98039,1.00176,.95782,.93146,.95782,.93146,.95782,.93146,.95782,1.16484,.95782,.93146,.84421,1.12761,.69238,1.08132,1,1,.98047,.83231,1.16484,1,1,.84723,1.04861,.84723,.78755,.83231,1.23736,1.03989,1.01054,1,1,1.03989,1.01054,.9857,1.03849,1.01054,.96924,.96225,.96924,.96225,.96924,.96225,.92383,.90171,.80595,1.06598,1,1,.80595,1.06598,.74524,.79004,.74524,.79004,.74524,.79004,.74524,.79004,1,1,.86091,1.02759,.85771,1.16344,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.98448,.9973,.83089,.96777,.83089,.93285,.9043,.93285,.9043,.93285,.9043,1.31868,.96927,.94729,.97454,.85498,.92916,.96924,.8761,1,1,.86091,1.16344,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,.81965,.81965,.94729,.78032,.71022,.90883,.84171,.99877,.77596,1.05734,1.2,.94729,.85944,.82791,.9607,.74817,.93285,.98039,.96924,.95782,.89898,.98316,.98183,1.03989,.78614,.96924,.97642,.86237,.86075,.86091,.83089,.90082,.8858,.97296,1.01284,.95782,.83089,1.0976,1.04,1.03342,1.2,1.0675,1.0976,.98205,1.03809,1.05097,1.04,.95364,1.03342,1.05401,1.2,1.02148,1.0119,1.04724,1.0127,1.02732,.96225,.8965,.97783,.93574,.94818,1.30679,1.0675,1.11826,.99821,1.0557,1.0326,1.2,1.0675,.96225,1.0675,1.0326,.74817,1,1,1,1,1,1,1,1,1,1,1,1,1.03754,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.87533,1,1,1,1,1,1,1,1,1,1,1,1,.98705,1,1,1,1,1,1,.98448,.9973,.98448,.9973,.98448,.9973,.83089,.96777,1,1.20088,.89903,1,1,.75155,.94945,.94945,.94945,.94945,1.12317,1.12317,1.12317,.67603,.67603,1.15621,.73584,1.21191,1.22135,1.06483,.94868,.94868,.95996,1.24633,1,1.07497,.87709,.96927,1.01473,.96927,1,1,1,.77295,1,1,1.09836,1.09836,1.09836,1.01522,.86321,.94434,.8649,.94434,.86182,1,1,1.083,1,.91578,.86438,1.17308,1.18416,1.14589,.69825,.97622,1.96791,1.24822,1.24822,1.17308,1.24822,1.24822,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.17984,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.10742,1.10742,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];t.SegoeuiItalicMetrics={lineHeight:1.33008,lineGap:0};t.SegoeuiRegularFactors=[1.76738,1,1,.98594,1.02285,1.10454,1.06234,.96927,.92037,1.19985,1.2046,.90616,.90616,1.07152,1.1714,.78032,1.20088,.78032,1.40246,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.78032,.78032,1.1714,1.1714,1.1714,.80597,.94084,.96706,.85944,.85734,.97093,.75842,.79936,.88198,.9831,.95782,.71387,.86969,.84636,1.07796,1.03584,.96924,.83968,.96924,.82826,.79649,.85771,.95132,.93119,.98965,.88433,.8287,.93365,1.08612,1.3638,1.08612,1.45786,.74627,.80499,.91484,1.05707,.92383,1.05882,.9403,1.12654,1.05882,1.01756,1.09011,1.09011,.99414,1.09011,1.034,1.01756,1.05356,1.05707,1.05882,1.04399,.84863,1.21968,1.01756,.95801,1.00068,.91797,.96777,.9043,.90351,.92105,.90351,1.1714,.85337,.96927,.96927,.99912,.96927,.92105,.80597,1.2434,1.20808,1.05937,.90957,1.1714,1.20808,.75155,.94261,1.24644,1.09971,1.09971,.84751,1,.85273,.78032,.61584,1.05425,1.17914,.90957,1.08665,1.11593,1.14169,.73381,.96706,.96706,.96706,.96706,.96706,.96706,.86035,.85734,.75842,.75842,.75842,.75842,.95782,.95782,.95782,.95782,.97093,1.03584,.96924,.96924,.96924,.96924,.96924,1.1714,.96924,.95132,.95132,.95132,.95132,.8287,.83968,.89049,.91484,.91484,.91484,.91484,.91484,.91484,.93575,.92383,.9403,.9403,.9403,.9403,.8717,.8717,.8717,.8717,1.00527,1.01756,1.05356,1.05356,1.05356,1.05356,1.05356,1.24644,.95923,1.01756,1.01756,1.01756,1.01756,.96777,1.05707,.96777,.96706,.91484,.96706,.91484,.96706,.91484,.85734,.92383,.85734,.92383,.85734,.92383,.85734,.92383,.97093,1.0969,.97093,1.05882,.75842,.9403,.75842,.9403,.75842,.9403,.75842,.9403,.75842,.9403,.88198,1.05882,.88198,1.05882,.88198,1.05882,1,1,.9831,1.01756,.9831,1.01756,.95782,.8717,.95782,.8717,.95782,.8717,.95782,1.09011,.95782,.8717,.84784,1.11551,.71387,1.09011,1,1,.99414,.84636,1.09011,1,1,.84636,1.0536,.84636,.94298,.84636,1.23297,1.03584,1.01756,1,1,1.03584,1.01756,1.00323,1.03444,1.01756,.96924,1.05356,.96924,1.05356,.96924,1.05356,.93066,.98293,.82826,1.04399,1,1,.82826,1.04399,.79649,.84863,.79649,.84863,.79649,.84863,.79649,.84863,1,1,.85771,1.17318,.85771,1.21968,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.98965,1.00068,.8287,.96777,.8287,.93365,.9043,.93365,.9043,.93365,.9043,1.08571,.96927,.96706,.91484,.86035,.93575,.96924,.95923,1,1,.85771,1.21968,1.11437,1.11437,.93109,.91202,.60411,.84164,.55572,1.01173,.97361,.81818,.81818,.96635,.78032,.72727,.92366,.98601,1.03405,.77968,1.09799,1.2,.96706,.85944,.85638,.96491,.75842,.93365,.9831,.96924,.95782,.86969,.94152,1.07796,1.03584,.78437,.96924,.98715,.83968,.83491,.85771,.8287,.94492,.88433,.9287,1.0098,.95782,.8287,1.0625,.98248,1.03424,1.2,1.01071,1.0625,.95246,1.03809,1.04912,.98248,1.00221,1.03424,1.05443,1.2,1.04785,.99609,1.00169,1.05176,.99346,1.05356,.9087,1.03004,.95542,.93117,1.23362,1.01071,1.07831,1.02512,1.05205,1.03502,1.2,1.01071,1.05356,1.01071,1.03502,.75842,1,1,1,1,1,1,1,1,1,1,1,1,1.03719,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.9403,1,1,1,1,1,1,1,1,1,1,1,1,1.04021,1,1,1,1,1,1,.98965,1.00068,.98965,1.00068,.98965,1.00068,.8287,.96777,1,1.20088,.89903,1,1,.75155,1.03077,1.03077,1.03077,1.03077,1.13196,1.13196,1.13196,.67428,.67428,1.16039,.73291,1.20996,1.22135,1.06483,.94868,.94868,.95996,1.24633,1,1.07497,.87796,.96927,1.01518,.96927,1,1,1,.77295,1,1,1.10539,1.10539,1.11358,1.06967,.86279,.94434,.86279,.94434,.86182,1,1,1.083,1,.91578,.86507,1.1714,1.18416,1.14589,.69825,.97622,1.9697,1.24822,1.24822,1.17238,1.24822,1.24822,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18083,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.10938,1.10938,1,1,1,1.05425,1.09971,1.09971,1.09971,1,1,1,1,1,1,1,1,1,1,1];t.SegoeuiRegularMetrics={lineHeight:1.33008,lineGap:0}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.PostScriptEvaluator=t.PostScriptCompiler=t.PDFFunctionFactory=void 0;t.isPDFFunction=function isPDFFunction(e){let t;if(e instanceof r.Dict)t=e;else{if(!(e instanceof s.BaseStream))return!1;t=e.dict}return t.has("FunctionType")};var r=a(4),n=a(2),i=a(58),s=a(5),o=a(59);t.PDFFunctionFactory=class PDFFunctionFactory{constructor({xref:e,isEvalSupported:t=!0}){this.xref=e;this.isEvalSupported=!1!==t}create(e){const t=this.getCached(e);if(t)return t;const a=PDFFunction.parse({xref:this.xref,isEvalSupported:this.isEvalSupported,fn:e instanceof r.Ref?this.xref.fetch(e):e});this._cache(e,a);return a}createFromArray(e){const t=this.getCached(e);if(t)return t;const a=PDFFunction.parseArray({xref:this.xref,isEvalSupported:this.isEvalSupported,fnObj:e instanceof r.Ref?this.xref.fetch(e):e});this._cache(e,a);return a}getCached(e){let t;e instanceof r.Ref?t=e:e instanceof r.Dict?t=e.objId:e instanceof s.BaseStream&&(t=e.dict?.objId);if(t){const e=this._localFunctionCache.getByRef(t);if(e)return e}return null}_cache(e,t){if(!t)throw new Error('PDFFunctionFactory._cache - expected "parsedFunction" argument.');let a;e instanceof r.Ref?a=e:e instanceof r.Dict?a=e.objId:e instanceof s.BaseStream&&(a=e.dict?.objId);a&&this._localFunctionCache.set(null,a,t)}get _localFunctionCache(){return(0,n.shadow)(this,"_localFunctionCache",new o.LocalFunctionCache)}};function toNumberArray(e){if(!Array.isArray(e))return null;const t=e.length;for(let a=0;a>c)*h;l&=(1<a?e=a:e0&&(d=s[u-1]);let f=r[1];u>1,u=s.length>>1,d=new PostScriptEvaluator(l),f=Object.create(null);let g=8192;const p=new Float32Array(u);return function constructPostScriptFn(e,t,a,r){let n,i,s="";const c=p;for(n=0;ne&&(i=e)}m[n]=i}if(g>0){g--;f[s]=m}a.set(m,r)}}}class PostScriptStack{static MAX_STACK_SIZE=100;constructor(e){this.stack=e?Array.from(e):[]}push(e){if(this.stack.length>=PostScriptStack.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");this.stack.push(e)}pop(){if(this.stack.length<=0)throw new Error("PostScript function stack underflow.");return this.stack.pop()}copy(e){if(this.stack.length+e>=PostScriptStack.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");const t=this.stack;for(let a=t.length-e,r=e-1;r>=0;r--,a++)t.push(t[a])}index(e){this.push(this.stack[this.stack.length-e-1])}roll(e,t){const a=this.stack,r=a.length-e,n=a.length-1,i=r+(t-Math.floor(t/e)*e);for(let e=r,t=n;e0?t.push(o<>c);break;case"ceiling":o=t.pop();t.push(Math.ceil(o));break;case"copy":o=t.pop();t.copy(o);break;case"cos":o=t.pop();t.push(Math.cos(o%360/180*Math.PI));break;case"cvi":o=0|t.pop();t.push(o);break;case"cvr":break;case"div":c=t.pop();o=t.pop();t.push(o/c);break;case"dup":t.copy(1);break;case"eq":c=t.pop();o=t.pop();t.push(o===c);break;case"exch":t.roll(2,1);break;case"exp":c=t.pop();o=t.pop();t.push(o**c);break;case"false":t.push(!1);break;case"floor":o=t.pop();t.push(Math.floor(o));break;case"ge":c=t.pop();o=t.pop();t.push(o>=c);break;case"gt":c=t.pop();o=t.pop();t.push(o>c);break;case"idiv":c=t.pop();o=t.pop();t.push(o/c|0);break;case"index":o=t.pop();t.index(o);break;case"le":c=t.pop();o=t.pop();t.push(o<=c);break;case"ln":o=t.pop();t.push(Math.log(o));break;case"log":o=t.pop();t.push(Math.log10(o));break;case"lt":c=t.pop();o=t.pop();t.push(o=t?new AstLiteral(t):e.max<=t?e:new AstMin(e,t)}class PostScriptCompiler{compile(e,t,a){const r=[],n=[],i=t.length>>1,s=a.length>>1;let o,c,l,h,u,d,f,g,p=0;for(let e=0;et.min){o.unshift("Math.max(",i,", ");o.push(")")}if(s{Object.defineProperty(t,"__esModule",{value:!0});t.PostScriptParser=t.PostScriptLexer=void 0;var r=a(2),n=a(4),i=a(3);t.PostScriptParser=class PostScriptParser{constructor(e){this.lexer=e;this.operators=[];this.token=null;this.prev=null}nextToken(){this.prev=this.token;this.token=this.lexer.getToken()}accept(e){if(this.token.type===e){this.nextToken();return!0}return!1}expect(e){if(this.accept(e))return!0;throw new r.FormatError(`Unexpected symbol: found ${this.token.type} expected ${e}.`)}parse(){this.nextToken();this.expect(s.LBRACE);this.parseBlock();this.expect(s.RBRACE);return this.operators}parseBlock(){for(;;)if(this.accept(s.NUMBER))this.operators.push(this.prev.value);else if(this.accept(s.OPERATOR))this.operators.push(this.prev.value);else{if(!this.accept(s.LBRACE))return;this.parseCondition()}}parseCondition(){const e=this.operators.length;this.operators.push(null,null);this.parseBlock();this.expect(s.RBRACE);if(this.accept(s.IF)){this.operators[e]=this.operators.length;this.operators[e+1]="jz"}else{if(!this.accept(s.LBRACE))throw new r.FormatError("PS Function: error parsing conditional.");{const t=this.operators.length;this.operators.push(null,null);const a=this.operators.length;this.parseBlock();this.expect(s.RBRACE);this.expect(s.IFELSE);this.operators[t]=this.operators.length;this.operators[t+1]="j";this.operators[e]=a;this.operators[e+1]="jz"}}}};const s={LBRACE:0,RBRACE:1,NUMBER:2,OPERATOR:3,IF:4,IFELSE:5};class PostScriptToken{static get opCache(){return(0,r.shadow)(this,"opCache",Object.create(null))}constructor(e,t){this.type=e;this.value=t}static getOperator(e){return PostScriptToken.opCache[e]||=new PostScriptToken(s.OPERATOR,e)}static get LBRACE(){return(0,r.shadow)(this,"LBRACE",new PostScriptToken(s.LBRACE,"{"))}static get RBRACE(){return(0,r.shadow)(this,"RBRACE",new PostScriptToken(s.RBRACE,"}"))}static get IF(){return(0,r.shadow)(this,"IF",new PostScriptToken(s.IF,"IF"))}static get IFELSE(){return(0,r.shadow)(this,"IFELSE",new PostScriptToken(s.IFELSE,"IFELSE"))}}t.PostScriptLexer=class PostScriptLexer{constructor(e){this.stream=e;this.nextChar();this.strBuf=[]}nextChar(){return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(t<0)return n.EOF;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!(0,i.isWhiteSpace)(t))break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return new PostScriptToken(s.NUMBER,this.getNumber());case 123:this.nextChar();return PostScriptToken.LBRACE;case 125:this.nextChar();return PostScriptToken.RBRACE}const a=this.strBuf;a.length=0;a[0]=String.fromCharCode(t);for(;(t=this.nextChar())>=0&&(t>=65&&t<=90||t>=97&&t<=122);)a.push(String.fromCharCode(t));const r=a.join("");switch(r.toLowerCase()){case"if":return PostScriptToken.IF;case"ifelse":return PostScriptToken.IFELSE;default:return PostScriptToken.getOperator(r)}}getNumber(){let e=this.currentChar;const t=this.strBuf;t.length=0;t[0]=String.fromCharCode(e);for(;(e=this.nextChar())>=0&&(e>=48&&e<=57||45===e||46===e);)t.push(String.fromCharCode(e));const a=parseFloat(t.join(""));if(isNaN(a))throw new r.FormatError(`Invalid floating point number: ${a}`);return a}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.RegionalImageCache=t.LocalTilingPatternCache=t.LocalImageCache=t.LocalGStateCache=t.LocalFunctionCache=t.LocalColorSpaceCache=t.GlobalImageCache=void 0;var r=a(2),n=a(4);class BaseLocalCache{constructor(e){this.constructor===BaseLocalCache&&(0,r.unreachable)("Cannot initialize BaseLocalCache.");this._onlyRefs=!0===e?.onlyRefs;if(!this._onlyRefs){this._nameRefMap=new Map;this._imageMap=new Map}this._imageCache=new n.RefSetCache}getByName(e){this._onlyRefs&&(0,r.unreachable)("Should not call `getByName` method.");const t=this._nameRefMap.get(e);return t?this.getByRef(t):this._imageMap.get(e)||null}getByRef(e){return this._imageCache.get(e)||null}set(e,t,a){(0,r.unreachable)("Abstract method `set` called.")}}t.LocalImageCache=class LocalImageCache extends BaseLocalCache{set(e,t=null,a){if("string"!=typeof e)throw new Error('LocalImageCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}};t.LocalColorSpaceCache=class LocalColorSpaceCache extends BaseLocalCache{set(e=null,t=null,a){if("string"!=typeof e&&!t)throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.');if(t){if(this._imageCache.has(t))return;null!==e&&this._nameRefMap.set(e,t);this._imageCache.put(t,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}};t.LocalFunctionCache=class LocalFunctionCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('LocalFunctionCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}};t.LocalGStateCache=class LocalGStateCache extends BaseLocalCache{set(e,t=null,a){if("string"!=typeof e)throw new Error('LocalGStateCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}};t.LocalTilingPatternCache=class LocalTilingPatternCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('LocalTilingPatternCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}};t.RegionalImageCache=class RegionalImageCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('RegionalImageCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}};class GlobalImageCache{static NUM_PAGES_THRESHOLD=2;static MIN_IMAGES_TO_CACHE=10;static MAX_BYTE_SIZE=5*r.MAX_IMAGE_SIZE_TO_CACHE;constructor(){this._refCache=new n.RefSetCache;this._imageCache=new n.RefSetCache}get _byteSize(){let e=0;for(const t of this._imageCache)e+=t.byteSize;return e}get _cacheLimitReached(){return!(this._imageCache.size{Object.defineProperty(t,"__esModule",{value:!0});t.bidi=function bidi(e,t=-1,a=!1){let c=!0;const l=e.length;if(0===l||a)return createBidiText(e,c,a);s.length=l;o.length=l;let h,u,d=0;for(h=0;h4){c=!0;t=0}else{c=!1;t=1}const f=[];for(h=0;h=0&&"ET"===o[e];--e)o[e]="EN";for(let e=h+1;e0&&(t=o[h-1]);let a=m;e+1w&&isOdd(w)&&(x=w)}for(w=S;w>=x;--w){let e=-1;for(h=0,u=f.length;h=0){reverseValues(s,e,h);e=-1}}else e<0&&(e=h);e>=0&&reverseValues(s,e,f.length)}for(h=0,u=s.length;h"!==e||(s[h]="")}return createBidiText(s.join(""),c)};var r=a(2);const n=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],i=["AN","AN","AN","AN","AN","AN","ON","ON","AL","ET","ET","AL","CS","AL","ON","ON","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","AN","AN","AN","AN","AN","AN","AN","AN","AN","ET","AN","AN","AL","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","ON","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","NSM","NSM","ON","NSM","NSM","NSM","NSM","AL","AL","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","AL","AL","AL","AL","AL","AL"];function isOdd(e){return 0!=(1&e)}function isEven(e){return 0==(1&e)}function findUnequal(e,t,a){let r,n;for(r=t,n=e.length;r{Object.defineProperty(t,"__esModule",{value:!0});t.getFontSubstitution=function getFontSubstitution(e,t,a,u,d){const f=u=(0,r.normalizeFontName)(u);let g=e.get(f);if(g)return g;let p=l.get(u);if(!p)for(const[e,t]of h)if(u.startsWith(e)){u=`${t}${u.substring(e.length)}`;p=l.get(u);break}let m=!1;if(!p){p=l.get(d);m=!0}const b=`${t.getDocId()}_s${t.createFontId()}`;if(!p){if(!(0,n.validateFontName)(u)){e.set(f,null);return null}const t=/bold/gi.test(u),a=/oblique|italic/gi.test(u);g={css:b,guessFallback:!0,loadedName:b,baseFontName:u,src:`local(${u})`,style:t&&a&&c||t&&s||a&&o||i};e.set(f,g);return g}const y=[];m&&(0,n.validateFontName)(u)&&y.push(`local(${u})`);const{style:w,ultimate:S}=generateFont(p,y,a),x=null===S;g={css:`${b}${x?"":`,${S}`}`,guessFallback:x,loadedName:b,baseFontName:u,src:y.join(","),style:w};e.set(f,g);return g};var r=a(38),n=a(3);const i={style:"normal",weight:"normal"},s={style:"normal",weight:"bold"},o={style:"italic",weight:"normal"},c={style:"italic",weight:"bold"},l=new Map([["Times-Roman",{local:["Times New Roman","Times-Roman","Times","Liberation Serif","Nimbus Roman","Nimbus Roman L","Tinos","Thorndale","TeX Gyre Termes","FreeSerif","DejaVu Serif","Bitstream Vera Serif","Ubuntu"],style:i,ultimate:"serif"}],["Times-Bold",{alias:"Times-Roman",style:s,ultimate:"serif"}],["Times-Italic",{alias:"Times-Roman",style:o,ultimate:"serif"}],["Times-BoldItalic",{alias:"Times-Roman",style:c,ultimate:"serif"}],["Helvetica",{local:["Helvetica","Helvetica Neue","Arial","Arial Nova","Liberation Sans","Arimo","Nimbus Sans","Nimbus Sans L","A030","TeX Gyre Heros","FreeSans","DejaVu Sans","Albany","Bitstream Vera Sans","Arial Unicode MS","Microsoft Sans Serif","Apple Symbols","Cantarell"],path:"LiberationSans-Regular.ttf",style:i,ultimate:"sans-serif"}],["Helvetica-Bold",{alias:"Helvetica",path:"LiberationSans-Bold.ttf",style:s,ultimate:"sans-serif"}],["Helvetica-Oblique",{alias:"Helvetica",path:"LiberationSans-Italic.ttf",style:o,ultimate:"sans-serif"}],["Helvetica-BoldOblique",{alias:"Helvetica",path:"LiberationSans-BoldItalic.ttf",style:c,ultimate:"sans-serif"}],["Courier",{local:["Courier","Courier New","Liberation Mono","Nimbus Mono","Nimbus Mono L","Cousine","Cumberland","TeX Gyre Cursor","FreeMono"],style:i,ultimate:"monospace"}],["Courier-Bold",{alias:"Courier",style:s,ultimate:"monospace"}],["Courier-Oblique",{alias:"Courier",style:o,ultimate:"monospace"}],["Courier-BoldOblique",{alias:"Courier",style:c,ultimate:"monospace"}],["ArialBlack",{local:["Arial Black"],style:{style:"normal",weight:"900"},fallback:"Helvetica-Bold"}],["ArialBlack-Bold",{alias:"ArialBlack"}],["ArialBlack-Italic",{alias:"ArialBlack",style:{style:"italic",weight:"900"},fallback:"Helvetica-BoldOblique"}],["ArialBlack-BoldItalic",{alias:"ArialBlack-Italic"}],["ArialNarrow",{local:["Arial Narrow","Liberation Sans Narrow","Helvetica Condensed","Nimbus Sans Narrow","TeX Gyre Heros Cn"],style:i,fallback:"Helvetica"}],["ArialNarrow-Bold",{alias:"ArialNarrow",style:s,fallback:"Helvetica-Bold"}],["ArialNarrow-Italic",{alias:"ArialNarrow",style:o,fallback:"Helvetica-Oblique"}],["ArialNarrow-BoldItalic",{alias:"ArialNarrow",style:c,fallback:"Helvetica-BoldOblique"}],["Calibri",{local:["Calibri","Carlito"],style:i,fallback:"Helvetica"}],["Calibri-Bold",{alias:"Calibri",style:s,fallback:"Helvetica-Bold"}],["Calibri-Italic",{alias:"Calibri",style:o,fallback:"Helvetica-Oblique"}],["Calibri-BoldItalic",{alias:"Calibri",style:c,fallback:"Helvetica-BoldOblique"}],["Wingdings",{local:["Wingdings","URW Dingbats"],style:i}],["Wingdings-Regular",{alias:"Wingdings"}],["Wingdings-Bold",{alias:"Wingdings"}]]),h=new Map([["Arial-Black","ArialBlack"]]);function generateFont({alias:e,local:t,path:a,fallback:r,style:n,ultimate:i},h,u,d=!0,f=!0,g=""){const p={style:null,ultimate:null};if(t){const e=g?` ${g}`:"";for(const a of t)h.push(`local(${a}${e})`)}if(e){const t=l.get(e),i=g||function getStyleToAppend(e){switch(e){case s:return"Bold";case o:return"Italic";case c:return"Bold Italic";default:if("bold"===e?.weight)return"Bold";if("italic"===e?.style)return"Italic"}return""}(n);Object.assign(p,generateFont(t,h,u,d&&!r,f&&!a,i))}n&&(p.style=n);i&&(p.ultimate=i);if(d&&r){const e=l.get(r),{ultimate:t}=generateFont(e,h,u,d,f&&!a,g);p.ultimate||=t}f&&a&&u&&h.push(`url(${u}${a})`);return p}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ImageResizer=void 0;var r=a(2);class ImageResizer{constructor(e,t){this._imgData=e;this._isMask=t}static needsToBeResized(e,t){if(e<=this._goodSquareLength&&t<=this._goodSquareLength)return!1;const{MAX_DIM:a}=this;if(e>a||t>a)return!0;const r=e*t;if(this._hasMaxArea)return r>this.MAX_AREA;if(r(this.MAX_AREA=this._goodSquareLength**2)}static get MAX_DIM(){return(0,r.shadow)(this,"MAX_DIM",this._guessMax(2048,65537,0,1))}static get MAX_AREA(){this._hasMaxArea=!0;return(0,r.shadow)(this,"MAX_AREA",this._guessMax(ImageResizer._goodSquareLength,this.MAX_DIM,128,0)**2)}static set MAX_AREA(e){if(e>=0){this._hasMaxArea=!0;(0,r.shadow)(this,"MAX_AREA",e)}}static setMaxArea(e){this._hasMaxArea||(this.MAX_AREA=e>>2)}static _areGoodDims(e,t){try{const a=new OffscreenCanvas(e,t),r=a.getContext("2d");r.fillRect(0,0,1,1);const n=r.getImageData(0,0,1,1).data[3];a.width=a.height=1;return 0!==n}catch{return!1}}static _guessMax(e,t,a,r){for(;e+a+1>3,r=a+3&-4;if(a!==r){const e=new Uint8Array(r*t);let n=0;for(let s=0,o=t*a;s{Object.defineProperty(t,"__esModule",{value:!0});t.MurmurHash3_64=void 0;var r=a(2);const n=3285377520,i=4294901760,s=65535;t.MurmurHash3_64=class MurmurHash3_64{constructor(e){this.h1=e?4294967295&e:n;this.h2=e?4294967295&e:n}update(e){let t,a;if("string"==typeof e){t=new Uint8Array(2*e.length);a=0;for(let r=0,n=e.length;r>>8;t[a++]=255&n}}}else{if(!(0,r.isArrayBuffer)(e))throw new Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");t=e.slice();a=t.byteLength}const n=a>>2,o=a-4*n,c=new Uint32Array(t.buffer,0,n);let l=0,h=0,u=this.h1,d=this.h2;const f=3432918353,g=461845907,p=11601,m=13715;for(let e=0;e>>17;l=l*g&i|l*m&s;u^=l;u=u<<13|u>>>19;u=5*u+3864292196}else{h=c[e];h=h*f&i|h*p&s;h=h<<15|h>>>17;h=h*g&i|h*m&s;d^=h;d=d<<13|d>>>19;d=5*d+3864292196}l=0;switch(o){case 3:l^=t[4*n+2]<<16;case 2:l^=t[4*n+1]<<8;case 1:l^=t[4*n];l=l*f&i|l*p&s;l=l<<15|l>>>17;l=l*g&i|l*m&s;1&n?u^=l:d^=l}this.h1=u;this.h2=d}hexdigest(){let e=this.h1,t=this.h2;e^=t>>>1;e=3981806797*e&i|36045*e&s;t=4283543511*t&i|(2950163797*(t<<16|e>>>16)&i)>>>16;e^=t>>>1;e=444984403*e&i|60499*e&s;t=3301882366*t&i|(3120437893*(t<<16|e>>>16)&i)>>>16;e^=t>>>1;return(e>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.OperatorList=void 0;var r=a(2);function addState(e,t,a,r,n){let i=e;for(let e=0,a=t.length-1;e1e3){h=Math.max(h,f);g+=d+2;f=0;d=0}u.push({transform:t,x:f,y:g,w:a.width,h:a.height});f+=a.width+2;d=Math.max(d,a.height)}const p=Math.max(h,f)+1,m=g+d+1,b=new Uint8Array(p*m*4),y=p<<2;for(let e=0;e=0;){t[i-4]=t[i];t[i-3]=t[i+1];t[i-2]=t[i+2];t[i-1]=t[i+3];t[i+a]=t[i+a-4];t[i+a+1]=t[i+a-3];t[i+a+2]=t[i+a-2];t[i+a+3]=t[i+a-1];i-=y}}const w={width:p,height:m};if(e.isOffscreenCanvasSupported){const e=new OffscreenCanvas(p,m);e.getContext("2d").putImageData(new ImageData(new Uint8ClampedArray(b.buffer),p,m),0,0);w.bitmap=e.transferToImageBitmap();w.data=null}else{w.kind=r.ImageKind.RGBA_32BPP;w.data=b}a.splice(s,4*l,r.OPS.paintInlineImageXObjectGroup);n.splice(s,4*l,[w,u]);return s+1}));addState(n,[r.OPS.save,r.OPS.transform,r.OPS.paintImageMaskXObject,r.OPS.restore],null,(function iterateImageMaskGroup(e,t){const a=e.fnArray,n=(t-(e.iCurr-3))%4;switch(n){case 0:return a[t]===r.OPS.save;case 1:return a[t]===r.OPS.transform;case 2:return a[t]===r.OPS.paintImageMaskXObject;case 3:return a[t]===r.OPS.restore}throw new Error(`iterateImageMaskGroup - invalid pos: ${n}`)}),(function foundImageMaskGroup(e,t){const a=e.fnArray,n=e.argsArray,i=e.iCurr,s=i-3,o=i-2,c=i-1;let l=Math.floor((t-s)/4);if(l<10)return t-(t-s)%4;let h,u,d=!1;const f=n[c][0],g=n[o][0],p=n[o][1],m=n[o][2],b=n[o][3];if(p===m){d=!0;h=o+4;let e=c+4;for(let t=1;t=4&&a[i-4]===a[s]&&a[i-3]===a[o]&&a[i-2]===a[c]&&a[i-1]===a[l]&&r[i-4][0]===h&&r[i-4][1]===u){d++;f-=5}let g=f+4;for(let e=1;e=a)break}r=(r||n)[e[t]];if(r&&!Array.isArray(r)){s.iCurr=t;t++;if(!r.checkFn||(0,r.checkFn)(s)){i=r;r=null}else r=null}else t++}this.state=r;this.match=i;this.lastProcessed=t}flush(){for(;this.match;){const e=this.queue.fnArray.length;this.lastProcessed=(0,this.match.processFn)(this.context,e);this.match=null;this.state=null;this._optimize()}}reset(){this.state=null;this.match=null;this.lastProcessed=0}}class OperatorList{static CHUNK_SIZE=1e3;static CHUNK_SIZE_ABOUT=this.CHUNK_SIZE-5;constructor(e=0,t){this._streamSink=t;this.fnArray=[];this.argsArray=[];this.optimizer=!t||e&r.RenderingIntentFlag.OPLIST?new NullOptimizer(this):new QueueOptimizer(this);this.dependencies=new Set;this._totalLength=0;this.weight=0;this._resolved=t?null:Promise.resolve()}set isOffscreenCanvasSupported(e){this.optimizer.isOffscreenCanvasSupported=e}get length(){return this.argsArray.length}get ready(){return this._resolved||this._streamSink.ready}get totalLength(){return this._totalLength+this.length}addOp(e,t){this.optimizer.push(e,t);this.weight++;this._streamSink&&(this.weight>=OperatorList.CHUNK_SIZE||this.weight>=OperatorList.CHUNK_SIZE_ABOUT&&(e===r.OPS.restore||e===r.OPS.endText))&&this.flush()}addImageOps(e,t,a){void 0!==a&&this.addOp(r.OPS.beginMarkedContentProps,["OC",a]);this.addOp(e,t);void 0!==a&&this.addOp(r.OPS.endMarkedContent,[])}addDependency(e){if(!this.dependencies.has(e)){this.dependencies.add(e);this.addOp(r.OPS.dependency,[e])}}addDependencies(e){for(const t of e)this.addDependency(t)}addOpList(e){if(e instanceof OperatorList){for(const t of e.dependencies)this.dependencies.add(t);for(let t=0,a=e.length;t{Object.defineProperty(t,"__esModule",{value:!0});t.PDFImage=void 0;var r=a(2),n=a(28),i=a(5),s=a(12),o=a(18),c=a(62),l=a(26),h=a(30),u=a(4);function decodeAndClamp(e,t,a,r){(e=t+e*a)<0?e=0:e>r&&(e=r);return e}function resizeImageMask(e,t,a,r,n,i){const s=n*i;let o;o=t<=8?new Uint8Array(s):t<=16?new Uint16Array(s):new Uint32Array(s);const c=a/n,l=r/i;let h,u,d,f,g=0;const p=new Uint16Array(n),m=a;for(h=0;h0&&Number.isInteger(a.height)&&a.height>0&&(a.width!==b||a.height!==y)){(0,r.warn)("PDFImage - using the Width/Height of the image data, rather than the image dictionary.");b=a.width;y=a.height}if(b<1||y<1)throw new r.FormatError(`Invalid image width: ${b} or height: ${y}`);this.width=b;this.height=y;this.interpolate=g.get("I","Interpolate");this.imageMask=g.get("IM","ImageMask")||!1;this.matte=g.get("Matte")||!1;let w=a.bitsPerComponent;if(!w){w=g.get("BPC","BitsPerComponent");if(!w){if(!this.imageMask)throw new r.FormatError(`Bits per component missing in image: ${this.imageMask}`);w=1}}this.bpc=w;if(!this.imageMask){let i=g.getRaw("CS")||g.getRaw("ColorSpace");if(!i){(0,r.info)("JPX images (which do not require color spaces)");switch(a.numComps){case 1:i=u.Name.get("DeviceGray");break;case 3:i=u.Name.get("DeviceRGB");break;case 4:i=u.Name.get("DeviceCMYK");break;default:throw new Error(`JPX images with ${a.numComps} color components not supported.`)}}this.colorSpace=s.ColorSpace.parse({cs:i,xref:e,resources:n?t:null,pdfFunctionFactory:d,localColorSpaceCache:f});this.numComps=this.colorSpace.numComps}this.decode=g.getArray("D","Decode");this.needsDecode=!1;if(this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode,w)||l&&!s.ColorSpace.isDefaultDecode(this.decode,1))){this.needsDecode=!0;const e=(1<>3)*a,o=e.byteLength;let c,l;if(!r||n&&!(s===o))if(n){c=new Uint8Array(s);c.set(e);c.fill(255,o)}else c=new Uint8Array(e);else c=e;if(n)for(l=0;l>7&1;s[d+1]=u>>6&1;s[d+2]=u>>5&1;s[d+3]=u>>4&1;s[d+4]=u>>3&1;s[d+5]=u>>2&1;s[d+6]=u>>1&1;s[d+7]=1&u;d+=8}if(d>=1}}}}else{let a=0;u=0;for(d=0,h=i;d>r;n<0?n=0:n>l&&(n=l);s[d]=n;u&=(1<o[r+1]){t=255;break}}c[u]=t}}}if(c)for(u=0,f=3,d=t*n;u>3,f=t&&c.ImageResizer.needsToBeResized(a,n);if(!e){let e;"DeviceGray"===this.colorSpace.name&&1===u?e=r.ImageKind.GRAYSCALE_1BPP:"DeviceRGB"!==this.colorSpace.name||8!==u||this.needsDecode||(e=r.ImageKind.RGB_24BPP);if(e&&!this.smask&&!this.mask&&a===o&&n===h){const s=this.getImageBytes(h*d,{});if(t)return f?c.ImageResizer.createImage({data:s,kind:e,width:a,height:n,interpolate:this.interpolate},this.needsDecode):this.createBitmap(e,o,h,s);i.kind=e;i.data=s;if(this.needsDecode){(0,r.assert)(e===r.ImageKind.GRAYSCALE_1BPP,"PDFImage.createImageData: The image must be grayscale.");const t=i.data;for(let e=0,a=t.length;e>3,o=this.getImageBytes(n*s,{internal:!0}),c=this.getComponents(o);let l,h;if(1===i){h=a*n;if(this.needsDecode)for(l=0;l{Object.defineProperty(t,"__esModule",{value:!0});t.Catalog=void 0;var r=a(3),n=a(2),i=a(4),s=a(67),o=a(5),c=a(68),l=a(12),h=a(69),u=a(59),d=a(70),f=a(72);function fetchDestination(e){e instanceof i.Dict&&(e=e.get("D"));return Array.isArray(e)?e:null}class Catalog{constructor(e,t){this.pdfManager=e;this.xref=t;this._catDict=t.getCatalogObj();if(!(this._catDict instanceof i.Dict))throw new n.FormatError("Catalog object is not a dictionary.");this.toplevelPagesDict;this._actualNumPages=null;this.fontCache=new i.RefSetCache;this.builtInCMapCache=new Map;this.standardFontDataCache=new Map;this.globalImageCache=new u.GlobalImageCache;this.pageKidsCountCache=new i.RefSetCache;this.pageIndexCache=new i.RefSetCache;this.nonBlendModesSet=new i.RefSet;this.systemFontCache=new Map}cloneDict(){return this._catDict.clone()}get version(){const e=this._catDict.get("Version");if(e instanceof i.Name){if(r.PDF_VERSION_REGEXP.test(e.name))return(0,n.shadow)(this,"version",e.name);(0,n.warn)(`Invalid PDF catalog version: ${e.name}`)}return(0,n.shadow)(this,"version",null)}get lang(){const e=this._catDict.get("Lang");return(0,n.shadow)(this,"lang","string"==typeof e?(0,n.stringToPDFString)(e):null)}get needsRendering(){const e=this._catDict.get("NeedsRendering");return(0,n.shadow)(this,"needsRendering","boolean"==typeof e&&e)}get collection(){let e=null;try{const t=this._catDict.get("Collection");t instanceof i.Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.info)("Cannot fetch Collection entry; assuming no collection is present.")}return(0,n.shadow)(this,"collection",e)}get acroForm(){let e=null;try{const t=this._catDict.get("AcroForm");t instanceof i.Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.info)("Cannot fetch AcroForm entry; assuming no forms are present.")}return(0,n.shadow)(this,"acroForm",e)}get acroFormRef(){const e=this._catDict.getRaw("AcroForm");return(0,n.shadow)(this,"acroFormRef",e instanceof i.Ref?e:null)}get metadata(){const e=this._catDict.getRaw("Metadata");if(!(e instanceof i.Ref))return(0,n.shadow)(this,"metadata",null);let t=null;try{const a=this.xref.fetch(e,!this.xref.encrypt?.encryptMetadata);if(a instanceof o.BaseStream&&a.dict instanceof i.Dict){const e=a.dict.get("Type"),r=a.dict.get("Subtype");if((0,i.isName)(e,"Metadata")&&(0,i.isName)(r,"XML")){const e=(0,n.stringToUTF8String)(a.getString());e&&(t=new d.MetadataParser(e).serializable)}}}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.info)(`Skipping invalid Metadata: "${e}".`)}return(0,n.shadow)(this,"metadata",t)}get markInfo(){let e=null;try{e=this._readMarkInfo()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable to read mark info.")}return(0,n.shadow)(this,"markInfo",e)}_readMarkInfo(){const e=this._catDict.get("MarkInfo");if(!(e instanceof i.Dict))return null;const t={Marked:!1,UserProperties:!1,Suspects:!1};for(const a in t){const r=e.get(a);"boolean"==typeof r&&(t[a]=r)}return t}get structTreeRoot(){let e=null;try{e=this._readStructTreeRoot()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable read to structTreeRoot info.")}return(0,n.shadow)(this,"structTreeRoot",e)}_readStructTreeRoot(){const e=this._catDict.getRaw("StructTreeRoot"),t=this.xref.fetchIfRef(e);if(!(t instanceof i.Dict))return null;const a=new f.StructTreeRoot(t,e);a.init();return a}get toplevelPagesDict(){const e=this._catDict.get("Pages");if(!(e instanceof i.Dict))throw new n.FormatError("Invalid top-level pages dictionary.");return(0,n.shadow)(this,"toplevelPagesDict",e)}get documentOutline(){let e=null;try{e=this._readDocumentOutline()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable to read document outline.")}return(0,n.shadow)(this,"documentOutline",e)}_readDocumentOutline(){let e=this._catDict.get("Outlines");if(!(e instanceof i.Dict))return null;e=e.getRaw("First");if(!(e instanceof i.Ref))return null;const t={items:[]},a=[{obj:e,parent:t}],r=new i.RefSet;r.put(e);const s=this.xref,o=new Uint8ClampedArray(3);for(;a.length>0;){const t=a.shift(),c=s.fetchIfRef(t.obj);if(null===c)continue;if(!c.has("Title"))throw new n.FormatError("Invalid outline item encountered.");const h={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:c,resultObj:h,docBaseUrl:this.baseUrl,docAttachments:this.attachments});const u=c.get("Title"),d=c.get("F")||0,f=c.getArray("C"),g=c.get("Count");let p=o;!Array.isArray(f)||3!==f.length||0===f[0]&&0===f[1]&&0===f[2]||(p=l.ColorSpace.singletons.rgb.getRgb(f,0));const m={action:h.action,attachment:h.attachment,dest:h.dest,url:h.url,unsafeUrl:h.unsafeUrl,newWindow:h.newWindow,setOCGState:h.setOCGState,title:(0,n.stringToPDFString)(u),color:p,count:Number.isInteger(g)?g:void 0,bold:!!(2&d),italic:!!(1&d),items:[]};t.parent.items.push(m);e=c.getRaw("First");if(e instanceof i.Ref&&!r.has(e)){a.push({obj:e,parent:m});r.put(e)}e=c.getRaw("Next");if(e instanceof i.Ref&&!r.has(e)){a.push({obj:e,parent:t.parent});r.put(e)}}return t.items.length>0?t.items:null}get permissions(){let e=null;try{e=this._readPermissions()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable to read permissions.")}return(0,n.shadow)(this,"permissions",e)}_readPermissions(){const e=this.xref.trailer.get("Encrypt");if(!(e instanceof i.Dict))return null;let t=e.get("P");if("number"!=typeof t)return null;t+=2**32;const a=[];for(const e in n.PermissionFlag){const r=n.PermissionFlag[e];t&r&&a.push(r)}return a}get optionalContentConfig(){let e=null;try{const t=this._catDict.get("OCProperties");if(!t)return(0,n.shadow)(this,"optionalContentConfig",null);const a=t.get("D");if(!a)return(0,n.shadow)(this,"optionalContentConfig",null);const r=t.get("OCGs");if(!Array.isArray(r))return(0,n.shadow)(this,"optionalContentConfig",null);const s=[],o=[];for(const e of r){if(!(e instanceof i.Ref))continue;o.push(e);const t=this.xref.fetchIfRef(e);s.push({id:e.toString(),name:"string"==typeof t.get("Name")?(0,n.stringToPDFString)(t.get("Name")):null,intent:"string"==typeof t.get("Intent")?(0,n.stringToPDFString)(t.get("Intent")):null})}e=this._readOptionalContentConfig(a,o);e.groups=s}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)(`Unable to read optional content config: ${e}`)}return(0,n.shadow)(this,"optionalContentConfig",e)}_readOptionalContentConfig(e,t){function parseOnOff(e){const a=[];if(Array.isArray(e))for(const r of e)r instanceof i.Ref&&t.includes(r)&&a.push(r.toString());return a}function parseOrder(e,a=0){if(!Array.isArray(e))return null;const n=[];for(const s of e){if(s instanceof i.Ref&&t.includes(s)){r.put(s);n.push(s.toString());continue}const e=parseNestedOrder(s,a);e&&n.push(e)}if(a>0)return n;const s=[];for(const e of t)r.has(e)||s.push(e.toString());s.length&&n.push({name:null,order:s});return n}function parseNestedOrder(e,t){if(++t>s){(0,n.warn)("parseNestedOrder - reached MAX_NESTED_LEVELS.");return null}const r=a.fetchIfRef(e);if(!Array.isArray(r))return null;const i=a.fetchIfRef(r[0]);if("string"!=typeof i)return null;const o=parseOrder(r.slice(1),t);return o&&o.length?{name:(0,n.stringToPDFString)(i),order:o}:null}const a=this.xref,r=new i.RefSet,s=10;return{name:"string"==typeof e.get("Name")?(0,n.stringToPDFString)(e.get("Name")):null,creator:"string"==typeof e.get("Creator")?(0,n.stringToPDFString)(e.get("Creator")):null,baseState:e.get("BaseState")instanceof i.Name?e.get("BaseState").name:null,on:parseOnOff(e.get("ON")),off:parseOnOff(e.get("OFF")),order:parseOrder(e.get("Order")),groups:null}}setActualNumPages(e=null){this._actualNumPages=e}get hasActualNumPages(){return null!==this._actualNumPages}get _pagesCount(){const e=this.toplevelPagesDict.get("Count");if(!Number.isInteger(e))throw new n.FormatError("Page count in top-level pages dictionary is not an integer.");return(0,n.shadow)(this,"_pagesCount",e)}get numPages(){return this.hasActualNumPages?this._actualNumPages:this._pagesCount}get destinations(){const e=this._readDests(),t=Object.create(null);if(e instanceof s.NameTree)for(const[a,r]of e.getAll()){const e=fetchDestination(r);e&&(t[(0,n.stringToPDFString)(a)]=e)}else e instanceof i.Dict&&e.forEach((function(e,a){const r=fetchDestination(a);r&&(t[e]=r)}));return(0,n.shadow)(this,"destinations",t)}getDestination(e){const t=this._readDests();if(t instanceof s.NameTree){const a=fetchDestination(t.get(e));if(a)return a;const r=this.destinations[e];if(r){(0,n.warn)(`Found "${e}" at an incorrect position in the NameTree.`);return r}}else if(t instanceof i.Dict){const a=fetchDestination(t.get(e));if(a)return a}return null}_readDests(){const e=this._catDict.get("Names");return e?.has("Dests")?new s.NameTree(e.getRaw("Dests"),this.xref):this._catDict.has("Dests")?this._catDict.get("Dests"):void 0}get pageLabels(){let e=null;try{e=this._readPageLabels()}catch(e){if(e instanceof r.MissingDataException)throw e;(0,n.warn)("Unable to read page labels.")}return(0,n.shadow)(this,"pageLabels",e)}_readPageLabels(){const e=this._catDict.getRaw("PageLabels");if(!e)return null;const t=new Array(this.numPages);let a=null,o="";const c=new s.NumberTree(e,this.xref).getAll();let l="",h=1;for(let e=0,s=this.numPages;e=1))throw new n.FormatError("Invalid start in PageLabel dictionary.");h=e}else h=1}switch(a){case"D":l=h;break;case"R":case"r":l=(0,r.toRomanNumerals)(h,"r"===a);break;case"A":case"a":const e=26,t="a"===a?97:65,i=h-1;l=String.fromCharCode(t+i%e).repeat(Math.floor(i/e)+1);break;default:if(a)throw new n.FormatError(`Invalid style "${a}" in PageLabel dictionary.`);l=""}t[e]=o+l;h++}return t}get pageLayout(){const e=this._catDict.get("PageLayout");let t="";if(e instanceof i.Name)switch(e.name){case"SinglePage":case"OneColumn":case"TwoColumnLeft":case"TwoColumnRight":case"TwoPageLeft":case"TwoPageRight":t=e.name}return(0,n.shadow)(this,"pageLayout",t)}get pageMode(){const e=this._catDict.get("PageMode");let t="UseNone";if(e instanceof i.Name)switch(e.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"FullScreen":case"UseOC":case"UseAttachments":t=e.name}return(0,n.shadow)(this,"pageMode",t)}get viewerPreferences(){const e=this._catDict.get("ViewerPreferences");if(!(e instanceof i.Dict))return(0,n.shadow)(this,"viewerPreferences",null);let t=null;for(const a of e.getKeys()){const r=e.get(a);let s;switch(a){case"HideToolbar":case"HideMenubar":case"HideWindowUI":case"FitWindow":case"CenterWindow":case"DisplayDocTitle":case"PickTrayByPDFSize":"boolean"==typeof r&&(s=r);break;case"NonFullScreenPageMode":if(r instanceof i.Name)switch(r.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"UseOC":s=r.name;break;default:s="UseNone"}break;case"Direction":if(r instanceof i.Name)switch(r.name){case"L2R":case"R2L":s=r.name;break;default:s="L2R"}break;case"ViewArea":case"ViewClip":case"PrintArea":case"PrintClip":if(r instanceof i.Name)switch(r.name){case"MediaBox":case"CropBox":case"BleedBox":case"TrimBox":case"ArtBox":s=r.name;break;default:s="CropBox"}break;case"PrintScaling":if(r instanceof i.Name)switch(r.name){case"None":case"AppDefault":s=r.name;break;default:s="AppDefault"}break;case"Duplex":if(r instanceof i.Name)switch(r.name){case"Simplex":case"DuplexFlipShortEdge":case"DuplexFlipLongEdge":s=r.name;break;default:s="None"}break;case"PrintPageRange":if(Array.isArray(r)&&r.length%2==0){r.every(((e,t,a)=>Number.isInteger(e)&&e>0&&(0===t||e>=a[t-1])&&e<=this.numPages))&&(s=r)}break;case"NumCopies":Number.isInteger(r)&&r>0&&(s=r);break;default:(0,n.warn)(`Ignoring non-standard key in ViewerPreferences: ${a}.`);continue}if(void 0!==s){t||(t=Object.create(null));t[a]=s}else(0,n.warn)(`Bad value, for key "${a}", in ViewerPreferences: ${r}.`)}return(0,n.shadow)(this,"viewerPreferences",t)}get openAction(){const e=this._catDict.get("OpenAction"),t=Object.create(null);if(e instanceof i.Dict){const a=new i.Dict(this.xref);a.set("A",e);const r={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:a,resultObj:r});Array.isArray(r.dest)?t.dest=r.dest:r.action&&(t.action=r.action)}else Array.isArray(e)&&(t.dest=e);return(0,n.shadow)(this,"openAction",(0,n.objectSize)(t)>0?t:null)}get attachments(){const e=this._catDict.get("Names");let t=null;if(e instanceof i.Dict&&e.has("EmbeddedFiles")){const a=new s.NameTree(e.getRaw("EmbeddedFiles"),this.xref);for(const[e,r]of a.getAll()){const a=new h.FileSpec(r,this.xref);t||(t=Object.create(null));t[(0,n.stringToPDFString)(e)]=a.serializable}}return(0,n.shadow)(this,"attachments",t)}get xfaImages(){const e=this._catDict.get("Names");let t=null;if(e instanceof i.Dict&&e.has("XFAImages")){const a=new s.NameTree(e.getRaw("XFAImages"),this.xref);for(const[e,r]of a.getAll()){t||(t=new i.Dict(this.xref));t.set((0,n.stringToPDFString)(e),r)}}return(0,n.shadow)(this,"xfaImages",t)}_collectJavaScript(){const e=this._catDict.get("Names");let t=null;function appendIfJavaScriptDict(e,a){if(!(a instanceof i.Dict))return;if(!(0,i.isName)(a.get("S"),"JavaScript"))return;let r=a.get("JS");if(r instanceof o.BaseStream)r=r.getString();else if("string"!=typeof r)return;r=(0,n.stringToPDFString)(r).replaceAll("\0","");r&&(t||=new Map).set(e,r)}if(e instanceof i.Dict&&e.has("JavaScript")){const t=new s.NameTree(e.getRaw("JavaScript"),this.xref);for(const[e,a]of t.getAll())appendIfJavaScriptDict((0,n.stringToPDFString)(e),a)}const a=this._catDict.get("OpenAction");a&&appendIfJavaScriptDict("OpenAction",a);return t}get jsActions(){const e=this._collectJavaScript();let t=(0,r.collectActions)(this.xref,this._catDict,n.DocumentActionEventType);if(e){t||=Object.create(null);for(const[a,r]of e)a in t?t[a].push(r):t[a]=[r]}return(0,n.shadow)(this,"jsActions",t)}async fontFallback(e,t){const a=await Promise.all(this.fontCache);for(const r of a)if(r.loadedName===e){r.fallback(t);return}}async cleanup(e=!1){(0,c.clearGlobalCaches)();this.globalImageCache.clear(e);this.pageKidsCountCache.clear();this.pageIndexCache.clear();this.nonBlendModesSet.clear();const t=await Promise.all(this.fontCache);for(const{dict:e}of t)delete e.cacheKey;this.fontCache.clear();this.builtInCMapCache.clear();this.standardFontDataCache.clear();this.systemFontCache.clear()}async getPageDict(e){const t=[this.toplevelPagesDict],a=new i.RefSet,r=this._catDict.getRaw("Pages");r instanceof i.Ref&&a.put(r);const s=this.xref,o=this.pageKidsCountCache,c=this.pageIndexCache;let l=0;for(;t.length;){const r=t.pop();if(r instanceof i.Ref){const h=o.get(r);if(h>=0&&l+h<=e){l+=h;continue}if(a.has(r))throw new n.FormatError("Pages tree contains circular reference.");a.put(r);const u=await s.fetchAsync(r);if(u instanceof i.Dict){let t=u.getRaw("Type");t instanceof i.Ref&&(t=await s.fetchAsync(t));if((0,i.isName)(t,"Page")||!u.has("Kids")){o.has(r)||o.put(r,1);c.has(r)||c.put(r,l);if(l===e)return[u,r];l++;continue}}t.push(u);continue}if(!(r instanceof i.Dict))throw new n.FormatError("Page dictionary kid reference points to wrong type of object.");const{objId:h}=r;let u=r.getRaw("Count");u instanceof i.Ref&&(u=await s.fetchAsync(u));if(Number.isInteger(u)&&u>=0){h&&!o.has(h)&&o.put(h,u);if(l+u<=e){l+=u;continue}}let d=r.getRaw("Kids");d instanceof i.Ref&&(d=await s.fetchAsync(d));if(!Array.isArray(d)){let t=r.getRaw("Type");t instanceof i.Ref&&(t=await s.fetchAsync(t));if((0,i.isName)(t,"Page")||!r.has("Kids")){if(l===e)return[r,null];l++;continue}throw new n.FormatError("Page dictionary kids object is not an array.")}for(let e=d.length-1;e>=0;e--)t.push(d[e])}throw new Error(`Page index ${e} not found.`)}async getAllPageDicts(e=!1){const{ignoreErrors:t}=this.pdfManager.evaluatorOptions,a=[{currentNode:this.toplevelPagesDict,posInKids:0}],s=new i.RefSet,o=this._catDict.getRaw("Pages");o instanceof i.Ref&&s.put(o);const c=new Map,l=this.xref,h=this.pageIndexCache;let u=0;function addPageDict(e,t){t&&!h.has(t)&&h.put(t,u);c.set(u++,[e,t])}function addPageError(a){if(a instanceof r.XRefEntryException&&!e)throw a;if(e&&t&&0===u){(0,n.warn)(`getAllPageDicts - Skipping invalid first page: "${a}".`);a=i.Dict.empty}c.set(u++,[a,null])}for(;a.length>0;){const e=a.at(-1),{currentNode:t,posInKids:r}=e;let o=t.getRaw("Kids");if(o instanceof i.Ref)try{o=await l.fetchAsync(o)}catch(e){addPageError(e);break}if(!Array.isArray(o)){addPageError(new n.FormatError("Page dictionary kids object is not an array."));break}if(r>=o.length){a.pop();continue}const c=o[r];let h;if(c instanceof i.Ref){if(s.has(c)){addPageError(new n.FormatError("Pages tree contains circular reference."));break}s.put(c);try{h=await l.fetchAsync(c)}catch(e){addPageError(e);break}}else h=c;if(!(h instanceof i.Dict)){addPageError(new n.FormatError("Page dictionary kid reference points to wrong type of object."));break}let u=h.getRaw("Type");if(u instanceof i.Ref)try{u=await l.fetchAsync(u)}catch(e){addPageError(e);break}(0,i.isName)(u,"Page")||!h.has("Kids")?addPageDict(h,c instanceof i.Ref?c:null):a.push({currentNode:h,posInKids:0});e.posInKids++}return c}getPageIndex(e){const t=this.pageIndexCache.get(e);if(void 0!==t)return Promise.resolve(t);const a=this.xref;let r=0;const next=t=>function pagesBeforeRef(t){let r,s=0;return a.fetchAsync(t).then((function(a){if((0,i.isRefsEqual)(t,e)&&!(0,i.isDict)(a,"Page")&&!(a instanceof i.Dict&&!a.has("Type")&&a.has("Contents")))throw new n.FormatError("The reference does not point to a /Page dictionary.");if(!a)return null;if(!(a instanceof i.Dict))throw new n.FormatError("Node must be a dictionary.");r=a.getRaw("Parent");return a.getAsync("Parent")})).then((function(e){if(!e)return null;if(!(e instanceof i.Dict))throw new n.FormatError("Parent must be a dictionary.");return e.getAsync("Kids")})).then((function(e){if(!e)return null;const o=[];let c=!1;for(const r of e){if(!(r instanceof i.Ref))throw new n.FormatError("Kid must be a reference.");if((0,i.isRefsEqual)(r,t)){c=!0;break}o.push(a.fetchAsync(r).then((function(e){if(!(e instanceof i.Dict))throw new n.FormatError("Kid node must be a dictionary.");e.has("Count")?s+=e.get("Count"):s++})))}if(!c)throw new n.FormatError("Kid reference not found in parent's kids.");return Promise.all(o).then((function(){return[s,r]}))}))}(t).then((t=>{if(!t){this.pageIndexCache.put(e,r);return r}const[a,n]=t;r+=a;return next(n)}));return next(e)}get baseUrl(){const e=this._catDict.get("URI");if(e instanceof i.Dict){const t=e.get("Base");if("string"==typeof t){const e=(0,n.createValidAbsoluteUrl)(t,null,{tryConvertEncoding:!0});if(e)return(0,n.shadow)(this,"baseUrl",e.href)}}return(0,n.shadow)(this,"baseUrl",this.pdfManager.docBaseUrl)}static parseDestDictionary({destDict:e,resultObj:t,docBaseUrl:a=null,docAttachments:s=null}){if(!(e instanceof i.Dict)){(0,n.warn)("parseDestDictionary: `destDict` must be a dictionary.");return}let c,l,h=e.get("A");if(!(h instanceof i.Dict))if(e.has("Dest"))h=e.get("Dest");else{h=e.get("AA");h instanceof i.Dict&&(h.has("D")?h=h.get("D"):h.has("U")&&(h=h.get("U")))}if(h instanceof i.Dict){const e=h.get("S");if(!(e instanceof i.Name)){(0,n.warn)("parseDestDictionary: Invalid type in Action dictionary.");return}const a=e.name;switch(a){case"ResetForm":const e=h.get("Flags"),u=0==(1&("number"==typeof e?e:0)),d=[],f=[];for(const e of h.get("Fields")||[])e instanceof i.Ref?f.push(e.toString()):"string"==typeof e&&d.push((0,n.stringToPDFString)(e));t.resetForm={fields:d,refs:f,include:u};break;case"URI":c=h.get("URI");c instanceof i.Name&&(c="/"+c.name);break;case"GoTo":l=h.get("D");break;case"Launch":case"GoToR":const g=h.get("F");g instanceof i.Dict?c=g.get("F")||null:"string"==typeof g&&(c=g);let p=h.get("D");if(p){p instanceof i.Name&&(p=p.name);if("string"==typeof c){const e=c.split("#")[0];"string"==typeof p?c=e+"#"+p:Array.isArray(p)&&(c=e+"#"+JSON.stringify(p))}}const m=h.get("NewWindow");"boolean"==typeof m&&(t.newWindow=m);break;case"GoToE":const b=h.get("T");let y;if(s&&b instanceof i.Dict){const e=b.get("R"),t=b.get("N");(0,i.isName)(e,"C")&&"string"==typeof t&&(y=s[(0,n.stringToPDFString)(t)])}y?t.attachment=y:(0,n.warn)('parseDestDictionary - unimplemented "GoToE" action.');break;case"Named":const w=h.get("N");w instanceof i.Name&&(t.action=w.name);break;case"SetOCGState":const S=h.get("State"),x=h.get("PreserveRB");if(!Array.isArray(S)||0===S.length)break;const C=[];for(const e of S)if(e instanceof i.Name)switch(e.name){case"ON":case"OFF":case"Toggle":C.push(e.name)}else e instanceof i.Ref&&C.push(e.toString());if(C.length!==S.length)break;t.setOCGState={state:C,preserveRB:"boolean"!=typeof x||x};break;case"JavaScript":const k=h.get("JS");let v;k instanceof o.BaseStream?v=k.getString():"string"==typeof k&&(v=k);const F=v&&(0,r.recoverJsURL)((0,n.stringToPDFString)(v));if(F){c=F.url;t.newWindow=F.newWindow;break}default:if("JavaScript"===a||"SubmitForm"===a)break;(0,n.warn)(`parseDestDictionary - unsupported action: "${a}".`)}}else e.has("Dest")&&(l=e.get("Dest"));if("string"==typeof c){const e=(0,n.createValidAbsoluteUrl)(c,a,{addDefaultProtocol:!0,tryConvertEncoding:!0});e&&(t.url=e.href);t.unsafeUrl=c}if(l){l instanceof i.Name&&(l=l.name);"string"==typeof l?t.dest=(0,n.stringToPDFString)(l):Array.isArray(l)&&(t.dest=l)}}}t.Catalog=Catalog},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NumberTree=t.NameTree=void 0;var r=a(4),n=a(2);class NameOrNumberTree{constructor(e,t,a){this.constructor===NameOrNumberTree&&(0,n.unreachable)("Cannot initialize NameOrNumberTree.");this.root=e;this.xref=t;this._type=a}getAll(){const e=new Map;if(!this.root)return e;const t=this.xref,a=new r.RefSet;a.put(this.root);const i=[this.root];for(;i.length>0;){const s=t.fetchIfRef(i.shift());if(!(s instanceof r.Dict))continue;if(s.has("Kids")){const e=s.get("Kids");if(!Array.isArray(e))continue;for(const t of e){if(a.has(t))throw new n.FormatError(`Duplicate entry in "${this._type}" tree.`);i.push(t);a.put(t)}continue}const o=s.get(this._type);if(Array.isArray(o))for(let a=0,r=o.length;a10){(0,n.warn)(`Search depth limit reached for "${this._type}" tree.`);return null}const i=a.get("Kids");if(!Array.isArray(i))return null;let s=0,o=i.length-1;for(;s<=o;){const r=s+o>>1,n=t.fetchIfRef(i[r]),c=n.get("Limits");if(et.fetchIfRef(c[1]))){a=n;break}s=r+1}}if(s>o)return null}const i=a.get(this._type);if(Array.isArray(i)){let a=0,r=i.length-2;for(;a<=r;){const n=a+r>>1,s=n+(1&n),o=t.fetchIfRef(i[s]);if(eo))return t.fetchIfRef(i[s+1]);a=s+2}}}return null}}t.NameTree=class NameTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Names")}};t.NumberTree=class NumberTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Nums")}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.clearGlobalCaches=function clearGlobalCaches(){(0,r.clearPatternCaches)();(0,n.clearPrimitiveCaches)();(0,i.clearUnicodeCaches)()};var r=a(50),n=a(4),i=a(40)},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FileSpec=void 0;var r=a(2),n=a(5),i=a(4);function pickPlatformItem(e){return e.has("UF")?e.get("UF"):e.has("F")?e.get("F"):e.has("Unix")?e.get("Unix"):e.has("Mac")?e.get("Mac"):e.has("DOS")?e.get("DOS"):null}t.FileSpec=class FileSpec{constructor(e,t){if(e instanceof i.Dict){this.xref=t;this.root=e;e.has("FS")&&(this.fs=e.get("FS"));this.description=e.has("Desc")?(0,r.stringToPDFString)(e.get("Desc")):"";e.has("RF")&&(0,r.warn)("Related file specifications are not supported");this.contentAvailable=!0;if(!e.has("EF")){this.contentAvailable=!1;(0,r.warn)("Non-embedded file specifications are not supported")}}}get filename(){if(!this._filename&&this.root){const e=pickPlatformItem(this.root)||"unnamed";this._filename=(0,r.stringToPDFString)(e).replaceAll("\\\\","\\").replaceAll("\\/","/").replaceAll("\\","/")}return this._filename}get content(){if(!this.contentAvailable)return null;!this.contentRef&&this.root&&(this.contentRef=pickPlatformItem(this.root.get("EF")));let e=null;if(this.contentRef){const t=this.xref.fetchIfRef(this.contentRef);t instanceof n.BaseStream?e=t.getBytes():(0,r.warn)("Embedded file specification points to non-existing/invalid content")}else(0,r.warn)("Embedded file specification does not have a content");return e}get serializable(){return{filename:this.filename,content:this.content}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.MetadataParser=void 0;var r=a(71);t.MetadataParser=class MetadataParser{constructor(e){e=this._repair(e);const t=new r.SimpleXMLParser({lowerCaseName:!0}).parseFromString(e);this._metadataMap=new Map;this._data=e;t&&this._parse(t)}_repair(e){return e.replace(/^[^<]+/,"").replaceAll(/>\\376\\377([^<]+)/g,(function(e,t){const a=t.replaceAll(/\\([0-3])([0-7])([0-7])/g,(function(e,t,a,r){return String.fromCharCode(64*t+8*a+1*r)})).replaceAll(/&(amp|apos|gt|lt|quot);/g,(function(e,t){switch(t){case"amp":return"&";case"apos":return"'";case"gt":return">";case"lt":return"<";case"quot":return'"'}throw new Error(`_repair: ${t} isn't defined.`)})),r=[">"];for(let e=0,t=a.length;e=32&&t<127&&60!==t&&62!==t&&38!==t?r.push(String.fromCharCode(t)):r.push("&#x"+(65536+t).toString(16).substring(1)+";")}return r.join("")}))}_getSequence(e){const t=e.nodeName;return"rdf:bag"!==t&&"rdf:seq"!==t&&"rdf:alt"!==t?null:e.childNodes.filter((e=>"rdf:li"===e.nodeName))}_parseArray(e){if(!e.hasChildNodes())return;const[t]=e.childNodes,a=this._getSequence(t)||[];this._metadataMap.set(e.nodeName,a.map((e=>e.textContent.trim())))}_parse(e){let t=e.documentElement;if("rdf:rdf"!==t.nodeName){t=t.firstChild;for(;t&&"rdf:rdf"!==t.nodeName;)t=t.nextSibling}if(t&&"rdf:rdf"===t.nodeName&&t.hasChildNodes())for(const e of t.childNodes)if("rdf:description"===e.nodeName)for(const t of e.childNodes){const e=t.nodeName;switch(e){case"#text":continue;case"dc:creator":case"dc:subject":this._parseArray(t);continue}this._metadataMap.set(e,t.textContent.trim())}}get serializable(){return{parsedData:this._metadataMap,rawData:this._data}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XMLParserErrorCode=t.XMLParserBase=t.SimpleXMLParser=t.SimpleDOMNode=void 0;var r=a(3);const n={NoError:0,EndOfDocument:-1,UnterminatedCdat:-2,UnterminatedXmlDeclaration:-3,UnterminatedDoctypeDeclaration:-4,UnterminatedComment:-5,MalformedElement:-6,OutOfMemory:-7,UnterminatedAttributeValue:-8,UnterminatedElement:-9,ElementNeverBegun:-10};t.XMLParserErrorCode=n;function isWhitespace(e,t){const a=e[t];return" "===a||"\n"===a||"\r"===a||"\t"===a}class XMLParserBase{_resolveEntities(e){return e.replaceAll(/&([^;]+);/g,((e,t)=>{if("#x"===t.substring(0,2))return String.fromCodePoint(parseInt(t.substring(2),16));if("#"===t.substring(0,1))return String.fromCodePoint(parseInt(t.substring(1),10));switch(t){case"lt":return"<";case"gt":return">";case"amp":return"&";case"quot":return'"';case"apos":return"'"}return this.onResolveEntity(t)}))}_parseContent(e,t){const a=[];let r=t;function skipWs(){for(;r"!==e[r]&&"/"!==e[r];)++r;const n=e.substring(t,r);skipWs();for(;r"!==e[r]&&"/"!==e[r]&&"?"!==e[r];){skipWs();let t="",n="";for(;r"!==e[a]&&"?"!==e[a]&&"/"!==e[a];)++a;const r=e.substring(t,a);!function skipWs(){for(;a"!==e[a+1]);)++a;return{name:r,value:e.substring(n,a),parsed:a-t}}parseXml(e){let t=0;for(;t",a);if(t<0){this.onError(n.UnterminatedElement);return}this.onEndElement(e.substring(a,t));a=t+1;break;case"?":++a;const r=this._parseProcessingInstruction(e,a);if("?>"!==e.substring(a+r.parsed,a+r.parsed+2)){this.onError(n.UnterminatedXmlDeclaration);return}this.onPi(r.name,r.value);a+=r.parsed+2;break;case"!":if("--"===e.substring(a+1,a+3)){t=e.indexOf("--\x3e",a+3);if(t<0){this.onError(n.UnterminatedComment);return}this.onComment(e.substring(a+3,t));a=t+3}else if("[CDATA["===e.substring(a+1,a+8)){t=e.indexOf("]]>",a+8);if(t<0){this.onError(n.UnterminatedCdat);return}this.onCdata(e.substring(a+8,t));a=t+3}else{if("DOCTYPE"!==e.substring(a+1,a+8)){this.onError(n.MalformedElement);return}{const r=e.indexOf("[",a+8);let i=!1;t=e.indexOf(">",a+8);if(t<0){this.onError(n.UnterminatedDoctypeDeclaration);return}if(r>0&&t>r){t=e.indexOf("]>",a+8);if(t<0){this.onError(n.UnterminatedDoctypeDeclaration);return}i=!0}const s=e.substring(a+8,t+(i?1:0));this.onDoctype(s);a=t+(i?2:1)}}break;default:const i=this._parseContent(e,a);if(null===i){this.onError(n.MalformedElement);return}let s=!1;if("/>"===e.substring(a+i.parsed,a+i.parsed+2))s=!0;else if(">"!==e.substring(a+i.parsed,a+i.parsed+1)){this.onError(n.UnterminatedElement);return}this.onBeginElement(i.name,i.attributes,s);a+=i.parsed+(s?2:1)}}else{for(;a0}searchNode(e,t){if(t>=e.length)return this;const a=e[t];if(a.name.startsWith("#")&&t0){r.push([n,0]);n=n.childNodes[0]}else{if(0===r.length)return null;for(;0!==r.length;){const[e,t]=r.pop(),a=t+1;if(a");for(const t of this.childNodes)t.dump(e);e.push(``)}else this.nodeValue?e.push(`>${(0,r.encodeToXmlString)(this.nodeValue)}`):e.push("/>")}else e.push((0,r.encodeToXmlString)(this.nodeValue))}}t.SimpleDOMNode=SimpleDOMNode;t.SimpleXMLParser=class SimpleXMLParser extends XMLParserBase{constructor({hasAttributes:e=!1,lowerCaseName:t=!1}){super();this._currentFragment=null;this._stack=null;this._errorCode=n.NoError;this._hasAttributes=e;this._lowerCaseName=t}parseFromString(e){this._currentFragment=[];this._stack=[];this._errorCode=n.NoError;this.parseXml(e);if(this._errorCode!==n.NoError)return;const[t]=this._currentFragment;return t?{documentElement:t}:void 0}onText(e){if(function isWhitespaceString(e){for(let t=0,a=e.length;t{Object.defineProperty(t,"__esModule",{value:!0});t.StructTreeRoot=t.StructTreePage=void 0;var r=a(2),n=a(4),i=a(67),s=a(73);const o=1,c=2,l=3,h=4,u=5;class StructTreeRoot{constructor(e,t){this.dict=e;this.ref=t instanceof n.Ref?t:null;this.roleMap=new Map;this.structParentIds=null}init(){this.readRoleMap()}#C(e,t,a){if(!(e instanceof n.Ref)||t<0)return;this.structParentIds||=new n.RefSetCache;let r=this.structParentIds.get(e);if(!r){r=[];this.structParentIds.put(e,r)}r.push([t,a])}addAnnotationIdToPage(e,t){this.#C(e,t,h)}readRoleMap(){const e=this.dict.get("RoleMap");e instanceof n.Dict&&e.forEach(((e,t)=>{t instanceof n.Name&&this.roleMap.set(e,t.name)}))}static async canCreateStructureTree({catalogRef:e,pdfManager:t,newAnnotationsByPage:a}){if(!(e instanceof n.Ref)){(0,r.warn)("Cannot save the struct tree: no catalog reference.");return!1}let i=0,s=!0;for(const[e,o]of a){const{ref:a}=await t.getPage(e);if(!(a instanceof n.Ref)){(0,r.warn)(`Cannot save the struct tree: page ${e} has no ref.`);s=!0;break}for(const e of o)if(e.accessibilityData?.type){e.parentTreeId=i++;s=!1}}if(s){for(const e of a.values())for(const t of e)delete t.parentTreeId;return!1}return!0}static async createStructureTree({newAnnotationsByPage:e,xref:t,catalogRef:a,pdfManager:r,newRefs:i}){const o=r.catalog.cloneDict(),c=t.getNewTemporaryRef();o.set("StructTreeRoot",c);const l=[];await(0,s.writeObject)(a,o,l,t);i.push({ref:a,data:l.join("")});const h=new n.Dict(t);h.set("Type",n.Name.get("StructTreeRoot"));const u=t.getNewTemporaryRef();h.set("ParentTree",u);const d=[];h.set("K",d);const f=new n.Dict(t),g=[];f.set("Nums",g);const p=await this.#k({newAnnotationsByPage:e,structTreeRootRef:c,kids:d,nums:g,xref:t,pdfManager:r,newRefs:i,buffer:l});h.set("ParentTreeNextKey",p);l.length=0;await(0,s.writeObject)(u,f,l,t);i.push({ref:u,data:l.join("")});l.length=0;await(0,s.writeObject)(c,h,l,t);i.push({ref:c,data:l.join("")})}async canUpdateStructTree({pdfManager:e,newAnnotationsByPage:t}){if(!this.ref){(0,r.warn)("Cannot update the struct tree: no root reference.");return!1}let a=this.dict.get("ParentTreeNextKey");if(!Number.isInteger(a)||a<0){(0,r.warn)("Cannot update the struct tree: invalid next key.");return!1}const i=this.dict.get("ParentTree");if(!(i instanceof n.Dict)){(0,r.warn)("Cannot update the struct tree: ParentTree isn't a dict.");return!1}const s=i.get("Nums");if(!Array.isArray(s)){(0,r.warn)("Cannot update the struct tree: nums isn't an array.");return!1}const{numPages:o}=e.catalog;for(const a of t.keys()){const{pageDict:t,ref:i}=await e.getPage(a);if(!(i instanceof n.Ref)){(0,r.warn)(`Cannot save the struct tree: page ${a} has no ref.`);return!1}const s=t.get("StructParents");if(!Number.isInteger(s)||s<0||s>=o){(0,r.warn)(`Cannot save the struct tree: page ${a} has no id.`);return!1}}let c=!0;for(const[r,n]of t){const{pageDict:t}=await e.getPage(r);StructTreeRoot.#v({elements:n,xref:this.dict.xref,pageDict:t,parentTree:i});for(const e of n)if(e.accessibilityData?.type){e.parentTreeId=a++;c=!1}}if(c){for(const e of t.values())for(const t of e){delete t.parentTreeId;delete t.structTreeParent}return!1}return!0}async updateStructureTree({newAnnotationsByPage:e,pdfManager:t,newRefs:a}){const r=this.dict.xref,i=this.dict.clone(),o=this.ref;let c,l=i.getRaw("ParentTree");if(l instanceof n.Ref)c=r.fetch(l);else{c=l;l=r.getNewTemporaryRef();i.set("ParentTree",l)}c=c.clone();let h=c.getRaw("Nums"),u=null;if(h instanceof n.Ref){u=h;h=r.fetch(u)}h=h.slice();u||c.set("Nums",h);let d=i.getRaw("K"),f=null;if(d instanceof n.Ref){f=d;d=r.fetch(f)}else{f=r.getNewTemporaryRef();i.set("K",f)}d=Array.isArray(d)?d.slice():[d];const g=[],p=await StructTreeRoot.#k({newAnnotationsByPage:e,structTreeRootRef:o,kids:d,nums:h,xref:r,pdfManager:t,newRefs:a,buffer:g});i.set("ParentTreeNextKey",p);g.length=0;await(0,s.writeObject)(f,d,g,r);a.push({ref:f,data:g.join("")});if(u){g.length=0;await(0,s.writeObject)(u,h,g,r);a.push({ref:u,data:g.join("")})}g.length=0;await(0,s.writeObject)(l,c,g,r);a.push({ref:l,data:g.join("")});g.length=0;await(0,s.writeObject)(o,i,g,r);a.push({ref:o,data:g.join("")})}static async#k({newAnnotationsByPage:e,structTreeRootRef:t,kids:a,nums:r,xref:i,pdfManager:o,newRefs:c,buffer:l}){const h=n.Name.get("OBJR");let u=-1/0;for(const[d,f]of e){const{ref:e}=await o.getPage(d);for(const{accessibilityData:{type:o,title:d,lang:g,alt:p,expanded:m,actualText:b},ref:y,parentTreeId:w,structTreeParent:S}of f){u=Math.max(u,w);const f=i.getNewTemporaryRef(),x=new n.Dict(i);x.set("S",n.Name.get(o));d&&x.set("T",d);g&&x.set("Lang",g);p&&x.set("Alt",p);m&&x.set("E",m);b&&x.set("ActualText",b);S?await this.#F({structTreeParent:S,tagDict:x,newTagRef:f,fallbackRef:t,xref:i,newRefs:c,buffer:l}):x.set("P",t);const C=new n.Dict(i);x.set("K",C);C.set("Type",h);C.set("Pg",e);C.set("Obj",y);l.length=0;await(0,s.writeObject)(f,x,l,i);c.push({ref:f,data:l.join("")});r.push(w,f);a.push(f)}}return u+1}static#v({elements:e,xref:t,pageDict:a,parentTree:r}){const s=new Map;for(const t of e)if(t.structTreeParentId){const e=parseInt(t.structTreeParentId.split("_mc")[1],10);s.set(e,t)}const o=a.get("StructParents"),c=new i.NumberTree(r,t).get(o);if(!Array.isArray(c))return;const updateElement=(e,a,r)=>{const i=s.get(e);if(i){const e=a.getRaw("P"),s=t.fetchIfRef(e);e instanceof n.Ref&&s instanceof n.Dict&&(i.structTreeParent={ref:r,dict:a});return!0}return!1};for(const e of c){if(!(e instanceof n.Ref))continue;const a=t.fetch(e),r=a.get("K");if(Number.isInteger(r))updateElement(r,a,e);else if(Array.isArray(r))for(let n of r){n=t.fetchIfRef(n);if(Number.isInteger(n)&&updateElement(n,a,e))break}}}static async#F({structTreeParent:{ref:e,dict:t},tagDict:a,newTagRef:i,fallbackRef:o,xref:c,newRefs:l,buffer:h}){const u=t.getRaw("P");let d=c.fetchIfRef(u);a.set("P",u);let f,g=!1,p=d.getRaw("K");if(p instanceof n.Ref)f=c.fetch(p);else{f=p;p=c.getNewTemporaryRef();d=d.clone();d.set("K",p);g=!0}if(Array.isArray(f)){const t=f.indexOf(e);if(!(t>=0)){(0,r.warn)("Cannot update the struct tree: parent kid not found.");a.set("P",o);return}f=f.slice();f.splice(t+1,0,i)}else if(f instanceof n.Dict){f=[p,i];p=c.getNewTemporaryRef();d.set("K",p);g=!0}h.length=0;await(0,s.writeObject)(p,f,h,c);l.push({ref:p,data:h.join("")});if(g){h.length=0;await(0,s.writeObject)(u,d,h,c);l.push({ref:u,data:h.join("")})}}}t.StructTreeRoot=StructTreeRoot;class StructElementNode{constructor(e,t){this.tree=e;this.dict=t;this.kids=[];this.parseKids()}get role(){const e=this.dict.get("S"),t=e instanceof n.Name?e.name:"",{root:a}=this.tree;return a.roleMap.has(t)?a.roleMap.get(t):t}parseKids(){let e=null;const t=this.dict.getRaw("Pg");t instanceof n.Ref&&(e=t.toString());const a=this.dict.get("K");if(Array.isArray(a))for(const t of a){const a=this.parseKid(e,t);a&&this.kids.push(a)}else{const t=this.parseKid(e,a);t&&this.kids.push(t)}}parseKid(e,t){if(Number.isInteger(t))return this.tree.pageDict.objId!==e?null:new StructElement({type:o,mcid:t,pageObjId:e});let a=null;t instanceof n.Ref?a=this.dict.xref.fetch(t):t instanceof n.Dict&&(a=t);if(!a)return null;const r=a.getRaw("Pg");r instanceof n.Ref&&(e=r.toString());const i=a.get("Type")instanceof n.Name?a.get("Type").name:null;if("MCR"===i){if(this.tree.pageDict.objId!==e)return null;const t=a.getRaw("Stm");return new StructElement({type:c,refObjId:t instanceof n.Ref?t.toString():null,pageObjId:e,mcid:a.get("MCID")})}if("OBJR"===i){if(this.tree.pageDict.objId!==e)return null;const t=a.getRaw("Obj");return new StructElement({type:l,refObjId:t instanceof n.Ref?t.toString():null,pageObjId:e})}return new StructElement({type:u,dict:a})}}class StructElement{constructor({type:e,dict:t=null,mcid:a=null,pageObjId:r=null,refObjId:n=null}){this.type=e;this.dict=t;this.mcid=a;this.pageObjId=r;this.refObjId=n;this.parentNode=null}}t.StructTreePage=class StructTreePage{constructor(e,t){this.root=e;this.rootDict=e?e.dict:null;this.pageDict=t;this.nodes=[]}parse(e){if(!this.root||!this.rootDict)return;const t=this.rootDict.get("ParentTree");if(!t)return;const a=this.pageDict.get("StructParents"),r=e instanceof n.Ref&&this.root.structParentIds?.get(e);if(!Number.isInteger(a)&&!r)return;const s=new Map,o=new i.NumberTree(t,this.rootDict.xref);if(Number.isInteger(a)){const e=o.get(a);if(Array.isArray(e))for(const t of e)t instanceof n.Ref&&this.addNode(this.rootDict.xref.fetch(t),s)}if(r)for(const[e,t]of r){const a=o.get(e);if(a){const e=this.addNode(this.rootDict.xref.fetchIfRef(a),s);1===e?.kids?.length&&e.kids[0].type===l&&(e.kids[0].type=t)}}}addNode(e,t,a=0){if(a>40){(0,r.warn)("StructTree MAX_DEPTH reached.");return null}if(t.has(e))return t.get(e);const i=new StructElementNode(this,e);t.set(e,i);const s=e.get("P");if(!s||(0,n.isName)(s.get("Type"),"StructTreeRoot")){this.addTopLevelNode(e,i)||t.delete(e);return i}const o=this.addNode(s,t,a+1);if(!o)return i;let c=!1;for(const t of o.kids)if(t.type===u&&t.dict===e){t.parentNode=i;c=!0}c||t.delete(e);return i}addTopLevelNode(e,t){const a=this.rootDict.get("K");if(!a)return!1;if(a instanceof n.Dict){if(a.objId!==e.objId)return!1;this.nodes[0]=t;return!0}if(!Array.isArray(a))return!0;let r=!1;for(let n=0;n40){(0,r.warn)("StructTree too deep to be fully serialized.");return}const n=Object.create(null);n.role=e.role;n.children=[];t.children.push(n);const i=e.dict.get("Alt");"string"==typeof i&&(n.alt=(0,r.stringToPDFString)(i));const s=e.dict.get("Lang");"string"==typeof s&&(n.lang=(0,r.stringToPDFString)(s));for(const t of e.kids){const e=t.type===u?t.parentNode:null;e?nodeToSerializable(e,n,a+1):t.type===o||t.type===c?n.children.push({type:"content",id:`p${t.pageObjId}_mc${t.mcid}`}):t.type===l?n.children.push({type:"object",id:t.refObjId}):t.type===h&&n.children.push({type:"annotation",id:`${r.AnnotationPrefix}${t.refObjId}`})}}const e=Object.create(null);e.children=[];e.role="Root";for(const t of this.nodes)t&&nodeToSerializable(t,e);return e}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.incrementalUpdate=async function incrementalUpdate({originalData:e,xrefInfo:t,newRefs:a,xref:o=null,hasXfa:l=!1,xfaDatasetsRef:h=null,hasXfaDatasetsEntry:u=!1,needAppearances:d,acroFormRef:f=null,acroForm:g=null,xfaData:p=null}){await async function updateAcroform({xref:e,acroForm:t,acroFormRef:a,hasXfa:n,hasXfaDatasetsEntry:i,xfaDatasetsRef:s,needAppearances:o,newRefs:c}){!n||i||s||(0,r.warn)("XFA - Cannot save it");if(!o&&(!n||!s||i))return;const l=t.clone();if(n&&!i){const e=t.get("XFA").slice();e.splice(2,0,"datasets");e.splice(3,0,s);l.set("XFA",e)}o&&l.set("NeedAppearances",!0);const h=[];await writeObject(a,l,h,e);c.push({ref:a,data:h.join("")})}({xref:o,acroForm:g,acroFormRef:f,hasXfa:l,hasXfaDatasetsEntry:u,xfaDatasetsRef:h,needAppearances:d,newRefs:a});l&&function updateXFA({xfaData:e,xfaDatasetsRef:t,newRefs:a,xref:n}){if(null===e){e=function writeXFADataForAcroform(e,t){const a=new s.SimpleXMLParser({hasAttributes:!0}).parseFromString(e);for(const{xfa:e}of t){if(!e)continue;const{path:t,value:n}=e;if(!t)continue;const o=(0,i.parseXFAPath)(t);let c=a.documentElement.searchNode(o,0);!c&&o.length>1&&(c=a.documentElement.searchNode([o.at(-1)],0));c?c.childNodes=Array.isArray(n)?n.map((e=>new s.SimpleDOMNode("value",e))):[new s.SimpleDOMNode("#text",n)]:(0,r.warn)(`Node not found for path: ${t}`)}const n=[];a.documentElement.dump(n);return n.join("")}(n.fetchIfRef(t).getString(),a)}const o=n.encrypt;if(o){e=o.createCipherTransform(t.num,t.gen).encryptString(e)}const c=`${t.num} ${t.gen} obj\n<< /Type /EmbeddedFile /Length ${e.length}>>\nstream\n`+e+"\nendstream\nendobj\n";a.push({ref:t,data:c})}({xfaData:p,xfaDatasetsRef:h,newRefs:a,xref:o});const m=new n.Dict(null),b=t.newRef;let y,w;const S=e.at(-1);if(10===S||13===S){y=[];w=e.length}else{y=["\n"];w=e.length+1}m.set("Size",b.num+1);m.set("Prev",t.startXRef);m.set("Type",n.Name.get("XRef"));null!==t.rootRef&&m.set("Root",t.rootRef);null!==t.infoRef&&m.set("Info",t.infoRef);null!==t.encryptRef&&m.set("Encrypt",t.encryptRef);a.push({ref:b,data:""});a=a.sort(((e,t)=>e.ref.num-t.ref.num));const x=[[0,1,65535]],C=[0,1];let k=0;for(const{ref:e,data:t}of a){k=Math.max(k,w);x.push([1,w,Math.min(e.gen,65535)]);w+=t.length;C.push(e.num,1);y.push(t)}m.set("Index",C);if(Array.isArray(t.fileIds)&&t.fileIds.length>0){const e=function computeMD5(e,t){const a=Math.floor(Date.now()/1e3),n=t.filename||"",i=[a.toString(),n,e.toString()];let s=i.reduce(((e,t)=>e+t.length),0);for(const e of Object.values(t.info)){i.push(e);s+=e.length}const o=new Uint8Array(s);let l=0;for(const e of i){writeString(e,l,o);l+=e.length}return(0,r.bytesToString)((0,c.calculateMD5)(o))}(w,t);m.set("ID",[t.fileIds[0],e])}const v=[1,Math.ceil(Math.log2(k)/8),2],F=(v[0]+v[1]+v[2])*x.length;m.set("W",v);m.set("Length",F);y.push(`${b.num} ${b.gen} obj\n`);await writeDict(m,y,null);y.push(" stream\n");const O=y.reduce(((e,t)=>e+t.length),0),T=`\nendstream\nendobj\nstartxref\n${w}\n%%EOF\n`,M=new Uint8Array(e.length+O+F+T.length);M.set(e);let D=e.length;for(const e of y){writeString(e,D,M);D+=e.length}for(const[e,t,a]of x){D=writeInt(e,v[0],D,M);D=writeInt(t,v[1],D,M);D=writeInt(a,v[2],D,M)}writeString(T,D,M);return M};t.writeDict=writeDict;t.writeObject=writeObject;var r=a(2),n=a(4),i=a(3),s=a(71),o=a(5),c=a(74);async function writeObject(e,t,a,{encrypt:r=null}){const i=r?.createCipherTransform(e.num,e.gen);a.push(`${e.num} ${e.gen} obj\n`);t instanceof n.Dict?await writeDict(t,a,i):t instanceof o.BaseStream?await writeStream(t,a,i):Array.isArray(t)&&await writeArray(t,a,i);a.push("\nendobj\n")}async function writeDict(e,t,a){t.push("<<");for(const r of e.getKeys()){t.push(` /${(0,i.escapePDFName)(r)} `);await writeValue(e.getRaw(r),t,a)}t.push(">>")}async function writeStream(e,t,a){let i=e.getString();const{dict:s}=e,[o,c]=await Promise.all([s.getAsync("Filter"),s.getAsync("DecodeParms")]),l=Array.isArray(o)?await s.xref.fetchIfRefAsync(o[0]):o,h=(0,n.isName)(l,"FlateDecode");if("undefined"!=typeof CompressionStream&&(i.length>=256||h))try{const e=(0,r.stringToBytes)(i),t=new CompressionStream("deflate"),a=t.writable.getWriter();a.write(e);a.close();const l=await new Response(t.readable).arrayBuffer();i=(0,r.bytesToString)(new Uint8Array(l));let u,d;if(o){if(!h){u=Array.isArray(o)?[n.Name.get("FlateDecode"),...o]:[n.Name.get("FlateDecode"),o];c&&(d=Array.isArray(c)?[null,...c]:[null,c])}}else u=n.Name.get("FlateDecode");u&&s.set("Filter",u);d&&s.set("DecodeParms",d)}catch(e){(0,r.info)(`writeStream - cannot compress data: "${e}".`)}a&&(i=a.encryptString(i));s.set("Length",i.length);await writeDict(s,t,a);t.push(" stream\n",i,"\nendstream")}async function writeArray(e,t,a){t.push("[");let r=!0;for(const n of e){r?r=!1:t.push(" ");await writeValue(n,t,a)}t.push("]")}async function writeValue(e,t,a){if(e instanceof n.Name)t.push(`/${(0,i.escapePDFName)(e.name)}`);else if(e instanceof n.Ref)t.push(`${e.num} ${e.gen} R`);else if(Array.isArray(e))await writeArray(e,t,a);else if("string"==typeof e){a&&(e=a.encryptString(e));t.push(`(${(0,i.escapeString)(e)})`)}else"number"==typeof e?t.push((0,i.numberToString)(e)):"boolean"==typeof e?t.push(e.toString()):e instanceof n.Dict?await writeDict(e,t,a):e instanceof o.BaseStream?await writeStream(e,t,a):null===e?t.push("null"):(0,r.warn)(`Unhandled value in writer: ${typeof e}, please file a bug.`)}function writeInt(e,t,a,r){for(let n=t+a-1;n>a-1;n--){r[n]=255&e;e>>=8}return a+t}function writeString(e,t,a){for(let r=0,n=e.length;r{Object.defineProperty(t,"__esModule",{value:!0});t.calculateSHA256=t.calculateMD5=t.PDF20=t.PDF17=t.CipherTransformFactory=t.ARCFourCipher=t.AES256Cipher=t.AES128Cipher=void 0;t.calculateSHA384=calculateSHA384;t.calculateSHA512=void 0;var r=a(2),n=a(4),i=a(75);class ARCFourCipher{constructor(e){this.a=0;this.b=0;const t=new Uint8Array(256),a=e.length;for(let e=0;e<256;++e)t[e]=e;for(let r=0,n=0;r<256;++r){const i=t[r];n=n+i+e[r%a]&255;t[r]=t[n];t[n]=i}this.s=t}encryptBlock(e){let t=this.a,a=this.b;const r=this.s,n=e.length,i=new Uint8Array(n);for(let s=0;s>5&255;h[u++]=n>>13&255;h[u++]=n>>21&255;h[u++]=n>>>29&255;h[u++]=0;h[u++]=0;h[u++]=0;const g=new Int32Array(16);for(u=0;u>>32-o)|0;n=i}i=i+n|0;s=s+l|0;o=o+f|0;c=c+p|0}return new Uint8Array([255&i,i>>8&255,i>>16&255,i>>>24&255,255&s,s>>8&255,s>>16&255,s>>>24&255,255&o,o>>8&255,o>>16&255,o>>>24&255,255&c,c>>8&255,c>>16&255,c>>>24&255])}}();t.calculateMD5=s;class Word64{constructor(e,t){this.high=0|e;this.low=0|t}and(e){this.high&=e.high;this.low&=e.low}xor(e){this.high^=e.high;this.low^=e.low}or(e){this.high|=e.high;this.low|=e.low}shiftRight(e){if(e>=32){this.low=this.high>>>e-32|0;this.high=0}else{this.low=this.low>>>e|this.high<<32-e;this.high=this.high>>>e|0}}shiftLeft(e){if(e>=32){this.high=this.low<>>32-e;this.low<<=e}}rotateRight(e){let t,a;if(32&e){a=this.low;t=this.high}else{t=this.low;a=this.high}e&=31;this.low=t>>>e|a<<32-e;this.high=a>>>e|t<<32-e}not(){this.high=~this.high;this.low=~this.low}add(e){const t=(this.low>>>0)+(e.low>>>0);let a=(this.high>>>0)+(e.high>>>0);t>4294967295&&(a+=1);this.low=0|t;this.high=0|a}copyTo(e,t){e[t]=this.high>>>24&255;e[t+1]=this.high>>16&255;e[t+2]=this.high>>8&255;e[t+3]=255&this.high;e[t+4]=this.low>>>24&255;e[t+5]=this.low>>16&255;e[t+6]=this.low>>8&255;e[t+7]=255&this.low}assign(e){this.high=e.high;this.low=e.low}}const o=function calculateSHA256Closure(){function rotr(e,t){return e>>>t|e<<32-t}function ch(e,t,a){return e&t^~e&a}function maj(e,t,a){return e&t^e&a^t&a}function sigma(e){return rotr(e,2)^rotr(e,13)^rotr(e,22)}function sigmaPrime(e){return rotr(e,6)^rotr(e,11)^rotr(e,25)}function littleSigma(e){return rotr(e,7)^rotr(e,18)^e>>>3}const e=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];return function hash(t,a,r){let n=1779033703,i=3144134277,s=1013904242,o=2773480762,c=1359893119,l=2600822924,h=528734635,u=1541459225;const d=64*Math.ceil((r+9)/64),f=new Uint8Array(d);let g,p;for(g=0;g>>29&255;f[g++]=r>>21&255;f[g++]=r>>13&255;f[g++]=r>>5&255;f[g++]=r<<3&255;const b=new Uint32Array(64);for(g=0;g>>10)+b[p-7]+littleSigma(b[p-15])+b[p-16]|0;let t,a,r=n,d=i,m=s,w=o,S=c,x=l,C=h,k=u;for(p=0;p<64;++p){t=k+sigmaPrime(S)+ch(S,x,C)+e[p]+b[p];a=sigma(r)+maj(r,d,m);k=C;C=x;x=S;S=w+t|0;w=m;m=d;d=r;r=t+a|0}n=n+r|0;i=i+d|0;s=s+m|0;o=o+w|0;c=c+S|0;l=l+x|0;h=h+C|0;u=u+k|0}var y;return new Uint8Array([n>>24&255,n>>16&255,n>>8&255,255&n,i>>24&255,i>>16&255,i>>8&255,255&i,s>>24&255,s>>16&255,s>>8&255,255&s,o>>24&255,o>>16&255,o>>8&255,255&o,c>>24&255,c>>16&255,c>>8&255,255&c,l>>24&255,l>>16&255,l>>8&255,255&l,h>>24&255,h>>16&255,h>>8&255,255&h,u>>24&255,u>>16&255,u>>8&255,255&u])}}();t.calculateSHA256=o;const c=function calculateSHA512Closure(){function ch(e,t,a,r,n){e.assign(t);e.and(a);n.assign(t);n.not();n.and(r);e.xor(n)}function maj(e,t,a,r,n){e.assign(t);e.and(a);n.assign(t);n.and(r);e.xor(n);n.assign(a);n.and(r);e.xor(n)}function sigma(e,t,a){e.assign(t);e.rotateRight(28);a.assign(t);a.rotateRight(34);e.xor(a);a.assign(t);a.rotateRight(39);e.xor(a)}function sigmaPrime(e,t,a){e.assign(t);e.rotateRight(14);a.assign(t);a.rotateRight(18);e.xor(a);a.assign(t);a.rotateRight(41);e.xor(a)}function littleSigma(e,t,a){e.assign(t);e.rotateRight(1);a.assign(t);a.rotateRight(8);e.xor(a);a.assign(t);a.shiftRight(7);e.xor(a)}function littleSigmaPrime(e,t,a){e.assign(t);e.rotateRight(19);a.assign(t);a.rotateRight(61);e.xor(a);a.assign(t);a.shiftRight(6);e.xor(a)}const e=[new Word64(1116352408,3609767458),new Word64(1899447441,602891725),new Word64(3049323471,3964484399),new Word64(3921009573,2173295548),new Word64(961987163,4081628472),new Word64(1508970993,3053834265),new Word64(2453635748,2937671579),new Word64(2870763221,3664609560),new Word64(3624381080,2734883394),new Word64(310598401,1164996542),new Word64(607225278,1323610764),new Word64(1426881987,3590304994),new Word64(1925078388,4068182383),new Word64(2162078206,991336113),new Word64(2614888103,633803317),new Word64(3248222580,3479774868),new Word64(3835390401,2666613458),new Word64(4022224774,944711139),new Word64(264347078,2341262773),new Word64(604807628,2007800933),new Word64(770255983,1495990901),new Word64(1249150122,1856431235),new Word64(1555081692,3175218132),new Word64(1996064986,2198950837),new Word64(2554220882,3999719339),new Word64(2821834349,766784016),new Word64(2952996808,2566594879),new Word64(3210313671,3203337956),new Word64(3336571891,1034457026),new Word64(3584528711,2466948901),new Word64(113926993,3758326383),new Word64(338241895,168717936),new Word64(666307205,1188179964),new Word64(773529912,1546045734),new Word64(1294757372,1522805485),new Word64(1396182291,2643833823),new Word64(1695183700,2343527390),new Word64(1986661051,1014477480),new Word64(2177026350,1206759142),new Word64(2456956037,344077627),new Word64(2730485921,1290863460),new Word64(2820302411,3158454273),new Word64(3259730800,3505952657),new Word64(3345764771,106217008),new Word64(3516065817,3606008344),new Word64(3600352804,1432725776),new Word64(4094571909,1467031594),new Word64(275423344,851169720),new Word64(430227734,3100823752),new Word64(506948616,1363258195),new Word64(659060556,3750685593),new Word64(883997877,3785050280),new Word64(958139571,3318307427),new Word64(1322822218,3812723403),new Word64(1537002063,2003034995),new Word64(1747873779,3602036899),new Word64(1955562222,1575990012),new Word64(2024104815,1125592928),new Word64(2227730452,2716904306),new Word64(2361852424,442776044),new Word64(2428436474,593698344),new Word64(2756734187,3733110249),new Word64(3204031479,2999351573),new Word64(3329325298,3815920427),new Word64(3391569614,3928383900),new Word64(3515267271,566280711),new Word64(3940187606,3454069534),new Word64(4118630271,4000239992),new Word64(116418474,1914138554),new Word64(174292421,2731055270),new Word64(289380356,3203993006),new Word64(460393269,320620315),new Word64(685471733,587496836),new Word64(852142971,1086792851),new Word64(1017036298,365543100),new Word64(1126000580,2618297676),new Word64(1288033470,3409855158),new Word64(1501505948,4234509866),new Word64(1607167915,987167468),new Word64(1816402316,1246189591)];return function hash(t,a,r,n=!1){let i,s,o,c,l,h,u,d;if(n){i=new Word64(3418070365,3238371032);s=new Word64(1654270250,914150663);o=new Word64(2438529370,812702999);c=new Word64(355462360,4144912697);l=new Word64(1731405415,4290775857);h=new Word64(2394180231,1750603025);u=new Word64(3675008525,1694076839);d=new Word64(1203062813,3204075428)}else{i=new Word64(1779033703,4089235720);s=new Word64(3144134277,2227873595);o=new Word64(1013904242,4271175723);c=new Word64(2773480762,1595750129);l=new Word64(1359893119,2917565137);h=new Word64(2600822924,725511199);u=new Word64(528734635,4215389547);d=new Word64(1541459225,327033209)}const f=128*Math.ceil((r+17)/128),g=new Uint8Array(f);let p,m;for(p=0;p>>29&255;g[p++]=r>>21&255;g[p++]=r>>13&255;g[p++]=r>>5&255;g[p++]=r<<3&255;const y=new Array(80);for(p=0;p<80;p++)y[p]=new Word64(0,0);let w=new Word64(0,0),S=new Word64(0,0),x=new Word64(0,0),C=new Word64(0,0),k=new Word64(0,0),v=new Word64(0,0),F=new Word64(0,0),O=new Word64(0,0);const T=new Word64(0,0),M=new Word64(0,0),D=new Word64(0,0),E=new Word64(0,0);let N,R;for(p=0;p=1;--e){a=i[13];i[13]=i[9];i[9]=i[5];i[5]=i[1];i[1]=a;a=i[14];r=i[10];i[14]=i[6];i[10]=i[2];i[6]=a;i[2]=r;a=i[15];r=i[11];n=i[7];i[15]=i[3];i[11]=a;i[7]=r;i[3]=n;for(let e=0;e<16;++e)i[e]=this._inv_s[i[e]];for(let a=0,r=16*e;a<16;++a,++r)i[a]^=t[r];for(let e=0;e<16;e+=4){const t=this._mix[i[e]],r=this._mix[i[e+1]],n=this._mix[i[e+2]],s=this._mix[i[e+3]];a=t^r>>>8^r<<24^n>>>16^n<<16^s>>>24^s<<8;i[e]=a>>>24&255;i[e+1]=a>>16&255;i[e+2]=a>>8&255;i[e+3]=255&a}}a=i[13];i[13]=i[9];i[9]=i[5];i[5]=i[1];i[1]=a;a=i[14];r=i[10];i[14]=i[6];i[10]=i[2];i[6]=a;i[2]=r;a=i[15];r=i[11];n=i[7];i[15]=i[3];i[11]=a;i[7]=r;i[3]=n;for(let e=0;e<16;++e){i[e]=this._inv_s[i[e]];i[e]^=t[e]}return i}_encrypt(e,t){const a=this._s;let r,n,i;const s=new Uint8Array(16);s.set(e);for(let e=0;e<16;++e)s[e]^=t[e];for(let e=1;e=r;--a)if(e[a]!==t){t=0;break}o-=t;i[i.length-1]=e.subarray(0,16-t)}}const c=new Uint8Array(o);for(let e=0,t=0,a=i.length;e=256&&(o=255&(27^o))}for(let t=0;t<4;++t){a[e]=r^=a[e-32];e++;a[e]=n^=a[e-32];e++;a[e]=i^=a[e-32];e++;a[e]=s^=a[e-32];e++}}return a}}t.AES256Cipher=AES256Cipher;class PDF17{checkOwnerPassword(e,t,a,n){const i=new Uint8Array(e.length+56);i.set(e,0);i.set(t,e.length);i.set(a,e.length+t.length);const s=o(i,0,i.length);return(0,r.isArrayEqual)(s,n)}checkUserPassword(e,t,a){const n=new Uint8Array(e.length+8);n.set(e,0);n.set(t,e.length);const i=o(n,0,n.length);return(0,r.isArrayEqual)(i,a)}getOwnerKey(e,t,a,r){const n=new Uint8Array(e.length+56);n.set(e,0);n.set(t,e.length);n.set(a,e.length+t.length);const i=o(n,0,n.length);return new AES256Cipher(i).decryptBlock(r,!1,new Uint8Array(16))}getUserKey(e,t,a){const r=new Uint8Array(e.length+8);r.set(e,0);r.set(t,e.length);const n=o(r,0,r.length);return new AES256Cipher(n).decryptBlock(a,!1,new Uint8Array(16))}}t.PDF17=PDF17;class PDF20{_hash(e,t,a){let r=o(t,0,t.length).subarray(0,32),n=[0],i=0;for(;i<64||n.at(-1)>i-32;){const t=e.length+r.length+a.length,s=new Uint8Array(t);let l=0;s.set(e,l);l+=e.length;s.set(r,l);l+=r.length;s.set(a,l);const h=new Uint8Array(64*t);for(let e=0,a=0;e<64;e++,a+=t)h.set(s,a);n=new AES128Cipher(r.subarray(0,16)).encrypt(h,r.subarray(16,32));const u=n.slice(0,16).reduce(((e,t)=>e+t),0)%3;0===u?r=o(n,0,n.length):1===u?r=calculateSHA384(n,0,n.length):2===u&&(r=c(n,0,n.length));i++}return r.subarray(0,32)}checkOwnerPassword(e,t,a,n){const i=new Uint8Array(e.length+56);i.set(e,0);i.set(t,e.length);i.set(a,e.length+t.length);const s=this._hash(e,i,a);return(0,r.isArrayEqual)(s,n)}checkUserPassword(e,t,a){const n=new Uint8Array(e.length+8);n.set(e,0);n.set(t,e.length);const i=this._hash(e,n,[]);return(0,r.isArrayEqual)(i,a)}getOwnerKey(e,t,a,r){const n=new Uint8Array(e.length+56);n.set(e,0);n.set(t,e.length);n.set(a,e.length+t.length);const i=this._hash(e,n,a);return new AES256Cipher(i).decryptBlock(r,!1,new Uint8Array(16))}getUserKey(e,t,a){const r=new Uint8Array(e.length+8);r.set(e,0);r.set(t,e.length);const n=this._hash(e,r,[]);return new AES256Cipher(n).decryptBlock(a,!1,new Uint8Array(16))}}t.PDF20=PDF20;class CipherTransform{constructor(e,t){this.StringCipherConstructor=e;this.StreamCipherConstructor=t}createStream(e,t){const a=new this.StreamCipherConstructor;return new i.DecryptStream(e,t,(function cipherTransformDecryptStream(e,t){return a.decryptBlock(e,t)}))}decryptString(e){const t=new this.StringCipherConstructor;let a=(0,r.stringToBytes)(e);a=t.decryptBlock(a,!0);return(0,r.bytesToString)(a)}encryptString(e){const t=new this.StringCipherConstructor;if(t instanceof AESBaseCipher){const a=16-e.length%16;e+=String.fromCharCode(a).repeat(a);const n=new Uint8Array(16);if("undefined"!=typeof crypto)crypto.getRandomValues(n);else for(let e=0;e<16;e++)n[e]=Math.floor(256*Math.random());let i=(0,r.stringToBytes)(e);i=t.encrypt(i,n);const s=new Uint8Array(16+i.length);s.set(n);s.set(i,16);return(0,r.bytesToString)(s)}let a=(0,r.stringToBytes)(e);a=t.encrypt(a);return(0,r.bytesToString)(a)}}class CipherTransformFactory{static#O=new Uint8Array([40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122]);#I(e,t,a,r,n,i,s,o,c,l,h,u){if(t){const e=Math.min(127,t.length);t=t.subarray(0,e)}else t=[];const d=6===e?new PDF20:new PDF17;return d.checkUserPassword(t,o,s)?d.getUserKey(t,c,h):t.length&&d.checkOwnerPassword(t,r,i,a)?d.getOwnerKey(t,n,i,l):null}#T(e,t,a,r,n,i,o,c){const l=40+a.length+e.length,h=new Uint8Array(l);let u,d,f=0;if(t){d=Math.min(32,t.length);for(;f>8&255;h[f++]=n>>16&255;h[f++]=n>>>24&255;for(u=0,d=e.length;u=4&&!c){h[f++]=255;h[f++]=255;h[f++]=255;h[f++]=255}let g=s(h,0,f);const p=o>>3;if(i>=3)for(u=0;u<50;++u)g=s(g,0,p);const m=g.subarray(0,p);let b,y;if(i>=3){for(f=0;f<32;++f)h[f]=CipherTransformFactory.#O[f];for(u=0,d=e.length;u>3;if(a>=3)for(c=0;c<50;++c)l=s(l,0,l.length);let u,d;if(a>=3){d=t;const e=new Uint8Array(h);for(c=19;c>=0;c--){for(let t=0;t>8&255;n[o++]=e>>16&255;n[o++]=255&t;n[o++]=t>>8&255;if(r){n[o++]=115;n[o++]=65;n[o++]=108;n[o++]=84}return s(n,0,o).subarray(0,Math.min(a.length+5,16))}#D(e,t,a,i,s){if(!(t instanceof n.Name))throw new r.FormatError("Invalid crypt filter name.");const o=this,c=e.get(t.name),l=c?.get("CFM");if(!l||"None"===l.name)return function(){return new NullCipher};if("V2"===l.name)return function(){return new ARCFourCipher(o.#P(a,i,s,!1))};if("AESV2"===l.name)return function(){return new AES128Cipher(o.#P(a,i,s,!0))};if("AESV3"===l.name)return function(){return new AES256Cipher(s)};throw new r.FormatError("Unknown crypto method")}constructor(e,t,a){const i=e.get("Filter");if(!(0,n.isName)(i,"Standard"))throw new r.FormatError("unknown encryption method");this.filterName=i.name;this.dict=e;const s=e.get("V");if(!Number.isInteger(s)||1!==s&&2!==s&&4!==s&&5!==s)throw new r.FormatError("unsupported encryption algorithm");this.algorithm=s;let o=e.get("Length");if(!o)if(s<=3)o=40;else{const t=e.get("CF"),a=e.get("StmF");if(t instanceof n.Dict&&a instanceof n.Name){t.suppressEncryption=!0;const e=t.get(a.name);o=e?.get("Length")||128;o<40&&(o<<=3)}}if(!Number.isInteger(o)||o<40||o%8!=0)throw new r.FormatError("invalid key length");const c=(0,r.stringToBytes)(e.get("O")),l=(0,r.stringToBytes)(e.get("U")),h=c.subarray(0,32),u=l.subarray(0,32),d=e.get("P"),f=e.get("R"),g=(4===s||5===s)&&!1!==e.get("EncryptMetadata");this.encryptMetadata=g;const p=(0,r.stringToBytes)(t);let m,b;if(a){if(6===f)try{a=(0,r.utf8StringToString)(a)}catch{(0,r.warn)("CipherTransformFactory: Unable to convert UTF8 encoded password.")}m=(0,r.stringToBytes)(a)}if(5!==s)b=this.#T(p,m,h,u,d,f,o,g);else{const t=c.subarray(32,40),a=c.subarray(40,48),n=l.subarray(0,48),i=l.subarray(32,40),s=l.subarray(40,48),o=(0,r.stringToBytes)(e.get("OE")),d=(0,r.stringToBytes)(e.get("UE")),g=(0,r.stringToBytes)(e.get("Perms"));b=this.#I(f,m,h,t,a,n,u,i,s,o,d,g)}if(!b&&!a)throw new r.PasswordException("No password given",r.PasswordResponses.NEED_PASSWORD);if(!b&&a){const e=this.#M(m,h,f,o);b=this.#T(p,e,h,u,d,f,o,g)}if(!b)throw new r.PasswordException("Incorrect Password",r.PasswordResponses.INCORRECT_PASSWORD);this.encryptionKey=b;if(s>=4){const t=e.get("CF");t instanceof n.Dict&&(t.suppressEncryption=!0);this.cf=t;this.stmf=e.get("StmF")||n.Name.get("Identity");this.strf=e.get("StrF")||n.Name.get("Identity");this.eff=e.get("EFF")||this.stmf}}createCipherTransform(e,t){if(4===this.algorithm||5===this.algorithm)return new CipherTransform(this.#D(this.cf,this.strf,e,t,this.encryptionKey),this.#D(this.cf,this.stmf,e,t,this.encryptionKey));const a=this.#P(e,t,this.encryptionKey,!1),cipherConstructor=function(){return new ARCFourCipher(a)};return new CipherTransform(cipherConstructor,cipherConstructor)}}t.CipherTransformFactory=CipherTransformFactory},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.DecryptStream=void 0;var r=a(18);class DecryptStream extends r.DecodeStream{constructor(e,t,a){super(t);this.str=e;this.dict=e.dict;this.decrypt=a;this.nextChunk=null;this.initialized=!1}readBlock(){let e;if(this.initialized)e=this.nextChunk;else{e=this.str.getBytes(512);this.initialized=!0}if(!e||0===e.length){this.eof=!0;return}this.nextChunk=this.str.getBytes(512);const t=this.nextChunk?.length>0;e=(0,this.decrypt)(e,!t);const a=this.bufferLength,r=a+e.length;this.ensureBuffer(r).set(e,a);this.bufferLength=r}}t.DecryptStream=DecryptStream},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ObjectLoader=void 0;var r=a(4),n=a(5),i=a(3),s=a(2);function addChildren(e,t){if(e instanceof r.Dict)e=e.getRawValues();else if(e instanceof n.BaseStream)e=e.dict.getRawValues();else if(!Array.isArray(e))return;for(const i of e)((a=i)instanceof r.Ref||a instanceof r.Dict||a instanceof n.BaseStream||Array.isArray(a))&&t.push(i);var a}t.ObjectLoader=class ObjectLoader{constructor(e,t,a){this.dict=e;this.keys=t;this.xref=a;this.refSet=null}async load(){if(this.xref.stream.isDataLoaded)return;const{keys:e,dict:t}=this;this.refSet=new r.RefSet;const a=[];for(const r of e){const e=t.getRaw(r);void 0!==e&&a.push(e)}return this._walk(a)}async _walk(e){const t=[],a=[];for(;e.length;){let o=e.pop();if(o instanceof r.Ref){if(this.refSet.has(o))continue;try{this.refSet.put(o);o=this.xref.fetch(o)}catch(e){if(!(e instanceof i.MissingDataException)){(0,s.warn)(`ObjectLoader._walk - requesting all data: "${e}".`);this.refSet=null;const{manager:t}=this.xref.stream;return t.requestAllChunks()}t.push(o);a.push({begin:e.begin,end:e.end})}}if(o instanceof n.BaseStream){const e=o.getBaseStreams();if(e){let r=!1;for(const t of e)if(!t.isDataLoaded){r=!0;a.push({begin:t.start,end:t.end})}r&&t.push(o)}}addChildren(o,e)}if(a.length){await this.xref.stream.manager.requestRanges(a);for(const e of t)e instanceof r.Ref&&this.refSet.remove(e);return this._walk(t)}this.refSet=null}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XFAFactory=void 0;var r=a(78),n=a(79),i=a(89),s=a(85),o=a(84),c=a(2),l=a(90),h=a(100);class XFAFactory{constructor(e){try{this.root=(new l.XFAParser).parse(XFAFactory._createDocument(e));const t=new n.Binder(this.root);this.form=t.bind();this.dataHandler=new i.DataHandler(this.root,t.getData());this.form[r.$globalData].template=this.form}catch(e){(0,c.warn)(`XFA - an error occurred during parsing and binding: ${e}`)}}isValid(){return this.root&&this.form}_createPagesHelper(){const e=this.form[r.$toPages]();return new Promise(((t,a)=>{const nextIteration=()=>{try{const a=e.next();a.done?t(a.value):setTimeout(nextIteration,0)}catch(e){a(e)}};setTimeout(nextIteration,0)}))}async _createPages(){try{this.pages=await this._createPagesHelper();this.dims=this.pages.children.map((e=>{const{width:t,height:a}=e.attributes.style;return[0,0,parseInt(t),parseInt(a)]}))}catch(e){(0,c.warn)(`XFA - an error occurred during layout: ${e}`)}}getBoundingBox(e){return this.dims[e]}async getNumPages(){this.pages||await this._createPages();return this.dims.length}setImages(e){this.form[r.$globalData].images=e}setFonts(e){this.form[r.$globalData].fontFinder=new s.FontFinder(e);const t=[];for(let e of this.form[r.$globalData].usedTypefaces){e=(0,o.stripQuotes)(e);this.form[r.$globalData].fontFinder.find(e)||t.push(e)}return t.length>0?t:null}appendFonts(e,t){this.form[r.$globalData].fontFinder.add(e,t)}async getPages(){this.pages||await this._createPages();const e=this.pages;this.pages=null;return e}serializeData(e){return this.dataHandler.serialize(e)}static _createDocument(e){return e["/xdp:xdp"]?Object.values(e).join(""):e["xdp:xdp"]}static getRichTextAsHtml(e){if(!e||"string"!=typeof e)return null;try{let t=new l.XFAParser(h.XhtmlNamespace,!0).parse(e);if(!["body","xhtml"].includes(t[r.$nodeName])){const e=h.XhtmlNamespace.body({});e[r.$appendChild](t);t=e}const a=t[r.$toHTML]();if(!a.success)return null;const{html:n}=a,{attributes:i}=n;if(i){i.class&&(i.class=i.class.filter((e=>!e.startsWith("xfa"))));i.dir="auto"}return{html:n,str:t[r.$text]()}}catch(e){(0,c.warn)(`XFA - an error occurred during parsing of rich text: ${e}`)}return null}}t.XFAFactory=XFAFactory},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.$uid=t.$toStyle=t.$toString=t.$toPages=t.$toHTML=t.$text=t.$tabIndex=t.$setValue=t.$setSetAttributes=t.$setId=t.$searchNode=t.$root=t.$resolvePrototypes=t.$removeChild=t.$pushPara=t.$pushGlyphs=t.$popPara=t.$onText=t.$onChildCheck=t.$onChild=t.$nsAttributes=t.$nodeName=t.$namespaceId=t.$lastAttribute=t.$isUsable=t.$isTransparent=t.$isThereMoreWidth=t.$isSplittable=t.$isNsAgnostic=t.$isDescendent=t.$isDataValue=t.$isCDATAXml=t.$isBindable=t.$insertAt=t.$indexOf=t.$ids=t.$hasSettableValue=t.$globalData=t.$getTemplateRoot=t.$getSubformParent=t.$getRealChildrenByNameIt=t.$getParent=t.$getNextPage=t.$getExtra=t.$getDataValue=t.$getContainedChildren=t.$getChildrenByNameIt=t.$getChildrenByName=t.$getChildrenByClass=t.$getChildren=t.$getAvailableSpace=t.$getAttributes=t.$getAttributeIt=t.$flushHTML=t.$finalize=t.$extra=t.$dump=t.$data=t.$content=t.$consumed=t.$clone=t.$cleanup=t.$cleanPage=t.$clean=t.$childrenToHTML=t.$appendChild=t.$addHTML=t.$acceptWhitespace=void 0;const a=Symbol();t.$acceptWhitespace=a;const r=Symbol();t.$addHTML=r;const n=Symbol();t.$appendChild=n;const i=Symbol();t.$childrenToHTML=i;const s=Symbol();t.$clean=s;const o=Symbol();t.$cleanPage=o;const c=Symbol();t.$cleanup=c;const l=Symbol();t.$clone=l;const h=Symbol();t.$consumed=h;const u=Symbol("content");t.$content=u;const d=Symbol("data");t.$data=d;const f=Symbol();t.$dump=f;const g=Symbol("extra");t.$extra=g;const p=Symbol();t.$finalize=p;const m=Symbol();t.$flushHTML=m;const b=Symbol();t.$getAttributeIt=b;const y=Symbol();t.$getAttributes=y;const w=Symbol();t.$getAvailableSpace=w;const S=Symbol();t.$getChildrenByClass=S;const x=Symbol();t.$getChildrenByName=x;const C=Symbol();t.$getChildrenByNameIt=C;const k=Symbol();t.$getDataValue=k;const v=Symbol();t.$getExtra=v;const F=Symbol();t.$getRealChildrenByNameIt=F;const O=Symbol();t.$getChildren=O;const T=Symbol();t.$getContainedChildren=T;const M=Symbol();t.$getNextPage=M;const D=Symbol();t.$getSubformParent=D;const E=Symbol();t.$getParent=E;const N=Symbol();t.$getTemplateRoot=N;const R=Symbol();t.$globalData=R;const L=Symbol();t.$hasSettableValue=L;const $=Symbol();t.$ids=$;const _=Symbol();t.$indexOf=_;const j=Symbol();t.$insertAt=j;const U=Symbol();t.$isCDATAXml=U;const X=Symbol();t.$isBindable=X;const H=Symbol();t.$isDataValue=H;const q=Symbol();t.$isDescendent=q;const z=Symbol();t.$isNsAgnostic=z;const W=Symbol();t.$isSplittable=W;const G=Symbol();t.$isThereMoreWidth=G;const V=Symbol();t.$isTransparent=V;const K=Symbol();t.$isUsable=K;const J=Symbol();t.$lastAttribute=J;const Y=Symbol("namespaceId");t.$namespaceId=Y;const Z=Symbol("nodeName");t.$nodeName=Z;const Q=Symbol();t.$nsAttributes=Q;const ee=Symbol();t.$onChild=ee;const te=Symbol();t.$onChildCheck=te;const ae=Symbol();t.$onText=ae;const re=Symbol();t.$pushGlyphs=re;const ne=Symbol();t.$popPara=ne;const ie=Symbol();t.$pushPara=ie;const se=Symbol();t.$removeChild=se;const oe=Symbol("root");t.$root=oe;const ce=Symbol();t.$resolvePrototypes=ce;const le=Symbol();t.$searchNode=le;const he=Symbol();t.$setId=he;const ue=Symbol();t.$setSetAttributes=ue;const de=Symbol();t.$setValue=de;const fe=Symbol();t.$tabIndex=fe;const ge=Symbol();t.$text=ge;const pe=Symbol();t.$toPages=pe;const me=Symbol();t.$toHTML=me;const be=Symbol();t.$toString=be;const ye=Symbol();t.$toStyle=ye;const we=Symbol("uid");t.$uid=we},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Binder=void 0;var r=a(78),n=a(80),i=a(88),s=a(87),o=a(81),c=a(2);const l=o.NamespaceIds.datasets.id;function createText(e){const t=new n.Text({});t[r.$content]=e;return t}t.Binder=class Binder{constructor(e){this.root=e;this.datasets=e.datasets;this.data=e.datasets?.data||new s.XmlObject(o.NamespaceIds.datasets.id,"data");this.emptyMerge=0===this.data[r.$getChildren]().length;this.root.form=this.form=e.template[r.$clone]()}_isConsumeData(){return!this.emptyMerge&&this._mergeMode}_isMatchTemplate(){return!this._isConsumeData()}bind(){this._bindElement(this.form,this.data);return this.form}getData(){return this.data}_bindValue(e,t,a){e[r.$data]=t;if(e[r.$hasSettableValue]())if(t[r.$isDataValue]()){const a=t[r.$getDataValue]();e[r.$setValue](createText(a))}else if(e instanceof n.Field&&"multiSelect"===e.ui?.choiceList?.open){const a=t[r.$getChildren]().map((e=>e[r.$content].trim())).join("\n");e[r.$setValue](createText(a))}else this._isConsumeData()&&(0,c.warn)("XFA - Nodes haven't the same type.");else!t[r.$isDataValue]()||this._isMatchTemplate()?this._bindElement(e,t):(0,c.warn)("XFA - Nodes haven't the same type.")}_findDataByNameToConsume(e,t,a,n){if(!e)return null;let i,s;for(let n=0;n<3;n++){i=a[r.$getRealChildrenByNameIt](e,!1,!0);for(;;){s=i.next().value;if(!s)break;if(t===s[r.$isDataValue]())return s}if(a[r.$namespaceId]===o.NamespaceIds.datasets.id&&"data"===a[r.$nodeName])break;a=a[r.$getParent]()}if(!n)return null;i=this.data[r.$getRealChildrenByNameIt](e,!0,!1);s=i.next().value;if(s)return s;i=this.data[r.$getAttributeIt](e,!0);s=i.next().value;return s?.[r.$isDataValue]()?s:null}_setProperties(e,t){if(e.hasOwnProperty("setProperty"))for(const{ref:a,target:o,connection:l}of e.setProperty.children){if(l)continue;if(!a)continue;const h=(0,i.searchNode)(this.root,t,a,!1,!1);if(!h){(0,c.warn)(`XFA - Invalid reference: ${a}.`);continue}const[u]=h;if(!u[r.$isDescendent](this.data)){(0,c.warn)("XFA - Invalid node: must be a data node.");continue}const d=(0,i.searchNode)(this.root,e,o,!1,!1);if(!d){(0,c.warn)(`XFA - Invalid target: ${o}.`);continue}const[f]=d;if(!f[r.$isDescendent](e)){(0,c.warn)("XFA - Invalid target: must be a property or subproperty.");continue}const g=f[r.$getParent]();if(f instanceof n.SetProperty||g instanceof n.SetProperty){(0,c.warn)("XFA - Invalid target: cannot be a setProperty or one of its properties.");continue}if(f instanceof n.BindItems||g instanceof n.BindItems){(0,c.warn)("XFA - Invalid target: cannot be a bindItems or one of its properties.");continue}const p=u[r.$text](),m=f[r.$nodeName];if(f instanceof s.XFAAttribute){const e=Object.create(null);e[m]=p;const t=Reflect.construct(Object.getPrototypeOf(g).constructor,[e]);g[m]=t[m]}else if(f.hasOwnProperty(r.$content)){f[r.$data]=u;f[r.$content]=p;f[r.$finalize]()}else(0,c.warn)("XFA - Invalid node to use in setProperty")}}_bindItems(e,t){if(!e.hasOwnProperty("items")||!e.hasOwnProperty("bindItems")||e.bindItems.isEmpty())return;for(const t of e.items.children)e[r.$removeChild](t);e.items.clear();const a=new n.Items({}),s=new n.Items({});e[r.$appendChild](a);e.items.push(a);e[r.$appendChild](s);e.items.push(s);for(const{ref:n,labelRef:o,valueRef:l,connection:h}of e.bindItems.children){if(h)continue;if(!n)continue;const e=(0,i.searchNode)(this.root,t,n,!1,!1);if(e)for(const t of e){if(!t[r.$isDescendent](this.datasets)){(0,c.warn)(`XFA - Invalid ref (${n}): must be a datasets child.`);continue}const e=(0,i.searchNode)(this.root,t,o,!0,!1);if(!e){(0,c.warn)(`XFA - Invalid label: ${o}.`);continue}const[h]=e;if(!h[r.$isDescendent](this.datasets)){(0,c.warn)("XFA - Invalid label: must be a datasets child.");continue}const u=(0,i.searchNode)(this.root,t,l,!0,!1);if(!u){(0,c.warn)(`XFA - Invalid value: ${l}.`);continue}const[d]=u;if(!d[r.$isDescendent](this.datasets)){(0,c.warn)("XFA - Invalid value: must be a datasets child.");continue}const f=createText(h[r.$text]()),g=createText(d[r.$text]());a[r.$appendChild](f);a.text.push(f);s[r.$appendChild](g);s.text.push(g)}else(0,c.warn)(`XFA - Invalid reference: ${n}.`)}}_bindOccurrences(e,t,a){let n;if(t.length>1){n=e[r.$clone]();n[r.$removeChild](n.occur);n.occur=null}this._bindValue(e,t[0],a);this._setProperties(e,t[0]);this._bindItems(e,t[0]);if(1===t.length)return;const i=e[r.$getParent](),s=e[r.$nodeName],o=i[r.$indexOf](e);for(let e=1,c=t.length;et.name===e.name)).length:a[n].children.length;const o=a[r.$indexOf](e)+1,c=t.initial-i;if(c){const t=e[r.$clone]();t[r.$removeChild](t.occur);t.occur=null;a[n].push(t);a[r.$insertAt](o,t);for(let e=1;e0)this._bindOccurrences(n,[e[0]],null);else if(this.emptyMerge){const e=t[r.$namespaceId]===l?-1:t[r.$namespaceId],a=n[r.$data]=new s.XmlObject(e,n.name||"root");t[r.$appendChild](a);this._bindElement(n,a)}continue}if(!n[r.$isBindable]())continue;let e=!1,o=null,h=null,u=null;if(n.bind){switch(n.bind.match){case"none":this._setAndBind(n,t);continue;case"global":e=!0;break;case"dataRef":if(!n.bind.ref){(0,c.warn)(`XFA - ref is empty in node ${n[r.$nodeName]}.`);this._setAndBind(n,t);continue}h=n.bind.ref}n.bind.picture&&(o=n.bind.picture[r.$content])}const[d,f]=this._getOccurInfo(n);if(h){u=(0,i.searchNode)(this.root,t,h,!0,!1);if(null===u){u=(0,i.createDataNode)(this.data,t,h);if(!u)continue;this._isConsumeData()&&(u[r.$consumed]=!0);this._setAndBind(n,u);continue}this._isConsumeData()&&(u=u.filter((e=>!e[r.$consumed])));u.length>f?u=u.slice(0,f):0===u.length&&(u=null);u&&this._isConsumeData()&&u.forEach((e=>{e[r.$consumed]=!0}))}else{if(!n.name){this._setAndBind(n,t);continue}if(this._isConsumeData()){const a=[];for(;a.length0?a:null}else{u=t[r.$getRealChildrenByNameIt](n.name,!1,this.emptyMerge).next().value;if(!u){if(0===d){a.push(n);continue}const e=t[r.$namespaceId]===l?-1:t[r.$namespaceId];u=n[r.$data]=new s.XmlObject(e,n.name);this.emptyMerge&&(u[r.$consumed]=!0);t[r.$appendChild](u);this._setAndBind(n,u);continue}this.emptyMerge&&(u[r.$consumed]=!0);u=[u]}}u?this._bindOccurrences(n,u,o):d>0?this._setAndBind(n,t):a.push(n)}a.forEach((e=>e[r.$getParent]()[r.$removeChild](e)))}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Value=t.Text=t.TemplateNamespace=t.Template=t.SetProperty=t.Items=t.Field=t.BindItems=void 0;var r=a(78),n=a(81),i=a(82),s=a(83),o=a(87),c=a(84),l=a(2),h=a(85),u=a(3),d=a(88);const f=n.NamespaceIds.template.id,g="http://www.w3.org/2000/svg",p=/^H(\d+)$/,m=new Set(["image/gif","image/jpeg","image/jpg","image/pjpeg","image/png","image/apng","image/x-png","image/bmp","image/x-ms-bmp","image/tiff","image/tif","application/octet-stream"]),b=[[[66,77],"image/bmp"],[[255,216,255],"image/jpeg"],[[73,73,42,0],"image/tiff"],[[77,77,0,42],"image/tiff"],[[71,73,70,56,57,97],"image/gif"],[[137,80,78,71,13,10,26,10],"image/png"]];function getBorderDims(e){if(!e||!e.border)return{w:0,h:0};const t=e.border[r.$getExtra]();return t?{w:t.widths[0]+t.widths[2]+t.insets[0]+t.insets[2],h:t.widths[1]+t.widths[3]+t.insets[1]+t.insets[3]}:{w:0,h:0}}function hasMargin(e){return e.margin&&(e.margin.topInset||e.margin.rightInset||e.margin.bottomInset||e.margin.leftInset)}function _setValue(e,t){if(!e.value){const t=new Value({});e[r.$appendChild](t);e.value=t}e.value[r.$setValue](t)}function*getContainedChildren(e){for(const t of e[r.$getChildren]())t instanceof SubformSet?yield*t[r.$getContainedChildren]():yield t}function isRequired(e){return"error"===e.validate?.nullTest}function setTabIndex(e){for(;e;){if(!e.traversal){e[r.$tabIndex]=e[r.$getParent]()[r.$tabIndex];return}if(e[r.$tabIndex])return;let t=null;for(const a of e.traversal[r.$getChildren]())if("next"===a.operation){t=a;break}if(!t||!t.ref){e[r.$tabIndex]=e[r.$getParent]()[r.$tabIndex];return}const a=e[r.$getTemplateRoot]();e[r.$tabIndex]=++a[r.$tabIndex];const n=a[r.$searchNode](t.ref,e);if(!n)return;e=n[0]}}function applyAssist(e,t){const a=e.assist;if(a){const e=a[r.$toHTML]();e&&(t.title=e);const n=a.role.match(p);if(n){const e="heading",a=n[1];t.role=e;t["aria-level"]=a}}if("table"===e.layout)t.role="table";else if("row"===e.layout)t.role="row";else{const a=e[r.$getParent]();"row"===a.layout&&(t.role="TH"===a.assist?.role?"columnheader":"cell")}}function ariaLabel(e){if(!e.assist)return null;const t=e.assist;return t.speak&&""!==t.speak[r.$content]?t.speak[r.$content]:t.toolTip?t.toolTip[r.$content]:null}function valueToHtml(e){return c.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:Object.create(null)},children:[{name:"span",attributes:{style:Object.create(null)},value:e}]})}function setFirstUnsplittable(e){const t=e[r.$getTemplateRoot]();if(null===t[r.$extra].firstUnsplittable){t[r.$extra].firstUnsplittable=e;t[r.$extra].noLayoutFailure=!0}}function unsetFirstUnsplittable(e){const t=e[r.$getTemplateRoot]();t[r.$extra].firstUnsplittable===e&&(t[r.$extra].noLayoutFailure=!1)}function handleBreak(e){if(e[r.$extra])return!1;e[r.$extra]=Object.create(null);if("auto"===e.targetType)return!1;const t=e[r.$getTemplateRoot]();let a=null;if(e.target){a=t[r.$searchNode](e.target,e[r.$getParent]());if(!a)return!1;a=a[0]}const{currentPageArea:n,currentContentArea:i}=t[r.$extra];if("pageArea"===e.targetType){a instanceof PageArea||(a=null);if(e.startNew){e[r.$extra].target=a||n;return!0}if(a&&a!==n){e[r.$extra].target=a;return!0}return!1}a instanceof ContentArea||(a=null);const s=a&&a[r.$getParent]();let o,c=s;if(e.startNew)if(a){const e=s.contentArea.children,t=e.indexOf(i),r=e.indexOf(a);-1!==t&&te;n[r.$extra].noLayoutFailure=!0;const o=t[r.$toHTML](a);e[r.$addHTML](o.html,o.bbox);n[r.$extra].noLayoutFailure=i;t[r.$getSubformParent]=s}class AppearanceFilter extends o.StringObject{constructor(e){super(f,"appearanceFilter");this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Arc extends o.XFAObject{constructor(e){super(f,"arc",!0);this.circular=(0,c.getInteger)({data:e.circular,defaultValue:0,validate:e=>1===e});this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.startAngle=(0,c.getFloat)({data:e.startAngle,defaultValue:0,validate:e=>!0});this.sweepAngle=(0,c.getFloat)({data:e.sweepAngle,defaultValue:360,validate:e=>!0});this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null;this.fill=null}[r.$toHTML](){const e=this.edge||new Edge({}),t=e[r.$toStyle](),a=Object.create(null);"visible"===this.fill?.presence?Object.assign(a,this.fill[r.$toStyle]()):a.fill="transparent";a.strokeWidth=(0,s.measureToString)("visible"===e.presence?e.thickness:0);a.stroke=t.color;let n;const i={xmlns:g,style:{width:"100%",height:"100%",overflow:"visible"}};if(360===this.sweepAngle)n={name:"ellipse",attributes:{xmlns:g,cx:"50%",cy:"50%",rx:"50%",ry:"50%",style:a}};else{const e=this.startAngle*Math.PI/180,t=this.sweepAngle*Math.PI/180,r=this.sweepAngle>180?1:0,[s,o,c,l]=[50*(1+Math.cos(e)),50*(1-Math.sin(e)),50*(1+Math.cos(e+t)),50*(1-Math.sin(e+t))];n={name:"path",attributes:{xmlns:g,d:`M ${s} ${o} A 50 50 0 ${r} 0 ${c} ${l}`,vectorEffect:"non-scaling-stroke",style:a}};Object.assign(i,{viewBox:"0 0 100 100",preserveAspectRatio:"none"})}const o={name:"svg",children:[n],attributes:i};if(hasMargin(this[r.$getParent]()[r.$getParent]()))return c.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[o]});o.attributes.style.position="absolute";return c.HTMLResult.success(o)}}class Area extends o.XFAObject{constructor(e){super(f,"area",!0);this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.id=e.id||"";this.name=e.name||"";this.relevant=(0,c.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.x=(0,c.getMeasurement)(e.x,"0pt");this.y=(0,c.getMeasurement)(e.y,"0pt");this.desc=null;this.extras=null;this.area=new o.XFAObjectArray;this.draw=new o.XFAObjectArray;this.exObject=new o.XFAObjectArray;this.exclGroup=new o.XFAObjectArray;this.field=new o.XFAObjectArray;this.subform=new o.XFAObjectArray;this.subformSet=new o.XFAObjectArray}*[r.$getContainedChildren](){yield*getContainedChildren(this)}[r.$isTransparent](){return!0}[r.$isBindable](){return!0}[r.$addHTML](e,t){const[a,n,i,s]=t;this[r.$extra].width=Math.max(this[r.$extra].width,a+i);this[r.$extra].height=Math.max(this[r.$extra].height,n+s);this[r.$extra].children.push(e)}[r.$getAvailableSpace](){return this[r.$extra].availableSpace}[r.$toHTML](e){const t=(0,s.toStyle)(this,"position"),a={style:t,id:this[r.$uid],class:["xfaArea"]};(0,s.isPrintOnly)(this)&&a.class.push("xfaPrintOnly");this.name&&(a.xfaName=this.name);const n=[];this[r.$extra]={children:n,width:0,height:0,availableSpace:e};const i=this[r.$childrenToHTML]({filter:new Set(["area","draw","field","exclGroup","subform","subformSet"]),include:!0});if(!i.success){if(i.isBreak())return i;delete this[r.$extra];return c.HTMLResult.FAILURE}t.width=(0,s.measureToString)(this[r.$extra].width);t.height=(0,s.measureToString)(this[r.$extra].height);const o={name:"div",attributes:a,children:n},l=[this.x,this.y,this[r.$extra].width,this[r.$extra].height];delete this[r.$extra];return c.HTMLResult.success(o,l)}}class Assist extends o.XFAObject{constructor(e){super(f,"assist",!0);this.id=e.id||"";this.role=e.role||"";this.use=e.use||"";this.usehref=e.usehref||"";this.speak=null;this.toolTip=null}[r.$toHTML](){return this.toolTip?.[r.$content]||null}}class Barcode extends o.XFAObject{constructor(e){super(f,"barcode",!0);this.charEncoding=(0,c.getKeyword)({data:e.charEncoding?e.charEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\d{2}/)});this.checksum=(0,c.getStringOption)(e.checksum,["none","1mod10","1mod10_1mod11","2mod10","auto"]);this.dataColumnCount=(0,c.getInteger)({data:e.dataColumnCount,defaultValue:-1,validate:e=>e>=0});this.dataLength=(0,c.getInteger)({data:e.dataLength,defaultValue:-1,validate:e=>e>=0});this.dataPrep=(0,c.getStringOption)(e.dataPrep,["none","flateCompress"]);this.dataRowCount=(0,c.getInteger)({data:e.dataRowCount,defaultValue:-1,validate:e=>e>=0});this.endChar=e.endChar||"";this.errorCorrectionLevel=(0,c.getInteger)({data:e.errorCorrectionLevel,defaultValue:-1,validate:e=>e>=0&&e<=8});this.id=e.id||"";this.moduleHeight=(0,c.getMeasurement)(e.moduleHeight,"5mm");this.moduleWidth=(0,c.getMeasurement)(e.moduleWidth,"0.25mm");this.printCheckDigit=(0,c.getInteger)({data:e.printCheckDigit,defaultValue:0,validate:e=>1===e});this.rowColumnRatio=(0,c.getRatio)(e.rowColumnRatio);this.startChar=e.startChar||"";this.textLocation=(0,c.getStringOption)(e.textLocation,["below","above","aboveEmbedded","belowEmbedded","none"]);this.truncate=(0,c.getInteger)({data:e.truncate,defaultValue:0,validate:e=>1===e});this.type=(0,c.getStringOption)(e.type?e.type.toLowerCase():"",["aztec","codabar","code2of5industrial","code2of5interleaved","code2of5matrix","code2of5standard","code3of9","code3of9extended","code11","code49","code93","code128","code128a","code128b","code128c","code128sscc","datamatrix","ean8","ean8add2","ean8add5","ean13","ean13add2","ean13add5","ean13pwcd","fim","logmars","maxicode","msi","pdf417","pdf417macro","plessey","postauscust2","postauscust3","postausreplypaid","postausstandard","postukrm4scc","postusdpbc","postusimb","postusstandard","postus5zip","qrcode","rfid","rss14","rss14expanded","rss14limited","rss14stacked","rss14stackedomni","rss14truncated","telepen","ucc128","ucc128random","ucc128sscc","upca","upcaadd2","upcaadd5","upcapwcd","upce","upceadd2","upceadd5","upcean2","upcean5","upsmaxicode"]);this.upsMode=(0,c.getStringOption)(e.upsMode,["usCarrier","internationalCarrier","secureSymbol","standardSymbol"]);this.use=e.use||"";this.usehref=e.usehref||"";this.wideNarrowRatio=(0,c.getRatio)(e.wideNarrowRatio);this.encrypt=null;this.extras=null}}class Bind extends o.XFAObject{constructor(e){super(f,"bind",!0);this.match=(0,c.getStringOption)(e.match,["once","dataRef","global","none"]);this.ref=e.ref||"";this.picture=null}}class BindItems extends o.XFAObject{constructor(e){super(f,"bindItems");this.connection=e.connection||"";this.labelRef=e.labelRef||"";this.ref=e.ref||"";this.valueRef=e.valueRef||""}}t.BindItems=BindItems;class Bookend extends o.XFAObject{constructor(e){super(f,"bookend");this.id=e.id||"";this.leader=e.leader||"";this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||""}}class BooleanElement extends o.Option01{constructor(e){super(f,"boolean");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$toHTML](e){return valueToHtml(1===this[r.$content]?"1":"0")}}class Border extends o.XFAObject{constructor(e){super(f,"border",!0);this.break=(0,c.getStringOption)(e.break,["close","open"]);this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,c.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new o.XFAObjectArray(4);this.edge=new o.XFAObjectArray(4);this.extras=null;this.fill=null;this.margin=null}[r.$getExtra](){if(!this[r.$extra]){const e=this.edge.children.slice();if(e.length<4){const t=e.at(-1)||new Edge({});for(let a=e.length;a<4;a++)e.push(t)}const t=e.map((e=>e.thickness)),a=[0,0,0,0];if(this.margin){a[0]=this.margin.topInset;a[1]=this.margin.rightInset;a[2]=this.margin.bottomInset;a[3]=this.margin.leftInset}this[r.$extra]={widths:t,insets:a,edges:e}}return this[r.$extra]}[r.$toStyle](){const{edges:e}=this[r.$getExtra](),t=e.map((e=>{const t=e[r.$toStyle]();t.color||="#000000";return t})),a=Object.create(null);this.margin&&Object.assign(a,this.margin[r.$toStyle]());"visible"===this.fill?.presence&&Object.assign(a,this.fill[r.$toStyle]());if(this.corner.children.some((e=>0!==e.radius))){const e=this.corner.children.map((e=>e[r.$toStyle]()));if(2===e.length||3===e.length){const t=e.at(-1);for(let a=e.length;a<4;a++)e.push(t)}a.borderRadius=e.map((e=>e.radius)).join(" ")}switch(this.presence){case"invisible":case"hidden":a.borderStyle="";break;case"inactive":a.borderStyle="none";break;default:a.borderStyle=t.map((e=>e.style)).join(" ")}a.borderWidth=t.map((e=>e.width)).join(" ");a.borderColor=t.map((e=>e.color)).join(" ");return a}}class Break extends o.XFAObject{constructor(e){super(f,"break",!0);this.after=(0,c.getStringOption)(e.after,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.afterTarget=e.afterTarget||"";this.before=(0,c.getStringOption)(e.before,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.beforeTarget=e.beforeTarget||"";this.bookendLeader=e.bookendLeader||"";this.bookendTrailer=e.bookendTrailer||"";this.id=e.id||"";this.overflowLeader=e.overflowLeader||"";this.overflowTarget=e.overflowTarget||"";this.overflowTrailer=e.overflowTrailer||"";this.startNew=(0,c.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class BreakAfter extends o.XFAObject{constructor(e){super(f,"breakAfter",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=(0,c.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=(0,c.getStringOption)(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}}class BreakBefore extends o.XFAObject{constructor(e){super(f,"breakBefore",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=(0,c.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=(0,c.getStringOption)(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}[r.$toHTML](e){this[r.$extra]={};return c.HTMLResult.FAILURE}}class Button extends o.XFAObject{constructor(e){super(f,"button",!0);this.highlight=(0,c.getStringOption)(e.highlight,["inverted","none","outline","push"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[r.$toHTML](e){const t=this[r.$getParent]()[r.$getParent](),a={name:"button",attributes:{id:this[r.$uid],class:["xfaButton"],style:{}},children:[]};for(const e of t.event.children){if("click"!==e.activity||!e.script)continue;const t=(0,u.recoverJsURL)(e.script[r.$content]);if(!t)continue;const n=(0,s.fixURL)(t.url);n&&a.children.push({name:"a",attributes:{id:"link"+this[r.$uid],href:n,newWindow:t.newWindow,class:["xfaLink"],style:{}},children:[]})}return c.HTMLResult.success(a)}}class Calculate extends o.XFAObject{constructor(e){super(f,"calculate",!0);this.id=e.id||"";this.override=(0,c.getStringOption)(e.override,["disabled","error","ignore","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.script=null}}class Caption extends o.XFAObject{constructor(e){super(f,"caption",!0);this.id=e.id||"";this.placement=(0,c.getStringOption)(e.placement,["left","bottom","inline","right","top"]);this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.reserve=Math.ceil((0,c.getMeasurement)(e.reserve));this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.font=null;this.margin=null;this.para=null;this.value=null}[r.$setValue](e){_setValue(this,e)}[r.$getExtra](e){if(!this[r.$extra]){let{width:t,height:a}=e;switch(this.placement){case"left":case"right":case"inline":t=this.reserve<=0?t:this.reserve;break;case"top":case"bottom":a=this.reserve<=0?a:this.reserve}this[r.$extra]=(0,s.layoutNode)(this,{width:t,height:a})}return this[r.$extra]}[r.$toHTML](e){if(!this.value)return c.HTMLResult.EMPTY;this[r.$pushPara]();const t=this.value[r.$toHTML](e).html;if(!t){this[r.$popPara]();return c.HTMLResult.EMPTY}const a=this.reserve;if(this.reserve<=0){const{w:t,h:a}=this[r.$getExtra](e);switch(this.placement){case"left":case"right":case"inline":this.reserve=t;break;case"top":case"bottom":this.reserve=a}}const n=[];"string"==typeof t?n.push({name:"#text",value:t}):n.push(t);const i=(0,s.toStyle)(this,"font","margin","visibility");switch(this.placement){case"left":case"right":this.reserve>0&&(i.width=(0,s.measureToString)(this.reserve));break;case"top":case"bottom":this.reserve>0&&(i.height=(0,s.measureToString)(this.reserve))}(0,s.setPara)(this,null,t);this[r.$popPara]();this.reserve=a;return c.HTMLResult.success({name:"div",attributes:{style:i,class:["xfaCaption"]},children:n})}}class Certificate extends o.StringObject{constructor(e){super(f,"certificate");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Certificates extends o.XFAObject{constructor(e){super(f,"certificates",!0);this.credentialServerPolicy=(0,c.getStringOption)(e.credentialServerPolicy,["optional","required"]);this.id=e.id||"";this.url=e.url||"";this.urlPolicy=e.urlPolicy||"";this.use=e.use||"";this.usehref=e.usehref||"";this.encryption=null;this.issuers=null;this.keyUsage=null;this.oids=null;this.signing=null;this.subjectDNs=null}}class CheckButton extends o.XFAObject{constructor(e){super(f,"checkButton",!0);this.id=e.id||"";this.mark=(0,c.getStringOption)(e.mark,["default","check","circle","cross","diamond","square","star"]);this.shape=(0,c.getStringOption)(e.shape,["square","round"]);this.size=(0,c.getMeasurement)(e.size,"10pt");this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)("margin"),a=(0,s.measureToString)(this.size);t.width=t.height=a;let n,i,o;const l=this[r.$getParent]()[r.$getParent](),h=l.items.children.length&&l.items.children[0][r.$toHTML]().html||[],u={on:(void 0!==h[0]?h[0]:"on").toString(),off:(void 0!==h[1]?h[1]:"off").toString()},d=(l.value?.[r.$text]()||"off")===u.on||void 0,f=l[r.$getSubformParent](),g=l[r.$uid];let p;if(f instanceof ExclGroup){o=f[r.$uid];n="radio";i="xfaRadio";p=f[r.$data]?.[r.$uid]||f[r.$uid]}else{n="checkbox";i="xfaCheckbox";p=l[r.$data]?.[r.$uid]||l[r.$uid]}const m={name:"input",attributes:{class:[i],style:t,fieldId:g,dataId:p,type:n,checked:d,xfaOn:u.on,xfaOff:u.off,"aria-label":ariaLabel(l),"aria-required":!1}};o&&(m.attributes.name=o);if(isRequired(l)){m.attributes["aria-required"]=!0;m.attributes.required=!0}return c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[m]})}}class ChoiceList extends o.XFAObject{constructor(e){super(f,"choiceList",!0);this.commitOn=(0,c.getStringOption)(e.commitOn,["select","exit"]);this.id=e.id||"";this.open=(0,c.getStringOption)(e.open,["userControl","always","multiSelect","onEntry"]);this.textEntry=(0,c.getInteger)({data:e.textEntry,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)(this,"border","margin"),a=this[r.$getParent]()[r.$getParent](),n={fontSize:`calc(${a.font?.size||10}px * var(--scale-factor))`},i=[];if(a.items.children.length>0){const e=a.items;let t=0,s=0;if(2===e.children.length){t=e.children[0].save;s=1-t}const o=e.children[t][r.$toHTML]().html,c=e.children[s][r.$toHTML]().html;let l=!1;const h=a.value?.[r.$text]()||"";for(let e=0,t=o.length;ee>=0});this.use=e.use||"";this.usehref=e.usehref||""}}class Connect extends o.XFAObject{constructor(e){super(f,"connect",!0);this.connection=e.connection||"";this.id=e.id||"";this.ref=e.ref||"";this.usage=(0,c.getStringOption)(e.usage,["exportAndImport","exportOnly","importOnly"]);this.use=e.use||"";this.usehref=e.usehref||"";this.picture=null}}class ContentArea extends o.XFAObject{constructor(e){super(f,"contentArea",!0);this.h=(0,c.getMeasurement)(e.h);this.id=e.id||"";this.name=e.name||"";this.relevant=(0,c.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=(0,c.getMeasurement)(e.w);this.x=(0,c.getMeasurement)(e.x,"0pt");this.y=(0,c.getMeasurement)(e.y,"0pt");this.desc=null;this.extras=null}[r.$toHTML](e){const t={left:(0,s.measureToString)(this.x),top:(0,s.measureToString)(this.y),width:(0,s.measureToString)(this.w),height:(0,s.measureToString)(this.h)},a=["xfaContentarea"];(0,s.isPrintOnly)(this)&&a.push("xfaPrintOnly");return c.HTMLResult.success({name:"div",children:[],attributes:{style:t,class:a,id:this[r.$uid]}})}}class Corner extends o.XFAObject{constructor(e){super(f,"corner",!0);this.id=e.id||"";this.inverted=(0,c.getInteger)({data:e.inverted,defaultValue:0,validate:e=>1===e});this.join=(0,c.getStringOption)(e.join,["square","round"]);this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.radius=(0,c.getMeasurement)(e.radius);this.stroke=(0,c.getStringOption)(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=(0,c.getMeasurement)(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](){const e=(0,s.toStyle)(this,"visibility");e.radius=(0,s.measureToString)("square"===this.join?0:this.radius);return e}}class DateElement extends o.ContentObject{constructor(e){super(f,"date");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=this[r.$content].trim();this[r.$content]=e?new Date(e):null}[r.$toHTML](e){return valueToHtml(this[r.$content]?this[r.$content].toString():"")}}class DateTime extends o.ContentObject{constructor(e){super(f,"dateTime");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=this[r.$content].trim();this[r.$content]=e?new Date(e):null}[r.$toHTML](e){return valueToHtml(this[r.$content]?this[r.$content].toString():"")}}class DateTimeEdit extends o.XFAObject{constructor(e){super(f,"dateTimeEdit",!0);this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.picker=(0,c.getStringOption)(e.picker,["host","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)(this,"border","font","margin"),a=this[r.$getParent]()[r.$getParent](),n={name:"input",attributes:{type:"text",fieldId:a[r.$uid],dataId:a[r.$data]?.[r.$uid]||a[r.$uid],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a),"aria-required":!1}};if(isRequired(a)){n.attributes["aria-required"]=!0;n.attributes.required=!0}return c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[n]})}}class Decimal extends o.ContentObject{constructor(e){super(f,"decimal");this.fracDigits=(0,c.getInteger)({data:e.fracDigits,defaultValue:2,validate:e=>!0});this.id=e.id||"";this.leadDigits=(0,c.getInteger)({data:e.leadDigits,defaultValue:-1,validate:e=>!0});this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=parseFloat(this[r.$content].trim());this[r.$content]=isNaN(e)?null:e}[r.$toHTML](e){return valueToHtml(null!==this[r.$content]?this[r.$content].toString():"")}}class DefaultUi extends o.XFAObject{constructor(e){super(f,"defaultUi",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class Desc extends o.XFAObject{constructor(e){super(f,"desc",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new o.XFAObjectArray;this.date=new o.XFAObjectArray;this.dateTime=new o.XFAObjectArray;this.decimal=new o.XFAObjectArray;this.exData=new o.XFAObjectArray;this.float=new o.XFAObjectArray;this.image=new o.XFAObjectArray;this.integer=new o.XFAObjectArray;this.text=new o.XFAObjectArray;this.time=new o.XFAObjectArray}}class DigestMethod extends o.OptionObject{constructor(e){super(f,"digestMethod",["","SHA1","SHA256","SHA512","RIPEMD160"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class DigestMethods extends o.XFAObject{constructor(e){super(f,"digestMethods",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.digestMethod=new o.XFAObjectArray}}class Draw extends o.XFAObject{constructor(e){super(f,"draw",!0);this.anchorType=(0,c.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?(0,c.getMeasurement)(e.h):"";this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=(0,c.getMeasurement)(e.maxH,"0pt");this.maxW=(0,c.getMeasurement)(e.maxW,"0pt");this.minH=(0,c.getMeasurement)(e.minH,"0pt");this.minW=(0,c.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,c.getRelevant)(e.relevant);this.rotate=(0,c.getInteger)({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,c.getMeasurement)(e.w):"";this.x=(0,c.getMeasurement)(e.x,"0pt");this.y=(0,c.getMeasurement)(e.y,"0pt");this.assist=null;this.border=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.value=null;this.setProperty=new o.XFAObjectArray}[r.$setValue](e){_setValue(this,e)}[r.$toHTML](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence)return c.HTMLResult.EMPTY;(0,s.fixDimensions)(this);this[r.$pushPara]();const t=this.w,a=this.h,{w:n,h:o,isBroken:l}=(0,s.layoutNode)(this,e);if(n&&""===this.w){if(l&&this[r.$getSubformParent]()[r.$isThereMoreWidth]()){this[r.$popPara]();return c.HTMLResult.FAILURE}this.w=n}o&&""===this.h&&(this.h=o);setFirstUnsplittable(this);if(!(0,i.checkDimensions)(this,e)){this.w=t;this.h=a;this[r.$popPara]();return c.HTMLResult.FAILURE}unsetFirstUnsplittable(this);const h=(0,s.toStyle)(this,"font","hAlign","dimensions","position","presence","rotate","anchorType","border","margin");(0,s.setMinMaxDimensions)(this,h);if(h.margin){h.padding=h.margin;delete h.margin}const u=["xfaDraw"];this.font&&u.push("xfaFont");(0,s.isPrintOnly)(this)&&u.push("xfaPrintOnly");const d={style:h,id:this[r.$uid],class:u};this.name&&(d.xfaName=this.name);const f={name:"div",attributes:d,children:[]};applyAssist(this,d);const g=(0,s.computeBbox)(this,f,e),p=this.value?this.value[r.$toHTML](e).html:null;if(null===p){this.w=t;this.h=a;this[r.$popPara]();return c.HTMLResult.success((0,s.createWrapper)(this,f),g)}f.children.push(p);(0,s.setPara)(this,h,p);this.w=t;this.h=a;this[r.$popPara]();return c.HTMLResult.success((0,s.createWrapper)(this,f),g)}}class Edge extends o.XFAObject{constructor(e){super(f,"edge",!0);this.cap=(0,c.getStringOption)(e.cap,["square","butt","round"]);this.id=e.id||"";this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.stroke=(0,c.getStringOption)(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=(0,c.getMeasurement)(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](){const e=(0,s.toStyle)(this,"visibility");Object.assign(e,{linecap:this.cap,width:(0,s.measureToString)(this.thickness),color:this.color?this.color[r.$toStyle]():"#000000",style:""});if("visible"!==this.presence)e.style="none";else switch(this.stroke){case"solid":e.style="solid";break;case"dashDot":case"dashDotDot":case"dashed":e.style="dashed";break;case"dotted":e.style="dotted";break;case"embossed":e.style="ridge";break;case"etched":e.style="groove";break;case"lowered":e.style="inset";break;case"raised":e.style="outset"}return e}}class Encoding extends o.OptionObject{constructor(e){super(f,"encoding",["adbe.x509.rsa_sha1","adbe.pkcs7.detached","adbe.pkcs7.sha1"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Encodings extends o.XFAObject{constructor(e){super(f,"encodings",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encoding=new o.XFAObjectArray}}class Encrypt extends o.XFAObject{constructor(e){super(f,"encrypt",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=null}}class EncryptData extends o.XFAObject{constructor(e){super(f,"encryptData",!0);this.id=e.id||"";this.operation=(0,c.getStringOption)(e.operation,["encrypt","decrypt"]);this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Encryption extends o.XFAObject{constructor(e){super(f,"encryption",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new o.XFAObjectArray}}class EncryptionMethod extends o.OptionObject{constructor(e){super(f,"encryptionMethod",["","AES256-CBC","TRIPLEDES-CBC","AES128-CBC","AES192-CBC"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EncryptionMethods extends o.XFAObject{constructor(e){super(f,"encryptionMethods",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encryptionMethod=new o.XFAObjectArray}}class Event extends o.XFAObject{constructor(e){super(f,"event",!0);this.activity=(0,c.getStringOption)(e.activity,["click","change","docClose","docReady","enter","exit","full","indexChange","initialize","mouseDown","mouseEnter","mouseExit","mouseUp","postExecute","postOpen","postPrint","postSave","postSign","postSubmit","preExecute","preOpen","prePrint","preSave","preSign","preSubmit","ready","validationState"]);this.id=e.id||"";this.listen=(0,c.getStringOption)(e.listen,["refOnly","refAndDescendents"]);this.name=e.name||"";this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.encryptData=null;this.execute=null;this.script=null;this.signData=null;this.submit=null}}class ExData extends o.ContentObject{constructor(e){super(f,"exData");this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.maxLength=(0,c.getInteger)({data:e.maxLength,defaultValue:-1,validate:e=>e>=-1});this.name=e.name||"";this.rid=e.rid||"";this.transferEncoding=(0,c.getStringOption)(e.transferEncoding,["none","base64","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[r.$isCDATAXml](){return"text/html"===this.contentType}[r.$onChild](e){if("text/html"===this.contentType&&e[r.$namespaceId]===n.NamespaceIds.xhtml.id){this[r.$content]=e;return!0}if("text/xml"===this.contentType){this[r.$content]=e;return!0}return!1}[r.$toHTML](e){return"text/html"===this.contentType&&this[r.$content]?this[r.$content][r.$toHTML](e):c.HTMLResult.EMPTY}}class ExObject extends o.XFAObject{constructor(e){super(f,"exObject",!0);this.archive=e.archive||"";this.classId=e.classId||"";this.codeBase=e.codeBase||"";this.codeType=e.codeType||"";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.boolean=new o.XFAObjectArray;this.date=new o.XFAObjectArray;this.dateTime=new o.XFAObjectArray;this.decimal=new o.XFAObjectArray;this.exData=new o.XFAObjectArray;this.exObject=new o.XFAObjectArray;this.float=new o.XFAObjectArray;this.image=new o.XFAObjectArray;this.integer=new o.XFAObjectArray;this.text=new o.XFAObjectArray;this.time=new o.XFAObjectArray}}class ExclGroup extends o.XFAObject{constructor(e){super(f,"exclGroup",!0);this.access=(0,c.getStringOption)(e.access,["open","nonInteractive","protected","readOnly"]);this.accessKey=e.accessKey||"";this.anchorType=(0,c.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?(0,c.getMeasurement)(e.h):"";this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=(0,c.getStringOption)(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.maxH=(0,c.getMeasurement)(e.maxH,"0pt");this.maxW=(0,c.getMeasurement)(e.maxW,"0pt");this.minH=(0,c.getMeasurement)(e.minH,"0pt");this.minW=(0,c.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,c.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,c.getMeasurement)(e.w):"";this.x=(0,c.getMeasurement)(e.x,"0pt");this.y=(0,c.getMeasurement)(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.margin=null;this.para=null;this.traversal=null;this.validate=null;this.connect=new o.XFAObjectArray;this.event=new o.XFAObjectArray;this.field=new o.XFAObjectArray;this.setProperty=new o.XFAObjectArray}[r.$isBindable](){return!0}[r.$hasSettableValue](){return!0}[r.$setValue](e){for(const t of this.field.children){if(!t.value){const e=new Value({});t[r.$appendChild](e);t.value=e}t.value[r.$setValue](e)}}[r.$isThereMoreWidth](){return this.layout.endsWith("-tb")&&0===this[r.$extra].attempt&&this[r.$extra].numberInLine>0||this[r.$getParent]()[r.$isThereMoreWidth]()}[r.$isSplittable](){const e=this[r.$getSubformParent]();if(!e[r.$isSplittable]())return!1;if(void 0!==this[r.$extra]._isSplittable)return this[r.$extra]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[r.$extra]._isSplittable=!1;return!1}if(e.layout?.endsWith("-tb")&&0!==e[r.$extra].numberInLine)return!1;this[r.$extra]._isSplittable=!0;return!0}[r.$flushHTML](){return(0,i.flushHTML)(this)}[r.$addHTML](e,t){(0,i.addHTML)(this,e,t)}[r.$getAvailableSpace](){return(0,i.getAvailableSpace)(this)}[r.$toHTML](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return c.HTMLResult.EMPTY;(0,s.fixDimensions)(this);const t=[],a={id:this[r.$uid],class:[]};(0,s.setAccess)(this,a.class);this[r.$extra]||(this[r.$extra]=Object.create(null));Object.assign(this[r.$extra],{children:t,attributes:a,attempt:0,line:null,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const n=this[r.$isSplittable]();n||setFirstUnsplittable(this);if(!(0,i.checkDimensions)(this,e))return c.HTMLResult.FAILURE;const o=new Set(["field"]);if(this.layout.includes("row")){const e=this[r.$getSubformParent]().columnWidths;if(Array.isArray(e)&&e.length>0){this[r.$extra].columnWidths=e;this[r.$extra].currentColumn=0}}const l=(0,s.toStyle)(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),h=["xfaExclgroup"],u=(0,s.layoutClass)(this);u&&h.push(u);(0,s.isPrintOnly)(this)&&h.push("xfaPrintOnly");a.style=l;a.class=h;this.name&&(a.xfaName=this.name);this[r.$pushPara]();const d="lr-tb"===this.layout||"rl-tb"===this.layout,f=d?2:1;for(;this[r.$extra].attempte>=1||-1===e});this.h=e.h?(0,c.getMeasurement)(e.h):"";this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=(0,c.getMeasurement)(e.maxH,"0pt");this.maxW=(0,c.getMeasurement)(e.maxW,"0pt");this.minH=(0,c.getMeasurement)(e.minH,"0pt");this.minW=(0,c.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,c.getRelevant)(e.relevant);this.rotate=(0,c.getInteger)({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,c.getMeasurement)(e.w):"";this.x=(0,c.getMeasurement)(e.x,"0pt");this.y=(0,c.getMeasurement)(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.format=null;this.items=new o.XFAObjectArray(2);this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.validate=null;this.value=null;this.bindItems=new o.XFAObjectArray;this.connect=new o.XFAObjectArray;this.event=new o.XFAObjectArray;this.setProperty=new o.XFAObjectArray}[r.$isBindable](){return!0}[r.$setValue](e){_setValue(this,e)}[r.$toHTML](e){setTabIndex(this);if(!this.ui){this.ui=new Ui({});this.ui[r.$globalData]=this[r.$globalData];this[r.$appendChild](this.ui);let e;switch(this.items.children.length){case 0:e=new TextEdit({});this.ui.textEdit=e;break;case 1:e=new CheckButton({});this.ui.checkButton=e;break;case 2:e=new ChoiceList({});this.ui.choiceList=e}this.ui[r.$appendChild](e)}if(!this.ui||"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return c.HTMLResult.EMPTY;this.caption&&delete this.caption[r.$extra];this[r.$pushPara]();const t=this.caption?this.caption[r.$toHTML](e).html:null,a=this.w,n=this.h;let o=0,l=0;if(this.margin){o=this.margin.leftInset+this.margin.rightInset;l=this.margin.topInset+this.margin.bottomInset}let u=null;if(""===this.w||""===this.h){let t=null,a=null,n=0,i=0;if(this.ui.checkButton)n=i=this.ui.checkButton.size;else{const{w:t,h:a}=(0,s.layoutNode)(this,e);if(null!==t){n=t;i=a}else i=(0,h.getMetrics)(this.font,!0).lineNoGap}u=getBorderDims(this.ui[r.$getExtra]());n+=u.w;i+=u.h;if(this.caption){const{w:s,h:o,isBroken:l}=this.caption[r.$getExtra](e);if(l&&this[r.$getSubformParent]()[r.$isThereMoreWidth]()){this[r.$popPara]();return c.HTMLResult.FAILURE}t=s;a=o;switch(this.caption.placement){case"left":case"right":case"inline":t+=n;break;case"top":case"bottom":a+=i}}else{t=n;a=i}if(t&&""===this.w){t+=o;this.w=Math.min(this.maxW<=0?1/0:this.maxW,this.minW+1e>=1&&e<=5});this.appearanceFilter=null;this.certificates=null;this.digestMethods=null;this.encodings=null;this.encryptionMethods=null;this.handler=null;this.lockDocument=null;this.mdp=null;this.reasons=null;this.timeStamp=null}}class Float extends o.ContentObject{constructor(e){super(f,"float");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=parseFloat(this[r.$content].trim());this[r.$content]=isNaN(e)?null:e}[r.$toHTML](e){return valueToHtml(null!==this[r.$content]?this[r.$content].toString():"")}}class Font extends o.XFAObject{constructor(e){super(f,"font",!0);this.baselineShift=(0,c.getMeasurement)(e.baselineShift);this.fontHorizontalScale=(0,c.getFloat)({data:e.fontHorizontalScale,defaultValue:100,validate:e=>e>=0});this.fontVerticalScale=(0,c.getFloat)({data:e.fontVerticalScale,defaultValue:100,validate:e=>e>=0});this.id=e.id||"";this.kerningMode=(0,c.getStringOption)(e.kerningMode,["none","pair"]);this.letterSpacing=(0,c.getMeasurement)(e.letterSpacing,"0");this.lineThrough=(0,c.getInteger)({data:e.lineThrough,defaultValue:0,validate:e=>1===e||2===e});this.lineThroughPeriod=(0,c.getStringOption)(e.lineThroughPeriod,["all","word"]);this.overline=(0,c.getInteger)({data:e.overline,defaultValue:0,validate:e=>1===e||2===e});this.overlinePeriod=(0,c.getStringOption)(e.overlinePeriod,["all","word"]);this.posture=(0,c.getStringOption)(e.posture,["normal","italic"]);this.size=(0,c.getMeasurement)(e.size,"10pt");this.typeface=e.typeface||"Courier";this.underline=(0,c.getInteger)({data:e.underline,defaultValue:0,validate:e=>1===e||2===e});this.underlinePeriod=(0,c.getStringOption)(e.underlinePeriod,["all","word"]);this.use=e.use||"";this.usehref=e.usehref||"";this.weight=(0,c.getStringOption)(e.weight,["normal","bold"]);this.extras=null;this.fill=null}[r.$clean](e){super[r.$clean](e);this[r.$globalData].usedTypefaces.add(this.typeface)}[r.$toStyle](){const e=(0,s.toStyle)(this,"fill"),t=e.color;if(t)if("#000000"===t)delete e.color;else if(!t.startsWith("#")){e.background=t;e.backgroundClip="text";e.color="transparent"}this.baselineShift&&(e.verticalAlign=(0,s.measureToString)(this.baselineShift));e.fontKerning="none"===this.kerningMode?"none":"normal";e.letterSpacing=(0,s.measureToString)(this.letterSpacing);if(0!==this.lineThrough){e.textDecoration="line-through";2===this.lineThrough&&(e.textDecorationStyle="double")}if(0!==this.overline){e.textDecoration="overline";2===this.overline&&(e.textDecorationStyle="double")}e.fontStyle=this.posture;e.fontSize=(0,s.measureToString)(.99*this.size);(0,s.setFontFamily)(this,this,this[r.$globalData].fontFinder,e);if(0!==this.underline){e.textDecoration="underline";2===this.underline&&(e.textDecorationStyle="double")}e.fontWeight=this.weight;return e}}class Format extends o.XFAObject{constructor(e){super(f,"format",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null}}class Handler extends o.StringObject{constructor(e){super(f,"handler");this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Hyphenation extends o.XFAObject{constructor(e){super(f,"hyphenation");this.excludeAllCaps=(0,c.getInteger)({data:e.excludeAllCaps,defaultValue:0,validate:e=>1===e});this.excludeInitialCap=(0,c.getInteger)({data:e.excludeInitialCap,defaultValue:0,validate:e=>1===e});this.hyphenate=(0,c.getInteger)({data:e.hyphenate,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.pushCharacterCount=(0,c.getInteger)({data:e.pushCharacterCount,defaultValue:3,validate:e=>e>=0});this.remainCharacterCount=(0,c.getInteger)({data:e.remainCharacterCount,defaultValue:3,validate:e=>e>=0});this.use=e.use||"";this.usehref=e.usehref||"";this.wordCharacterCount=(0,c.getInteger)({data:e.wordCharacterCount,defaultValue:7,validate:e=>e>=0})}}class Image extends o.StringObject{constructor(e){super(f,"image");this.aspect=(0,c.getStringOption)(e.aspect,["fit","actual","height","none","width"]);this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.name=e.name||"";this.transferEncoding=(0,c.getStringOption)(e.transferEncoding,["base64","none","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[r.$toHTML](){if(this.contentType&&!m.has(this.contentType.toLowerCase()))return c.HTMLResult.EMPTY;let e=this[r.$globalData].images&&this[r.$globalData].images.get(this.href);if(!e&&(this.href||!this[r.$content]))return c.HTMLResult.EMPTY;e||"base64"!==this.transferEncoding||(e=(0,l.stringToBytes)(atob(this[r.$content])));if(!e)return c.HTMLResult.EMPTY;if(!this.contentType){for(const[t,a]of b)if(e.length>t.length&&t.every(((t,a)=>t===e[a]))){this.contentType=a;break}if(!this.contentType)return c.HTMLResult.EMPTY}const t=new Blob([e],{type:this.contentType});let a;switch(this.aspect){case"fit":case"actual":break;case"height":a={height:"100%",objectFit:"fill"};break;case"none":a={width:"100%",height:"100%",objectFit:"fill"};break;case"width":a={width:"100%",objectFit:"fill"}}const n=this[r.$getParent]();return c.HTMLResult.success({name:"img",attributes:{class:["xfaImage"],style:a,src:URL.createObjectURL(t),alt:n?ariaLabel(n[r.$getParent]()):null}})}}class ImageEdit extends o.XFAObject{constructor(e){super(f,"imageEdit",!0);this.data=(0,c.getStringOption)(e.data,["link","embed"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[r.$toHTML](e){return"embed"===this.data?c.HTMLResult.success({name:"div",children:[],attributes:{}}):c.HTMLResult.EMPTY}}class Integer extends o.ContentObject{constructor(e){super(f,"integer");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=parseInt(this[r.$content].trim(),10);this[r.$content]=isNaN(e)?null:e}[r.$toHTML](e){return valueToHtml(null!==this[r.$content]?this[r.$content].toString():"")}}class Issuers extends o.XFAObject{constructor(e){super(f,"issuers",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new o.XFAObjectArray}}class Items extends o.XFAObject{constructor(e){super(f,"items",!0);this.id=e.id||"";this.name=e.name||"";this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.ref=e.ref||"";this.save=(0,c.getInteger)({data:e.save,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new o.XFAObjectArray;this.date=new o.XFAObjectArray;this.dateTime=new o.XFAObjectArray;this.decimal=new o.XFAObjectArray;this.exData=new o.XFAObjectArray;this.float=new o.XFAObjectArray;this.image=new o.XFAObjectArray;this.integer=new o.XFAObjectArray;this.text=new o.XFAObjectArray;this.time=new o.XFAObjectArray}[r.$toHTML](){const e=[];for(const t of this[r.$getChildren]())e.push(t[r.$text]());return c.HTMLResult.success(e)}}t.Items=Items;class Keep extends o.XFAObject{constructor(e){super(f,"keep",!0);this.id=e.id||"";const t=["none","contentArea","pageArea"];this.intact=(0,c.getStringOption)(e.intact,t);this.next=(0,c.getStringOption)(e.next,t);this.previous=(0,c.getStringOption)(e.previous,t);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class KeyUsage extends o.XFAObject{constructor(e){super(f,"keyUsage");const t=["","yes","no"];this.crlSign=(0,c.getStringOption)(e.crlSign,t);this.dataEncipherment=(0,c.getStringOption)(e.dataEncipherment,t);this.decipherOnly=(0,c.getStringOption)(e.decipherOnly,t);this.digitalSignature=(0,c.getStringOption)(e.digitalSignature,t);this.encipherOnly=(0,c.getStringOption)(e.encipherOnly,t);this.id=e.id||"";this.keyAgreement=(0,c.getStringOption)(e.keyAgreement,t);this.keyCertSign=(0,c.getStringOption)(e.keyCertSign,t);this.keyEncipherment=(0,c.getStringOption)(e.keyEncipherment,t);this.nonRepudiation=(0,c.getStringOption)(e.nonRepudiation,t);this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Line extends o.XFAObject{constructor(e){super(f,"line",!0);this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.slope=(0,c.getStringOption)(e.slope,["\\","/"]);this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null}[r.$toHTML](){const e=this[r.$getParent]()[r.$getParent](),t=this.edge||new Edge({}),a=t[r.$toStyle](),n=Object.create(null),i="visible"===t.presence?t.thickness:0;n.strokeWidth=(0,s.measureToString)(i);n.stroke=a.color;let o,l,h,u,d="100%",f="100%";if(e.w<=i){[o,l,h,u]=["50%",0,"50%","100%"];d=n.strokeWidth}else if(e.h<=i){[o,l,h,u]=[0,"50%","100%","50%"];f=n.strokeWidth}else"\\"===this.slope?[o,l,h,u]=[0,0,"100%","100%"]:[o,l,h,u]=[0,"100%","100%",0];const p={name:"svg",children:[{name:"line",attributes:{xmlns:g,x1:o,y1:l,x2:h,y2:u,style:n}}],attributes:{xmlns:g,width:d,height:f,style:{overflow:"visible"}}};if(hasMargin(e))return c.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[p]});p.attributes.style.position="absolute";return c.HTMLResult.success(p)}}class Linear extends o.XFAObject{constructor(e){super(f,"linear",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["toRight","toBottom","toLeft","toTop"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](e){e=e?e[r.$toStyle]():"#FFFFFF";return`linear-gradient(${this.type.replace(/([RBLT])/," $1").toLowerCase()}, ${e}, ${this.color?this.color[r.$toStyle]():"#000000"})`}}class LockDocument extends o.ContentObject{constructor(e){super(f,"lockDocument");this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){this[r.$content]=(0,c.getStringOption)(this[r.$content],["auto","0","1"])}}class Manifest extends o.XFAObject{constructor(e){super(f,"manifest",!0);this.action=(0,c.getStringOption)(e.action,["include","all","exclude"]);this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.ref=new o.XFAObjectArray}}class Margin extends o.XFAObject{constructor(e){super(f,"margin",!0);this.bottomInset=(0,c.getMeasurement)(e.bottomInset,"0");this.id=e.id||"";this.leftInset=(0,c.getMeasurement)(e.leftInset,"0");this.rightInset=(0,c.getMeasurement)(e.rightInset,"0");this.topInset=(0,c.getMeasurement)(e.topInset,"0");this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[r.$toStyle](){return{margin:(0,s.measureToString)(this.topInset)+" "+(0,s.measureToString)(this.rightInset)+" "+(0,s.measureToString)(this.bottomInset)+" "+(0,s.measureToString)(this.leftInset)}}}class Mdp extends o.XFAObject{constructor(e){super(f,"mdp");this.id=e.id||"";this.permissions=(0,c.getInteger)({data:e.permissions,defaultValue:2,validate:e=>1===e||3===e});this.signatureType=(0,c.getStringOption)(e.signatureType,["filler","author"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Medium extends o.XFAObject{constructor(e){super(f,"medium");this.id=e.id||"";this.imagingBBox=(0,c.getBBox)(e.imagingBBox);this.long=(0,c.getMeasurement)(e.long);this.orientation=(0,c.getStringOption)(e.orientation,["portrait","landscape"]);this.short=(0,c.getMeasurement)(e.short);this.stock=e.stock||"";this.trayIn=(0,c.getStringOption)(e.trayIn,["auto","delegate","pageFront"]);this.trayOut=(0,c.getStringOption)(e.trayOut,["auto","delegate"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Message extends o.XFAObject{constructor(e){super(f,"message",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.text=new o.XFAObjectArray}}class NumericEdit extends o.XFAObject{constructor(e){super(f,"numericEdit",!0);this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)(this,"border","font","margin"),a=this[r.$getParent]()[r.$getParent](),n={name:"input",attributes:{type:"text",fieldId:a[r.$uid],dataId:a[r.$data]?.[r.$uid]||a[r.$uid],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a),"aria-required":!1}};if(isRequired(a)){n.attributes["aria-required"]=!0;n.attributes.required=!0}return c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[n]})}}class Occur extends o.XFAObject{constructor(e){super(f,"occur",!0);this.id=e.id||"";this.initial=""!==e.initial?(0,c.getInteger)({data:e.initial,defaultValue:"",validate:e=>!0}):"";this.max=""!==e.max?(0,c.getInteger)({data:e.max,defaultValue:1,validate:e=>!0}):"";this.min=""!==e.min?(0,c.getInteger)({data:e.min,defaultValue:1,validate:e=>!0}):"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[r.$clean](){const e=this[r.$getParent](),t=this.min;""===this.min&&(this.min=e instanceof PageArea||e instanceof PageSet?0:1);""===this.max&&(this.max=""===t?e instanceof PageArea||e instanceof PageSet?-1:1:this.min);-1!==this.max&&this.max!0});this.name=e.name||"";this.numbered=(0,c.getInteger)({data:e.numbered,defaultValue:1,validate:e=>!0});this.oddOrEven=(0,c.getStringOption)(e.oddOrEven,["any","even","odd"]);this.pagePosition=(0,c.getStringOption)(e.pagePosition,["any","first","last","only","rest"]);this.relevant=(0,c.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.desc=null;this.extras=null;this.medium=null;this.occur=null;this.area=new o.XFAObjectArray;this.contentArea=new o.XFAObjectArray;this.draw=new o.XFAObjectArray;this.exclGroup=new o.XFAObjectArray;this.field=new o.XFAObjectArray;this.subform=new o.XFAObjectArray}[r.$isUsable](){if(!this[r.$extra]){this[r.$extra]={numberOfUse:0};return!0}return!this.occur||-1===this.occur.max||this[r.$extra].numberOfUsee.oddOrEven===t&&e.pagePosition===a));if(n)return n;n=this.pageArea.children.find((e=>"any"===e.oddOrEven&&e.pagePosition===a));if(n)return n;n=this.pageArea.children.find((e=>"any"===e.oddOrEven&&"any"===e.pagePosition));return n||this.pageArea.children[0]}}class Para extends o.XFAObject{constructor(e){super(f,"para",!0);this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.lineHeight=e.lineHeight?(0,c.getMeasurement)(e.lineHeight,"0pt"):"";this.marginLeft=e.marginLeft?(0,c.getMeasurement)(e.marginLeft,"0pt"):"";this.marginRight=e.marginRight?(0,c.getMeasurement)(e.marginRight,"0pt"):"";this.orphans=(0,c.getInteger)({data:e.orphans,defaultValue:0,validate:e=>e>=0});this.preserve=e.preserve||"";this.radixOffset=e.radixOffset?(0,c.getMeasurement)(e.radixOffset,"0pt"):"";this.spaceAbove=e.spaceAbove?(0,c.getMeasurement)(e.spaceAbove,"0pt"):"";this.spaceBelow=e.spaceBelow?(0,c.getMeasurement)(e.spaceBelow,"0pt"):"";this.tabDefault=e.tabDefault?(0,c.getMeasurement)(this.tabDefault):"";this.tabStops=(e.tabStops||"").trim().split(/\s+/).map(((e,t)=>t%2==1?(0,c.getMeasurement)(e):e));this.textIndent=e.textIndent?(0,c.getMeasurement)(e.textIndent,"0pt"):"";this.use=e.use||"";this.usehref=e.usehref||"";this.vAlign=(0,c.getStringOption)(e.vAlign,["top","bottom","middle"]);this.widows=(0,c.getInteger)({data:e.widows,defaultValue:0,validate:e=>e>=0});this.hyphenation=null}[r.$toStyle](){const e=(0,s.toStyle)(this,"hAlign");""!==this.marginLeft&&(e.paddingLeft=(0,s.measureToString)(this.marginLeft));""!==this.marginRight&&(e.paddingight=(0,s.measureToString)(this.marginRight));""!==this.spaceAbove&&(e.paddingTop=(0,s.measureToString)(this.spaceAbove));""!==this.spaceBelow&&(e.paddingBottom=(0,s.measureToString)(this.spaceBelow));if(""!==this.textIndent){e.textIndent=(0,s.measureToString)(this.textIndent);(0,s.fixTextIndent)(e)}this.lineHeight>0&&(e.lineHeight=(0,s.measureToString)(this.lineHeight));""!==this.tabDefault&&(e.tabSize=(0,s.measureToString)(this.tabDefault));this.tabStops.length;this.hyphenatation&&Object.assign(e,this.hyphenatation[r.$toStyle]());return e}}class PasswordEdit extends o.XFAObject{constructor(e){super(f,"passwordEdit",!0);this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.passwordChar=e.passwordChar||"*";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}}class Pattern extends o.XFAObject{constructor(e){super(f,"pattern",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["crossHatch","crossDiagonal","diagonalLeft","diagonalRight","horizontal","vertical"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](e){e=e?e[r.$toStyle]():"#FFFFFF";const t=this.color?this.color[r.$toStyle]():"#000000",a="repeating-linear-gradient",n=`${e},${e} 5px,${t} 5px,${t} 10px`;switch(this.type){case"crossHatch":return`${a}(to top,${n}) ${a}(to right,${n})`;case"crossDiagonal":return`${a}(45deg,${n}) ${a}(-45deg,${n})`;case"diagonalLeft":return`${a}(45deg,${n})`;case"diagonalRight":return`${a}(-45deg,${n})`;case"horizontal":return`${a}(to top,${n})`;case"vertical":return`${a}(to right,${n})`}return""}}class Picture extends o.StringObject{constructor(e){super(f,"picture");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Proto extends o.XFAObject{constructor(e){super(f,"proto",!0);this.appearanceFilter=new o.XFAObjectArray;this.arc=new o.XFAObjectArray;this.area=new o.XFAObjectArray;this.assist=new o.XFAObjectArray;this.barcode=new o.XFAObjectArray;this.bindItems=new o.XFAObjectArray;this.bookend=new o.XFAObjectArray;this.boolean=new o.XFAObjectArray;this.border=new o.XFAObjectArray;this.break=new o.XFAObjectArray;this.breakAfter=new o.XFAObjectArray;this.breakBefore=new o.XFAObjectArray;this.button=new o.XFAObjectArray;this.calculate=new o.XFAObjectArray;this.caption=new o.XFAObjectArray;this.certificate=new o.XFAObjectArray;this.certificates=new o.XFAObjectArray;this.checkButton=new o.XFAObjectArray;this.choiceList=new o.XFAObjectArray;this.color=new o.XFAObjectArray;this.comb=new o.XFAObjectArray;this.connect=new o.XFAObjectArray;this.contentArea=new o.XFAObjectArray;this.corner=new o.XFAObjectArray;this.date=new o.XFAObjectArray;this.dateTime=new o.XFAObjectArray;this.dateTimeEdit=new o.XFAObjectArray;this.decimal=new o.XFAObjectArray;this.defaultUi=new o.XFAObjectArray;this.desc=new o.XFAObjectArray;this.digestMethod=new o.XFAObjectArray;this.digestMethods=new o.XFAObjectArray;this.draw=new o.XFAObjectArray;this.edge=new o.XFAObjectArray;this.encoding=new o.XFAObjectArray;this.encodings=new o.XFAObjectArray;this.encrypt=new o.XFAObjectArray;this.encryptData=new o.XFAObjectArray;this.encryption=new o.XFAObjectArray;this.encryptionMethod=new o.XFAObjectArray;this.encryptionMethods=new o.XFAObjectArray;this.event=new o.XFAObjectArray;this.exData=new o.XFAObjectArray;this.exObject=new o.XFAObjectArray;this.exclGroup=new o.XFAObjectArray;this.execute=new o.XFAObjectArray;this.extras=new o.XFAObjectArray;this.field=new o.XFAObjectArray;this.fill=new o.XFAObjectArray;this.filter=new o.XFAObjectArray;this.float=new o.XFAObjectArray;this.font=new o.XFAObjectArray;this.format=new o.XFAObjectArray;this.handler=new o.XFAObjectArray;this.hyphenation=new o.XFAObjectArray;this.image=new o.XFAObjectArray;this.imageEdit=new o.XFAObjectArray;this.integer=new o.XFAObjectArray;this.issuers=new o.XFAObjectArray;this.items=new o.XFAObjectArray;this.keep=new o.XFAObjectArray;this.keyUsage=new o.XFAObjectArray;this.line=new o.XFAObjectArray;this.linear=new o.XFAObjectArray;this.lockDocument=new o.XFAObjectArray;this.manifest=new o.XFAObjectArray;this.margin=new o.XFAObjectArray;this.mdp=new o.XFAObjectArray;this.medium=new o.XFAObjectArray;this.message=new o.XFAObjectArray;this.numericEdit=new o.XFAObjectArray;this.occur=new o.XFAObjectArray;this.oid=new o.XFAObjectArray;this.oids=new o.XFAObjectArray;this.overflow=new o.XFAObjectArray;this.pageArea=new o.XFAObjectArray;this.pageSet=new o.XFAObjectArray;this.para=new o.XFAObjectArray;this.passwordEdit=new o.XFAObjectArray;this.pattern=new o.XFAObjectArray;this.picture=new o.XFAObjectArray;this.radial=new o.XFAObjectArray;this.reason=new o.XFAObjectArray;this.reasons=new o.XFAObjectArray;this.rectangle=new o.XFAObjectArray;this.ref=new o.XFAObjectArray;this.script=new o.XFAObjectArray;this.setProperty=new o.XFAObjectArray;this.signData=new o.XFAObjectArray;this.signature=new o.XFAObjectArray;this.signing=new o.XFAObjectArray;this.solid=new o.XFAObjectArray;this.speak=new o.XFAObjectArray;this.stipple=new o.XFAObjectArray;this.subform=new o.XFAObjectArray;this.subformSet=new o.XFAObjectArray;this.subjectDN=new o.XFAObjectArray;this.subjectDNs=new o.XFAObjectArray;this.submit=new o.XFAObjectArray;this.text=new o.XFAObjectArray;this.textEdit=new o.XFAObjectArray;this.time=new o.XFAObjectArray;this.timeStamp=new o.XFAObjectArray;this.toolTip=new o.XFAObjectArray;this.traversal=new o.XFAObjectArray;this.traverse=new o.XFAObjectArray;this.ui=new o.XFAObjectArray;this.validate=new o.XFAObjectArray;this.value=new o.XFAObjectArray;this.variables=new o.XFAObjectArray}}class Radial extends o.XFAObject{constructor(e){super(f,"radial",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["toEdge","toCenter"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](e){e=e?e[r.$toStyle]():"#FFFFFF";const t=this.color?this.color[r.$toStyle]():"#000000";return`radial-gradient(circle at center, ${"toEdge"===this.type?`${e},${t}`:`${t},${e}`})`}}class Reason extends o.StringObject{constructor(e){super(f,"reason");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Reasons extends o.XFAObject{constructor(e){super(f,"reasons",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.reason=new o.XFAObjectArray}}class Rectangle extends o.XFAObject{constructor(e){super(f,"rectangle",!0);this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new o.XFAObjectArray(4);this.edge=new o.XFAObjectArray(4);this.fill=null}[r.$toHTML](){const e=this.edge.children.length?this.edge.children[0]:new Edge({}),t=e[r.$toStyle](),a=Object.create(null);"visible"===this.fill?.presence?Object.assign(a,this.fill[r.$toStyle]()):a.fill="transparent";a.strokeWidth=(0,s.measureToString)("visible"===e.presence?e.thickness:0);a.stroke=t.color;const n=(this.corner.children.length?this.corner.children[0]:new Corner({}))[r.$toStyle](),i={name:"svg",children:[{name:"rect",attributes:{xmlns:g,width:"100%",height:"100%",x:0,y:0,rx:n.radius,ry:n.radius,style:a}}],attributes:{xmlns:g,style:{overflow:"visible"},width:"100%",height:"100%"}};if(hasMargin(this[r.$getParent]()[r.$getParent]()))return c.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[i]});i.attributes.style.position="absolute";return c.HTMLResult.success(i)}}class RefElement extends o.StringObject{constructor(e){super(f,"ref");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Script extends o.StringObject{constructor(e){super(f,"script");this.binding=e.binding||"";this.contentType=e.contentType||"";this.id=e.id||"";this.name=e.name||"";this.runAt=(0,c.getStringOption)(e.runAt,["client","both","server"]);this.use=e.use||"";this.usehref=e.usehref||""}}class SetProperty extends o.XFAObject{constructor(e){super(f,"setProperty");this.connection=e.connection||"";this.ref=e.ref||"";this.target=e.target||""}}t.SetProperty=SetProperty;class SignData extends o.XFAObject{constructor(e){super(f,"signData",!0);this.id=e.id||"";this.operation=(0,c.getStringOption)(e.operation,["sign","clear","verify"]);this.ref=e.ref||"";this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Signature extends o.XFAObject{constructor(e){super(f,"signature",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["PDF1.3","PDF1.6"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.filter=null;this.manifest=null;this.margin=null}}class Signing extends o.XFAObject{constructor(e){super(f,"signing",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new o.XFAObjectArray}}class Solid extends o.XFAObject{constructor(e){super(f,"solid",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[r.$toStyle](e){return e?e[r.$toStyle]():"#FFFFFF"}}class Speak extends o.StringObject{constructor(e){super(f,"speak");this.disable=(0,c.getInteger)({data:e.disable,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.priority=(0,c.getStringOption)(e.priority,["custom","caption","name","toolTip"]);this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Stipple extends o.XFAObject{constructor(e){super(f,"stipple",!0);this.id=e.id||"";this.rate=(0,c.getInteger)({data:e.rate,defaultValue:50,validate:e=>e>=0&&e<=100});this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[r.$toStyle](e){const t=this.rate/100;return l.Util.makeHexColor(Math.round(e.value.r*(1-t)+this.value.r*t),Math.round(e.value.g*(1-t)+this.value.g*t),Math.round(e.value.b*(1-t)+this.value.b*t))}}class Subform extends o.XFAObject{constructor(e){super(f,"subform",!0);this.access=(0,c.getStringOption)(e.access,["open","nonInteractive","protected","readOnly"]);this.allowMacro=(0,c.getInteger)({data:e.allowMacro,defaultValue:0,validate:e=>1===e});this.anchorType=(0,c.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.columnWidths=(e.columnWidths||"").trim().split(/\s+/).map((e=>"-1"===e?-1:(0,c.getMeasurement)(e)));this.h=e.h?(0,c.getMeasurement)(e.h):"";this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=(0,c.getStringOption)(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.locale=e.locale||"";this.maxH=(0,c.getMeasurement)(e.maxH,"0pt");this.maxW=(0,c.getMeasurement)(e.maxW,"0pt");this.mergeMode=(0,c.getStringOption)(e.mergeMode,["consumeData","matchTemplate"]);this.minH=(0,c.getMeasurement)(e.minH,"0pt");this.minW=(0,c.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,c.getRelevant)(e.relevant);this.restoreState=(0,c.getStringOption)(e.restoreState,["manual","auto"]);this.scope=(0,c.getStringOption)(e.scope,["name","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,c.getMeasurement)(e.w):"";this.x=(0,c.getMeasurement)(e.x,"0pt");this.y=(0,c.getMeasurement)(e.y,"0pt");this.assist=null;this.bind=null;this.bookend=null;this.border=null;this.break=null;this.calculate=null;this.desc=null;this.extras=null;this.keep=null;this.margin=null;this.occur=null;this.overflow=null;this.pageSet=null;this.para=null;this.traversal=null;this.validate=null;this.variables=null;this.area=new o.XFAObjectArray;this.breakAfter=new o.XFAObjectArray;this.breakBefore=new o.XFAObjectArray;this.connect=new o.XFAObjectArray;this.draw=new o.XFAObjectArray;this.event=new o.XFAObjectArray;this.exObject=new o.XFAObjectArray;this.exclGroup=new o.XFAObjectArray;this.field=new o.XFAObjectArray;this.proto=new o.XFAObjectArray;this.setProperty=new o.XFAObjectArray;this.subform=new o.XFAObjectArray;this.subformSet=new o.XFAObjectArray}[r.$getSubformParent](){const e=this[r.$getParent]();return e instanceof SubformSet?e[r.$getSubformParent]():e}[r.$isBindable](){return!0}[r.$isThereMoreWidth](){return this.layout.endsWith("-tb")&&0===this[r.$extra].attempt&&this[r.$extra].numberInLine>0||this[r.$getParent]()[r.$isThereMoreWidth]()}*[r.$getContainedChildren](){yield*getContainedChildren(this)}[r.$flushHTML](){return(0,i.flushHTML)(this)}[r.$addHTML](e,t){(0,i.addHTML)(this,e,t)}[r.$getAvailableSpace](){return(0,i.getAvailableSpace)(this)}[r.$isSplittable](){const e=this[r.$getSubformParent]();if(!e[r.$isSplittable]())return!1;if(void 0!==this[r.$extra]._isSplittable)return this[r.$extra]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[r.$extra]._isSplittable=!1;return!1}if(this.keep&&"none"!==this.keep.intact){this[r.$extra]._isSplittable=!1;return!1}if(e.layout?.endsWith("-tb")&&0!==e[r.$extra].numberInLine)return!1;this[r.$extra]._isSplittable=!0;return!0}[r.$toHTML](e){setTabIndex(this);if(this.break){if("auto"!==this.break.after||""!==this.break.afterTarget){const e=new BreakAfter({targetType:this.break.after,target:this.break.afterTarget,startNew:this.break.startNew.toString()});e[r.$globalData]=this[r.$globalData];this[r.$appendChild](e);this.breakAfter.push(e)}if("auto"!==this.break.before||""!==this.break.beforeTarget){const e=new BreakBefore({targetType:this.break.before,target:this.break.beforeTarget,startNew:this.break.startNew.toString()});e[r.$globalData]=this[r.$globalData];this[r.$appendChild](e);this.breakBefore.push(e)}if(""!==this.break.overflowTarget){const e=new Overflow({target:this.break.overflowTarget,leader:this.break.overflowLeader,trailer:this.break.overflowTrailer});e[r.$globalData]=this[r.$globalData];this[r.$appendChild](e);this.overflow.push(e)}this[r.$removeChild](this.break);this.break=null}if("hidden"===this.presence||"inactive"===this.presence)return c.HTMLResult.EMPTY;(this.breakBefore.children.length>1||this.breakAfter.children.length>1)&&(0,l.warn)("XFA - Several breakBefore or breakAfter in subforms: please file a bug.");if(this.breakBefore.children.length>=1){const e=this.breakBefore.children[0];if(handleBreak(e))return c.HTMLResult.breakNode(e)}if(this[r.$extra]?.afterBreakAfter)return c.HTMLResult.EMPTY;(0,s.fixDimensions)(this);const t=[],a={id:this[r.$uid],class:[]};(0,s.setAccess)(this,a.class);this[r.$extra]||(this[r.$extra]=Object.create(null));Object.assign(this[r.$extra],{children:t,line:null,attributes:a,attempt:0,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const n=this[r.$getTemplateRoot](),o=n[r.$extra].noLayoutFailure,h=this[r.$isSplittable]();h||setFirstUnsplittable(this);if(!(0,i.checkDimensions)(this,e))return c.HTMLResult.FAILURE;const u=new Set(["area","draw","exclGroup","field","subform","subformSet"]);if(this.layout.includes("row")){const e=this[r.$getSubformParent]().columnWidths;if(Array.isArray(e)&&e.length>0){this[r.$extra].columnWidths=e;this[r.$extra].currentColumn=0}}const d=(0,s.toStyle)(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),f=["xfaSubform"],g=(0,s.layoutClass)(this);g&&f.push(g);a.style=d;a.class=f;this.name&&(a.xfaName=this.name);if(this.overflow){const t=this.overflow[r.$getExtra]();if(t.addLeader){t.addLeader=!1;handleOverflow(this,t.leader,e)}}this[r.$pushPara]();const p="lr-tb"===this.layout||"rl-tb"===this.layout,m=p?2:1;for(;this[r.$extra].attempt=1){const e=this.breakAfter.children[0];if(handleBreak(e)){this[r.$extra].afterBreakAfter=k;return c.HTMLResult.breakNode(e)}}delete this[r.$extra];return k}}class SubformSet extends o.XFAObject{constructor(e){super(f,"subformSet",!0);this.id=e.id||"";this.name=e.name||"";this.relation=(0,c.getStringOption)(e.relation,["ordered","choice","unordered"]);this.relevant=(0,c.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.bookend=null;this.break=null;this.desc=null;this.extras=null;this.occur=null;this.overflow=null;this.breakAfter=new o.XFAObjectArray;this.breakBefore=new o.XFAObjectArray;this.subform=new o.XFAObjectArray;this.subformSet=new o.XFAObjectArray}*[r.$getContainedChildren](){yield*getContainedChildren(this)}[r.$getSubformParent](){let e=this[r.$getParent]();for(;!(e instanceof Subform);)e=e[r.$getParent]();return e}[r.$isBindable](){return!0}}class SubjectDN extends o.ContentObject{constructor(e){super(f,"subjectDN");this.delimiter=e.delimiter||",";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){this[r.$content]=new Map(this[r.$content].split(this.delimiter).map((e=>{(e=e.split("=",2))[0]=e[0].trim();return e})))}}class SubjectDNs extends o.XFAObject{constructor(e){super(f,"subjectDNs",!0);this.id=e.id||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.subjectDN=new o.XFAObjectArray}}class Submit extends o.XFAObject{constructor(e){super(f,"submit",!0);this.embedPDF=(0,c.getInteger)({data:e.embedPDF,defaultValue:0,validate:e=>1===e});this.format=(0,c.getStringOption)(e.format,["xdp","formdata","pdf","urlencoded","xfd","xml"]);this.id=e.id||"";this.target=e.target||"";this.textEncoding=(0,c.getKeyword)({data:e.textEncoding?e.textEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\d{2}/)});this.use=e.use||"";this.usehref=e.usehref||"";this.xdpContent=e.xdpContent||"";this.encrypt=null;this.encryptData=new o.XFAObjectArray;this.signData=new o.XFAObjectArray}}class Template extends o.XFAObject{constructor(e){super(f,"template",!0);this.baseProfile=(0,c.getStringOption)(e.baseProfile,["full","interactiveForms"]);this.extras=null;this.subform=new o.XFAObjectArray}[r.$finalize](){0===this.subform.children.length&&(0,l.warn)("XFA - No subforms in template node.");this.subform.children.length>=2&&(0,l.warn)("XFA - Several subforms in template node: please file a bug.");this[r.$tabIndex]=5e3}[r.$isSplittable](){return!0}[r.$searchNode](e,t){return e.startsWith("#")?[this[r.$ids].get(e.slice(1))]:(0,d.searchNode)(this,t,e,!0,!0)}*[r.$toPages](){if(!this.subform.children.length)return c.HTMLResult.success({name:"div",children:[]});this[r.$extra]={overflowNode:null,firstUnsplittable:null,currentContentArea:null,currentPageArea:null,noLayoutFailure:!1,pageNumber:1,pagePosition:"first",oddOrEven:"odd",blankOrNotBlank:"nonBlank",paraStack:[]};const e=this.subform.children[0];e.pageSet[r.$cleanPage]();const t=e.pageSet.pageArea.children,a={name:"div",children:[]};let n=null,i=null,s=null;if(e.breakBefore.children.length>=1){i=e.breakBefore.children[0];s=i.target}else if(e.subform.children.length>=1&&e.subform.children[0].breakBefore.children.length>=1){i=e.subform.children[0].breakBefore.children[0];s=i.target}else if(e.break?.beforeTarget){i=e.break;s=i.beforeTarget}else if(e.subform.children.length>=1&&e.subform.children[0].break?.beforeTarget){i=e.subform.children[0].break;s=i.beforeTarget}if(i){const e=this[r.$searchNode](s,i[r.$getParent]());if(e instanceof PageArea){n=e;i[r.$extra]={}}}n||(n=t[0]);n[r.$extra]={numberOfUse:1};const o=n[r.$getParent]();o[r.$extra]={numberOfUse:1,pageIndex:o.pageArea.children.indexOf(n),pageSetIndex:0};let h,u=null,d=null,f=!0,g=0,p=0;for(;;){if(f)g=0;else{a.children.pop();if(3==++g){(0,l.warn)("XFA - Something goes wrong: please file a bug.");return a}}h=null;this[r.$extra].currentPageArea=n;const t=n[r.$toHTML]().html;a.children.push(t);if(u){this[r.$extra].noLayoutFailure=!0;t.children.push(u[r.$toHTML](n[r.$extra].space).html);u=null}if(d){this[r.$extra].noLayoutFailure=!0;t.children.push(d[r.$toHTML](n[r.$extra].space).html);d=null}const i=n.contentArea.children,s=t.children.filter((e=>e.attributes.class.includes("xfaContentarea")));f=!1;this[r.$extra].firstUnsplittable=null;this[r.$extra].noLayoutFailure=!1;const flush=t=>{const a=e[r.$flushHTML]();if(a){f||=a.children?.length>0;s[t].children.push(a)}};for(let t=p,n=i.length;t0;s[t].children.push(c.html)}else!f&&a.children.length>1&&a.children.pop();return a}if(c.isBreak()){const e=c.breakNode;flush(t);if("auto"===e.targetType)continue;if(e.leader){u=this[r.$searchNode](e.leader,e[r.$getParent]());u=u?u[0]:null}if(e.trailer){d=this[r.$searchNode](e.trailer,e[r.$getParent]());d=d?d[0]:null}if("pageArea"===e.targetType){h=e[r.$extra].target;t=1/0}else if(e[r.$extra].target){h=e[r.$extra].target;p=e[r.$extra].index+1;t=1/0}else t=e[r.$extra].index}else if(this[r.$extra].overflowNode){const e=this[r.$extra].overflowNode;this[r.$extra].overflowNode=null;const a=e[r.$getExtra](),n=a.target;a.addLeader=null!==a.leader;a.addTrailer=null!==a.trailer;flush(t);const s=t;t=1/0;if(n instanceof PageArea)h=n;else if(n instanceof ContentArea){const e=i.indexOf(n);if(-1!==e)e>s?t=e-1:p=e;else{h=n[r.$getParent]();p=h.contentArea.children.indexOf(n)}}}else flush(t)}this[r.$extra].pageNumber+=1;h&&(h[r.$isUsable]()?h[r.$extra].numberOfUse+=1:h=null);n=h||n[r.$getNextPage]();yield null}}}t.Template=Template;class Text extends o.ContentObject{constructor(e){super(f,"text");this.id=e.id||"";this.maxChars=(0,c.getInteger)({data:e.maxChars,defaultValue:0,validate:e=>e>=0});this.name=e.name||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$acceptWhitespace](){return!0}[r.$onChild](e){if(e[r.$namespaceId]===n.NamespaceIds.xhtml.id){this[r.$content]=e;return!0}(0,l.warn)(`XFA - Invalid content in Text: ${e[r.$nodeName]}.`);return!1}[r.$onText](e){this[r.$content]instanceof o.XFAObject||super[r.$onText](e)}[r.$finalize](){"string"==typeof this[r.$content]&&(this[r.$content]=this[r.$content].replaceAll("\r\n","\n"))}[r.$getExtra](){return"string"==typeof this[r.$content]?this[r.$content].split(/[\u2029\u2028\n]/).reduce(((e,t)=>{t&&e.push(t);return e}),[]).join("\n"):this[r.$content][r.$text]()}[r.$toHTML](e){if("string"==typeof this[r.$content]){const e=valueToHtml(this[r.$content]).html;if(this[r.$content].includes("\u2029")){e.name="div";e.children=[];this[r.$content].split("\u2029").map((e=>e.split(/[\u2028\n]/).reduce(((e,t)=>{e.push({name:"span",value:t},{name:"br"});return e}),[]))).forEach((t=>{e.children.push({name:"p",children:t})}))}else if(/[\u2028\n]/.test(this[r.$content])){e.name="div";e.children=[];this[r.$content].split(/[\u2028\n]/).forEach((t=>{e.children.push({name:"span",value:t},{name:"br"})}))}return c.HTMLResult.success(e)}return this[r.$content][r.$toHTML](e)}}t.Text=Text;class TextEdit extends o.XFAObject{constructor(e){super(f,"textEdit",!0);this.allowRichText=(0,c.getInteger)({data:e.allowRichText,defaultValue:0,validate:e=>1===e});this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.multiLine=(0,c.getInteger)({data:e.multiLine,defaultValue:"",validate:e=>0===e||1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.vScrollPolicy=(0,c.getStringOption)(e.vScrollPolicy,["auto","off","on"]);this.border=null;this.comb=null;this.extras=null;this.margin=null}[r.$toHTML](e){const t=(0,s.toStyle)(this,"border","font","margin");let a;const n=this[r.$getParent]()[r.$getParent]();""===this.multiLine&&(this.multiLine=n instanceof Draw?1:0);a=1===this.multiLine?{name:"textarea",attributes:{dataId:n[r.$data]?.[r.$uid]||n[r.$uid],fieldId:n[r.$uid],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(n),"aria-required":!1}}:{name:"input",attributes:{type:"text",dataId:n[r.$data]?.[r.$uid]||n[r.$uid],fieldId:n[r.$uid],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(n),"aria-required":!1}};if(isRequired(n)){a.attributes["aria-required"]=!0;a.attributes.required=!0}return c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class Time extends o.StringObject{constructor(e){super(f,"time");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[r.$finalize](){const e=this[r.$content].trim();this[r.$content]=e?new Date(e):null}[r.$toHTML](e){return valueToHtml(this[r.$content]?this[r.$content].toString():"")}}class TimeStamp extends o.XFAObject{constructor(e){super(f,"timeStamp");this.id=e.id||"";this.server=e.server||"";this.type=(0,c.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class ToolTip extends o.StringObject{constructor(e){super(f,"toolTip");this.id=e.id||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Traversal extends o.XFAObject{constructor(e){super(f,"traversal",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.traverse=new o.XFAObjectArray}}class Traverse extends o.XFAObject{constructor(e){super(f,"traverse",!0);this.id=e.id||"";this.operation=(0,c.getStringOption)(e.operation,["next","back","down","first","left","right","up"]);this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.script=null}get name(){return this.operation}[r.$isTransparent](){return!1}}class Ui extends o.XFAObject{constructor(e){super(f,"ui",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null;this.barcode=null;this.button=null;this.checkButton=null;this.choiceList=null;this.dateTimeEdit=null;this.defaultUi=null;this.imageEdit=null;this.numericEdit=null;this.passwordEdit=null;this.signature=null;this.textEdit=null}[r.$getExtra](){if(void 0===this[r.$extra]){for(const e of Object.getOwnPropertyNames(this)){if("extras"===e||"picture"===e)continue;const t=this[e];if(t instanceof o.XFAObject){this[r.$extra]=t;return t}}this[r.$extra]=null}return this[r.$extra]}[r.$toHTML](e){const t=this[r.$getExtra]();return t?t[r.$toHTML](e):c.HTMLResult.EMPTY}}class Validate extends o.XFAObject{constructor(e){super(f,"validate",!0);this.formatTest=(0,c.getStringOption)(e.formatTest,["warning","disabled","error"]);this.id=e.id||"";this.nullTest=(0,c.getStringOption)(e.nullTest,["disabled","error","warning"]);this.scriptTest=(0,c.getStringOption)(e.scriptTest,["error","disabled","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.picture=null;this.script=null}}class Value extends o.XFAObject{constructor(e){super(f,"value",!0);this.id=e.id||"";this.override=(0,c.getInteger)({data:e.override,defaultValue:0,validate:e=>1===e});this.relevant=(0,c.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.arc=null;this.boolean=null;this.date=null;this.dateTime=null;this.decimal=null;this.exData=null;this.float=null;this.image=null;this.integer=null;this.line=null;this.rectangle=null;this.text=null;this.time=null}[r.$setValue](e){const t=this[r.$getParent]();if(t instanceof Field&&t.ui?.imageEdit){if(!this.image){this.image=new Image({});this[r.$appendChild](this.image)}this.image[r.$content]=e[r.$content];return}const a=e[r.$nodeName];if(null===this[a]){for(const e of Object.getOwnPropertyNames(this)){const t=this[e];if(t instanceof o.XFAObject){this[e]=null;this[r.$removeChild](t)}}this[e[r.$nodeName]]=e;this[r.$appendChild](e)}else this[a][r.$content]=e[r.$content]}[r.$text](){if(this.exData)return"string"==typeof this.exData[r.$content]?this.exData[r.$content].trim():this.exData[r.$content][r.$text]().trim();for(const e of Object.getOwnPropertyNames(this)){if("image"===e)continue;const t=this[e];if(t instanceof o.XFAObject)return(t[r.$content]||"").toString().trim()}return null}[r.$toHTML](e){for(const t of Object.getOwnPropertyNames(this)){const a=this[t];if(a instanceof o.XFAObject)return a[r.$toHTML](e)}return c.HTMLResult.EMPTY}}t.Value=Value;class Variables extends o.XFAObject{constructor(e){super(f,"variables",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new o.XFAObjectArray;this.date=new o.XFAObjectArray;this.dateTime=new o.XFAObjectArray;this.decimal=new o.XFAObjectArray;this.exData=new o.XFAObjectArray;this.float=new o.XFAObjectArray;this.image=new o.XFAObjectArray;this.integer=new o.XFAObjectArray;this.manifest=new o.XFAObjectArray;this.script=new o.XFAObjectArray;this.text=new o.XFAObjectArray;this.time=new o.XFAObjectArray}[r.$isTransparent](){return!0}}class TemplateNamespace{static[n.$buildXFAObject](e,t){if(TemplateNamespace.hasOwnProperty(e)){const a=TemplateNamespace[e](t);a[r.$setSetAttributes](t);return a}}static appearanceFilter(e){return new AppearanceFilter(e)}static arc(e){return new Arc(e)}static area(e){return new Area(e)}static assist(e){return new Assist(e)}static barcode(e){return new Barcode(e)}static bind(e){return new Bind(e)}static bindItems(e){return new BindItems(e)}static bookend(e){return new Bookend(e)}static boolean(e){return new BooleanElement(e)}static border(e){return new Border(e)}static break(e){return new Break(e)}static breakAfter(e){return new BreakAfter(e)}static breakBefore(e){return new BreakBefore(e)}static button(e){return new Button(e)}static calculate(e){return new Calculate(e)}static caption(e){return new Caption(e)}static certificate(e){return new Certificate(e)}static certificates(e){return new Certificates(e)}static checkButton(e){return new CheckButton(e)}static choiceList(e){return new ChoiceList(e)}static color(e){return new Color(e)}static comb(e){return new Comb(e)}static connect(e){return new Connect(e)}static contentArea(e){return new ContentArea(e)}static corner(e){return new Corner(e)}static date(e){return new DateElement(e)}static dateTime(e){return new DateTime(e)}static dateTimeEdit(e){return new DateTimeEdit(e)}static decimal(e){return new Decimal(e)}static defaultUi(e){return new DefaultUi(e)}static desc(e){return new Desc(e)}static digestMethod(e){return new DigestMethod(e)}static digestMethods(e){return new DigestMethods(e)}static draw(e){return new Draw(e)}static edge(e){return new Edge(e)}static encoding(e){return new Encoding(e)}static encodings(e){return new Encodings(e)}static encrypt(e){return new Encrypt(e)}static encryptData(e){return new EncryptData(e)}static encryption(e){return new Encryption(e)}static encryptionMethod(e){return new EncryptionMethod(e)}static encryptionMethods(e){return new EncryptionMethods(e)}static event(e){return new Event(e)}static exData(e){return new ExData(e)}static exObject(e){return new ExObject(e)}static exclGroup(e){return new ExclGroup(e)}static execute(e){return new Execute(e)}static extras(e){return new Extras(e)}static field(e){return new Field(e)}static fill(e){return new Fill(e)}static filter(e){return new Filter(e)}static float(e){return new Float(e)}static font(e){return new Font(e)}static format(e){return new Format(e)}static handler(e){return new Handler(e)}static hyphenation(e){return new Hyphenation(e)}static image(e){return new Image(e)}static imageEdit(e){return new ImageEdit(e)}static integer(e){return new Integer(e)}static issuers(e){return new Issuers(e)}static items(e){return new Items(e)}static keep(e){return new Keep(e)}static keyUsage(e){return new KeyUsage(e)}static line(e){return new Line(e)}static linear(e){return new Linear(e)}static lockDocument(e){return new LockDocument(e)}static manifest(e){return new Manifest(e)}static margin(e){return new Margin(e)}static mdp(e){return new Mdp(e)}static medium(e){return new Medium(e)}static message(e){return new Message(e)}static numericEdit(e){return new NumericEdit(e)}static occur(e){return new Occur(e)}static oid(e){return new Oid(e)}static oids(e){return new Oids(e)}static overflow(e){return new Overflow(e)}static pageArea(e){return new PageArea(e)}static pageSet(e){return new PageSet(e)}static para(e){return new Para(e)}static passwordEdit(e){return new PasswordEdit(e)}static pattern(e){return new Pattern(e)}static picture(e){return new Picture(e)}static proto(e){return new Proto(e)}static radial(e){return new Radial(e)}static reason(e){return new Reason(e)}static reasons(e){return new Reasons(e)}static rectangle(e){return new Rectangle(e)}static ref(e){return new RefElement(e)}static script(e){return new Script(e)}static setProperty(e){return new SetProperty(e)}static signData(e){return new SignData(e)}static signature(e){return new Signature(e)}static signing(e){return new Signing(e)}static solid(e){return new Solid(e)}static speak(e){return new Speak(e)}static stipple(e){return new Stipple(e)}static subform(e){return new Subform(e)}static subformSet(e){return new SubformSet(e)}static subjectDN(e){return new SubjectDN(e)}static subjectDNs(e){return new SubjectDNs(e)}static submit(e){return new Submit(e)}static template(e){return new Template(e)}static text(e){return new Text(e)}static textEdit(e){return new TextEdit(e)}static time(e){return new Time(e)}static timeStamp(e){return new TimeStamp(e)}static toolTip(e){return new ToolTip(e)}static traversal(e){return new Traversal(e)}static traverse(e){return new Traverse(e)}static ui(e){return new Ui(e)}static validate(e){return new Validate(e)}static value(e){return new Value(e)}static variables(e){return new Variables(e)}}t.TemplateNamespace=TemplateNamespace},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NamespaceIds=t.$buildXFAObject=void 0;const a=Symbol();t.$buildXFAObject=a;t.NamespaceIds={config:{id:0,check:e=>e.startsWith("http://www.xfa.org/schema/xci/")},connectionSet:{id:1,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-connection-set/")},datasets:{id:2,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-data/")},form:{id:3,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-form/")},localeSet:{id:4,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-locale-set/")},pdf:{id:5,check:e=>"http://ns.adobe.com/xdp/pdf/"===e},signature:{id:6,check:e=>"http://www.w3.org/2000/09/xmldsig#"===e},sourceSet:{id:7,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-source-set/")},stylesheet:{id:8,check:e=>"http://www.w3.org/1999/XSL/Transform"===e},template:{id:9,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-template/")},xdc:{id:10,check:e=>e.startsWith("http://www.xfa.org/schema/xdc/")},xdp:{id:11,check:e=>"http://ns.adobe.com/xdp/"===e},xfdf:{id:12,check:e=>"http://ns.adobe.com/xfdf/"===e},xhtml:{id:13,check:e=>"http://www.w3.org/1999/xhtml"===e},xmpmeta:{id:14,check:e=>"http://ns.adobe.com/xmpmeta/"===e}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.addHTML=function addHTML(e,t,a){const i=e[r.$extra],s=i.availableSpace,[o,c,l,h]=a;switch(e.layout){case"position":i.width=Math.max(i.width,o+l);i.height=Math.max(i.height,c+h);i.children.push(t);break;case"lr-tb":case"rl-tb":if(!i.line||1===i.attempt){i.line=createLine(e,[]);i.children.push(i.line);i.numberInLine=0}i.numberInLine+=1;i.line.children.push(t);if(0===i.attempt){i.currentWidth+=l;i.height=Math.max(i.height,i.prevHeight+h)}else{i.currentWidth=l;i.prevHeight=i.height;i.height+=h;i.attempt=0}i.width=Math.max(i.width,i.currentWidth);break;case"rl-row":case"row":{i.children.push(t);i.width+=l;i.height=Math.max(i.height,h);const e=(0,n.measureToString)(i.height);for(const t of i.children)t.attributes.style.height=e;break}case"table":case"tb":i.width=Math.min(s.width,Math.max(i.width,l));i.height+=h;i.children.push(t)}};t.checkDimensions=function checkDimensions(e,t){if(null===e[r.$getTemplateRoot]()[r.$extra].firstUnsplittable)return!0;if(0===e.w||0===e.h)return!0;const a=e[r.$getSubformParent](),n=a[r.$extra]?.attempt||0,[,i,s,o]=function getTransformedBBox(e){let t,a,r=""===e.w?NaN:e.w,n=""===e.h?NaN:e.h,[i,s]=[0,0];switch(e.anchorType||""){case"bottomCenter":[i,s]=[r/2,n];break;case"bottomLeft":[i,s]=[0,n];break;case"bottomRight":[i,s]=[r,n];break;case"middleCenter":[i,s]=[r/2,n/2];break;case"middleLeft":[i,s]=[0,n/2];break;case"middleRight":[i,s]=[r,n/2];break;case"topCenter":[i,s]=[r/2,0];break;case"topRight":[i,s]=[r,0]}switch(e.rotate||0){case 0:[t,a]=[-i,-s];break;case 90:[t,a]=[-s,i];[r,n]=[n,-r];break;case 180:[t,a]=[i,s];[r,n]=[-r,-n];break;case 270:[t,a]=[s,-i];[r,n]=[-n,r]}return[e.x+t+Math.min(0,r),e.y+a+Math.min(0,n),Math.abs(r),Math.abs(n)]}(e);switch(a.layout){case"lr-tb":case"rl-tb":return 0===n?e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure?""!==e.w?Math.round(s-t.width)<=2:t.width>2:!(""!==e.h&&Math.round(o-t.height)>2)&&(""!==e.w?Math.round(s-t.width)<=2||0===a[r.$extra].numberInLine&&t.height>2:t.width>2):!!e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure||!(""!==e.h&&Math.round(o-t.height)>2)&&((""===e.w||Math.round(s-t.width)<=2||!a[r.$isThereMoreWidth]())&&t.height>2);case"table":case"tb":return!!e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure||(""===e.h||e[r.$isSplittable]()?(""===e.w||Math.round(s-t.width)<=2||!a[r.$isThereMoreWidth]())&&t.height>2:Math.round(o-t.height)<=2);case"position":if(e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure)return!0;if(""===e.h||Math.round(o+i-t.height)<=2)return!0;return o+i>e[r.$getTemplateRoot]()[r.$extra].currentContentArea.h;case"rl-row":case"row":return!!e[r.$getTemplateRoot]()[r.$extra].noLayoutFailure||(""===e.h||Math.round(o-t.height)<=2);default:return!0}};t.flushHTML=function flushHTML(e){if(!e[r.$extra])return null;const t={name:"div",attributes:e[r.$extra].attributes,children:e[r.$extra].children};if(e[r.$extra].failingNode){const a=e[r.$extra].failingNode[r.$flushHTML]();a&&(e.layout.endsWith("-tb")?t.children.push(createLine(e,[a])):t.children.push(a))}if(0===t.children.length)return null;return t};t.getAvailableSpace=function getAvailableSpace(e){const t=e[r.$extra].availableSpace,a=e.margin?e.margin.topInset+e.margin.bottomInset:0,n=e.margin?e.margin.leftInset+e.margin.rightInset:0;switch(e.layout){case"lr-tb":case"rl-tb":return 0===e[r.$extra].attempt?{width:t.width-n-e[r.$extra].currentWidth,height:t.height-a-e[r.$extra].prevHeight}:{width:t.width-n,height:t.height-a-e[r.$extra].height};case"rl-row":case"row":return{width:e[r.$extra].columnWidths.slice(e[r.$extra].currentColumn).reduce(((e,t)=>e+t)),height:t.height-n};case"table":case"tb":return{width:t.width-n,height:t.height-a-e[r.$extra].height};default:return t}};var r=a(78),n=a(83);function createLine(e,t){return{name:"div",attributes:{class:["lr-tb"===e.layout?"xfaLr":"xfaRl"]},children:t}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.computeBbox=function computeBbox(e,t,a){let n;if(""!==e.w&&""!==e.h)n=[e.x,e.y,e.w,e.h];else{if(!a)return null;let i=e.w;if(""===i){if(0===e.maxW){const t=e[r.$getSubformParent]();i="position"===t.layout&&""!==t.w?0:e.minW}else i=Math.min(e.maxW,a.width);t.attributes.style.width=measureToString(i)}let s=e.h;if(""===s){if(0===e.maxH){const t=e[r.$getSubformParent]();s="position"===t.layout&&""!==t.h?0:e.minH}else s=Math.min(e.maxH,a.height);t.attributes.style.height=measureToString(s)}n=[e.x,e.y,i,s]}return n};t.createWrapper=function createWrapper(e,t){const{attributes:a}=t,{style:n}=a,i={name:"div",attributes:{class:["xfaWrapper"],style:Object.create(null)},children:[]};a.class.push("xfaWrapped");if(e.border){const{widths:a,insets:s}=e.border[r.$extra];let o,c,l=s[0],h=s[3];const u=s[0]+s[2],d=s[1]+s[3];switch(e.border.hand){case"even":l-=a[0]/2;h-=a[3]/2;o=`calc(100% + ${(a[1]+a[3])/2-d}px)`;c=`calc(100% + ${(a[0]+a[2])/2-u}px)`;break;case"left":l-=a[0];h-=a[3];o=`calc(100% + ${a[1]+a[3]-d}px)`;c=`calc(100% + ${a[0]+a[2]-u}px)`;break;case"right":o=d?`calc(100% - ${d}px)`:"100%";c=u?`calc(100% - ${u}px)`:"100%"}const f=["xfaBorder"];isPrintOnly(e.border)&&f.push("xfaPrintOnly");const g={name:"div",attributes:{class:f,style:{top:`${l}px`,left:`${h}px`,width:o,height:c}},children:[]};for(const e of["border","borderWidth","borderColor","borderRadius","borderStyle"])if(void 0!==n[e]){g.attributes.style[e]=n[e];delete n[e]}i.children.push(g,t)}else i.children.push(t);for(const e of["background","backgroundClip","top","left","width","height","minWidth","minHeight","maxWidth","maxHeight","transform","transformOrigin","visibility"])if(void 0!==n[e]){i.attributes.style[e]=n[e];delete n[e]}i.attributes.style.position="absolute"===n.position?"absolute":"relative";delete n.position;if(n.alignSelf){i.attributes.style.alignSelf=n.alignSelf;delete n.alignSelf}return i};t.fixDimensions=function fixDimensions(e){const t=e[r.$getSubformParent]();if(t.layout?.includes("row")){const a=t[r.$extra],n=e.colSpan;let i;i=-1===n?a.columnWidths.slice(a.currentColumn).reduce(((e,t)=>e+t),0):a.columnWidths.slice(a.currentColumn,a.currentColumn+n).reduce(((e,t)=>e+t),0);isNaN(i)||(e.w=i)}t.layout&&"position"!==t.layout&&(e.x=e.y=0);"table"===e.layout&&""===e.w&&Array.isArray(e.columnWidths)&&(e.w=e.columnWidths.reduce(((e,t)=>e+t),0))};t.fixTextIndent=function fixTextIndent(e){const t=(0,i.getMeasurement)(e.textIndent,"0px");if(t>=0)return;const a="padding"+("left"==("right"===e.textAlign?"right":"left")?"Left":"Right"),r=(0,i.getMeasurement)(e[a],"0px");e[a]=r-t+"px"};t.fixURL=function fixURL(e){const t=(0,n.createValidAbsoluteUrl)(e,null,{addDefaultProtocol:!0,tryConvertEncoding:!0});return t?t.href:null};t.isPrintOnly=isPrintOnly;t.layoutClass=function layoutClass(e){switch(e.layout){case"position":default:return"xfaPosition";case"lr-tb":return"xfaLrTb";case"rl-row":return"xfaRlRow";case"rl-tb":return"xfaRlTb";case"row":return"xfaRow";case"table":return"xfaTable";case"tb":return"xfaTb"}};t.layoutNode=function layoutNode(e,t){let a=null,n=null,i=!1;if((!e.w||!e.h)&&e.value){let s=0,o=0;if(e.margin){s=e.margin.leftInset+e.margin.rightInset;o=e.margin.topInset+e.margin.bottomInset}let c=null,l=null;if(e.para){l=Object.create(null);c=""===e.para.lineHeight?null:e.para.lineHeight;l.top=""===e.para.spaceAbove?0:e.para.spaceAbove;l.bottom=""===e.para.spaceBelow?0:e.para.spaceBelow;l.left=""===e.para.marginLeft?0:e.para.marginLeft;l.right=""===e.para.marginRight?0:e.para.marginRight}let h=e.font;if(!h){const t=e[r.$getTemplateRoot]();let a=e[r.$getParent]();for(;a&&a!==t;){if(a.font){h=a.font;break}a=a[r.$getParent]()}}const u=(e.w||t.width)-s,d=e[r.$globalData].fontFinder;if(e.value.exData&&e.value.exData[r.$content]&&"text/html"===e.value.exData.contentType){const t=layoutText(e.value.exData[r.$content],h,l,c,d,u);n=t.width;a=t.height;i=t.isBroken}else{const t=e.value[r.$text]();if(t){const e=layoutText(t,h,l,c,d,u);n=e.width;a=e.height;i=e.isBroken}}null===n||e.w||(n+=s);null===a||e.h||(a+=o)}return{w:n,h:a,isBroken:i}};t.measureToString=measureToString;t.setAccess=function setAccess(e,t){switch(e.access){case"nonInteractive":t.push("xfaNonInteractive");break;case"readOnly":t.push("xfaReadOnly");break;case"protected":t.push("xfaDisabled")}};t.setFontFamily=function setFontFamily(e,t,a,r){if(!a){delete r.fontFamily;return}const n=(0,i.stripQuotes)(e.typeface);r.fontFamily=`"${n}"`;const o=a.find(n);if(o){const{fontFamily:a}=o.regular.cssFontInfo;a!==n&&(r.fontFamily=`"${a}"`);const i=getCurrentPara(t);if(i&&""!==i.lineHeight)return;if(r.lineHeight)return;const c=(0,s.selectFont)(e,o);c&&(r.lineHeight=Math.max(1.2,c.lineHeight))}};t.setMinMaxDimensions=function setMinMaxDimensions(e,t){if("position"===e[r.$getSubformParent]().layout){e.minW>0&&(t.minWidth=measureToString(e.minW));e.maxW>0&&(t.maxWidth=measureToString(e.maxW));e.minH>0&&(t.minHeight=measureToString(e.minH));e.maxH>0&&(t.maxHeight=measureToString(e.maxH))}};t.setPara=function setPara(e,t,a){if(a.attributes.class?.includes("xfaRich")){if(t){""===e.h&&(t.height="auto");""===e.w&&(t.width="auto")}const n=getCurrentPara(e);if(n){const e=a.attributes.style;e.display="flex";e.flexDirection="column";switch(n.vAlign){case"top":e.justifyContent="start";break;case"bottom":e.justifyContent="end";break;case"middle":e.justifyContent="center"}const t=n[r.$toStyle]();for(const[a,r]of Object.entries(t))a in e||(e[a]=r)}}};t.toStyle=function toStyle(e,...t){const a=Object.create(null);for(const i of t){const t=e[i];if(null!==t)if(l.hasOwnProperty(i))l[i](e,a);else if(t instanceof c.XFAObject){const e=t[r.$toStyle]();e?Object.assign(a,e):(0,n.warn)(`(DEBUG) - XFA - style for ${i} not implemented yet`)}}return a};var r=a(78),n=a(2),i=a(84),s=a(85),o=a(86),c=a(87);function measureToString(e){return"string"==typeof e?"0px":Number.isInteger(e)?`${e}px`:`${e.toFixed(2)}px`}const l={anchorType(e,t){const a=e[r.$getSubformParent]();if(a&&(!a.layout||"position"===a.layout)){"transform"in t||(t.transform="");switch(e.anchorType){case"bottomCenter":t.transform+="translate(-50%, -100%)";break;case"bottomLeft":t.transform+="translate(0,-100%)";break;case"bottomRight":t.transform+="translate(-100%,-100%)";break;case"middleCenter":t.transform+="translate(-50%,-50%)";break;case"middleLeft":t.transform+="translate(0,-50%)";break;case"middleRight":t.transform+="translate(-100%,-50%)";break;case"topCenter":t.transform+="translate(-50%,0)";break;case"topRight":t.transform+="translate(-100%,0)"}}},dimensions(e,t){const a=e[r.$getSubformParent]();let n=e.w;const i=e.h;if(a.layout?.includes("row")){const t=a[r.$extra],i=e.colSpan;let s;if(-1===i){s=t.columnWidths.slice(t.currentColumn).reduce(((e,t)=>e+t),0);t.currentColumn=0}else{s=t.columnWidths.slice(t.currentColumn,t.currentColumn+i).reduce(((e,t)=>e+t),0);t.currentColumn=(t.currentColumn+e.colSpan)%t.columnWidths.length}isNaN(s)||(n=e.w=s)}t.width=""!==n?measureToString(n):"auto";t.height=""!==i?measureToString(i):"auto"},position(e,t){const a=e[r.$getSubformParent]();if(!a?.layout||"position"===a.layout){t.position="absolute";t.left=measureToString(e.x);t.top=measureToString(e.y)}},rotate(e,t){if(e.rotate){"transform"in t||(t.transform="");t.transform+=`rotate(-${e.rotate}deg)`;t.transformOrigin="top left"}},presence(e,t){switch(e.presence){case"invisible":t.visibility="hidden";break;case"hidden":case"inactive":t.display="none"}},hAlign(e,t){if("para"===e[r.$nodeName])switch(e.hAlign){case"justifyAll":t.textAlign="justify-all";break;case"radix":t.textAlign="left";break;default:t.textAlign=e.hAlign}else switch(e.hAlign){case"left":t.alignSelf="start";break;case"center":t.alignSelf="center";break;case"right":t.alignSelf="end"}},margin(e,t){e.margin&&(t.margin=e.margin[r.$toStyle]().margin)}};function layoutText(e,t,a,n,i,s){const c=new o.TextMeasure(t,a,n,i);"string"==typeof e?c.addString(e):e[r.$pushGlyphs](c);return c.compute(s)}function isPrintOnly(e){return e.relevant.length>0&&!e.relevant[0].excluded&&"print"===e.relevant[0].viewname}function getCurrentPara(e){const t=e[r.$getTemplateRoot]()[r.$extra].paraStack;return t.length?t.at(-1):null}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.HTMLResult=void 0;t.getBBox=function getBBox(e){const t=-1;if(!e)return{x:t,y:t,width:t,height:t};const a=e.trim().split(/\s*,\s*/).map((e=>getMeasurement(e,"-1")));if(a.length<4||a[2]<0||a[3]<0)return{x:t,y:t,width:t,height:t};const[r,n,i,s]=a;return{x:r,y:n,width:i,height:s}};t.getColor=function getColor(e,t=[0,0,0]){let[a,r,n]=t;if(!e)return{r:a,g:r,b:n};const i=e.trim().split(/\s*,\s*/).map((e=>Math.min(Math.max(0,parseInt(e.trim(),10)),255))).map((e=>isNaN(e)?0:e));if(i.length<3)return{r:a,g:r,b:n};[a,r,n]=i;return{r:a,g:r,b:n}};t.getFloat=function getFloat({data:e,defaultValue:t,validate:a}){if(!e)return t;e=e.trim();const r=parseFloat(e);if(!isNaN(r)&&a(r))return r;return t};t.getInteger=function getInteger({data:e,defaultValue:t,validate:a}){if(!e)return t;e=e.trim();const r=parseInt(e,10);if(!isNaN(r)&&a(r))return r;return t};t.getKeyword=getKeyword;t.getMeasurement=getMeasurement;t.getRatio=function getRatio(e){if(!e)return{num:1,den:1};const t=e.trim().split(/\s*:\s*/).map((e=>parseFloat(e))).filter((e=>!isNaN(e)));1===t.length&&t.push(1);if(0===t.length)return{num:1,den:1};const[a,r]=t;return{num:a,den:r}};t.getRelevant=function getRelevant(e){if(!e)return[];return e.trim().split(/\s+/).map((e=>({excluded:"-"===e[0],viewname:e.substring(1)})))};t.getStringOption=function getStringOption(e,t){return getKeyword({data:e,defaultValue:t[0],validate:e=>t.includes(e)})};t.stripQuotes=function stripQuotes(e){if(e.startsWith("'")||e.startsWith('"'))return e.slice(1,-1);return e};var r=a(2);const n={pt:e=>e,cm:e=>e/2.54*72,mm:e=>e/25.4*72,in:e=>72*e,px:e=>e},i=/([+-]?\d+\.?\d*)(.*)/;function getKeyword({data:e,defaultValue:t,validate:a}){return e&&a(e=e.trim())?e:t}function getMeasurement(e,t="0"){t||="0";if(!e)return getMeasurement(t);const a=e.trim().match(i);if(!a)return getMeasurement(t);const[,r,s]=a,o=parseFloat(r);if(isNaN(o))return getMeasurement(t);if(0===o)return 0;const c=n[s];return c?c(o):o}class HTMLResult{static get FAILURE(){return(0,r.shadow)(this,"FAILURE",new HTMLResult(!1,null,null,null))}static get EMPTY(){return(0,r.shadow)(this,"EMPTY",new HTMLResult(!0,null,null,null))}constructor(e,t,a,r){this.success=e;this.html=t;this.bbox=a;this.breakNode=r}isBreak(){return!!this.breakNode}static breakNode(e){return new HTMLResult(!1,null,null,e)}static success(e,t=null){return new HTMLResult(!0,e,t,null)}}t.HTMLResult=HTMLResult},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FontFinder=void 0;t.getMetrics=function getMetrics(e,t=!1){let a=null;if(e){const t=(0,n.stripQuotes)(e.typeface),i=e[r.$globalData].fontFinder.find(t);a=selectFont(e,i)}if(!a)return{lineHeight:12,lineGap:2,lineNoGap:10};const i=e.size||10,s=a.lineHeight?Math.max(t?0:1.2,a.lineHeight):1.2,o=void 0===a.lineGap?.2:a.lineGap;return{lineHeight:s*i,lineGap:o*i,lineNoGap:Math.max(1,s-o)*i}};t.selectFont=selectFont;var r=a(78),n=a(84),i=a(2);t.FontFinder=class FontFinder{constructor(e){this.fonts=new Map;this.cache=new Map;this.warned=new Set;this.defaultFont=null;this.add(e)}add(e,t=null){for(const t of e)this.addPdfFont(t);for(const e of this.fonts.values())e.regular||(e.regular=e.italic||e.bold||e.bolditalic);if(!t||0===t.size)return;const a=this.fonts.get("PdfJS-Fallback-PdfJS-XFA");for(const e of t)this.fonts.set(e,a)}addPdfFont(e){const t=e.cssFontInfo,a=t.fontFamily;let r=this.fonts.get(a);if(!r){r=Object.create(null);this.fonts.set(a,r);this.defaultFont||(this.defaultFont=r)}let n="";const i=parseFloat(t.fontWeight);0!==parseFloat(t.italicAngle)?n=i>=700?"bolditalic":"italic":i>=700&&(n="bold");if(!n){(e.name.includes("Bold")||e.psName?.includes("Bold"))&&(n="bold");(e.name.includes("Italic")||e.name.endsWith("It")||e.psName?.includes("Italic")||e.psName?.endsWith("It"))&&(n+="italic")}n||(n="regular");r[n]=e}getDefault(){return this.defaultFont}find(e,t=!0){let a=this.fonts.get(e)||this.cache.get(e);if(a)return a;const r=/,|-|_| |bolditalic|bold|italic|regular|it/gi;let n=e.replaceAll(r,"");a=this.fonts.get(n);if(a){this.cache.set(e,a);return a}n=n.toLowerCase();const s=[];for(const[e,t]of this.fonts.entries())e.replaceAll(r,"").toLowerCase().startsWith(n)&&s.push(t);if(0===s.length)for(const[,e]of this.fonts.entries())e.regular.name?.replaceAll(r,"").toLowerCase().startsWith(n)&&s.push(e);if(0===s.length){n=n.replaceAll(/psmt|mt/gi,"");for(const[e,t]of this.fonts.entries())e.replaceAll(r,"").toLowerCase().startsWith(n)&&s.push(t)}if(0===s.length)for(const e of this.fonts.values())e.regular.name?.replaceAll(r,"").toLowerCase().startsWith(n)&&s.push(e);if(s.length>=1){1!==s.length&&t&&(0,i.warn)(`XFA - Too many choices to guess the correct font: ${e}`);this.cache.set(e,s[0]);return s[0]}if(t&&!this.warned.has(e)){this.warned.add(e);(0,i.warn)(`XFA - Cannot find the font: ${e}`)}return null}};function selectFont(e,t){return"italic"===e.posture?"bold"===e.weight?t.bolditalic:t.italic:"bold"===e.weight?t.bold:t.regular}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.TextMeasure=void 0;var r=a(85);class FontInfo{constructor(e,t,a,n){this.lineHeight=a;this.paraMargin=t||{top:0,bottom:0,left:0,right:0};if(!e){[this.pdfFont,this.xfaFont]=this.defaultFont(n);return}this.xfaFont={typeface:e.typeface,posture:e.posture,weight:e.weight,size:e.size,letterSpacing:e.letterSpacing};const i=n.find(e.typeface);if(i){this.pdfFont=(0,r.selectFont)(e,i);this.pdfFont||([this.pdfFont,this.xfaFont]=this.defaultFont(n))}else[this.pdfFont,this.xfaFont]=this.defaultFont(n)}defaultFont(e){const t=e.find("Helvetica",!1)||e.find("Myriad Pro",!1)||e.find("Arial",!1)||e.getDefault();if(t?.regular){const e=t.regular;return[e,{typeface:e.cssFontInfo.fontFamily,posture:"normal",weight:"normal",size:10,letterSpacing:0}]}return[null,{typeface:"Courier",posture:"normal",weight:"normal",size:10,letterSpacing:0}]}}class FontSelector{constructor(e,t,a,r){this.fontFinder=r;this.stack=[new FontInfo(e,t,a,r)]}pushData(e,t,a){const r=this.stack.at(-1);for(const t of["typeface","posture","weight","size","letterSpacing"])e[t]||(e[t]=r.xfaFont[t]);for(const e of["top","bottom","left","right"])isNaN(t[e])&&(t[e]=r.paraMargin[e]);const n=new FontInfo(e,t,a||r.lineHeight,this.fontFinder);n.pdfFont||(n.pdfFont=r.pdfFont);this.stack.push(n)}popFont(){this.stack.pop()}topFont(){return this.stack.at(-1)}}t.TextMeasure=class TextMeasure{constructor(e,t,a,r){this.glyphs=[];this.fontSelector=new FontSelector(e,t,a,r);this.extraHeight=0}pushData(e,t,a){this.fontSelector.pushData(e,t,a)}popFont(e){return this.fontSelector.popFont()}addPara(){const e=this.fontSelector.topFont();this.extraHeight+=e.paraMargin.top+e.paraMargin.bottom}addString(e){if(!e)return;const t=this.fontSelector.topFont(),a=t.xfaFont.size;if(t.pdfFont){const r=t.xfaFont.letterSpacing,n=t.pdfFont,i=n.lineHeight||1.2,s=t.lineHeight||Math.max(1.2,i)*a,o=i-(void 0===n.lineGap?.2:n.lineGap),c=Math.max(1,o)*a,l=a/1e3,h=n.defaultWidth||n.charsToGlyphs(" ")[0].width;for(const t of e.split(/[\u2029\n]/)){const e=n.encodeString(t).join(""),a=n.charsToGlyphs(e);for(const e of a){const t=e.width||h;this.glyphs.push([t*l+r,s,c,e.unicode,!1])}this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop()}else{for(const t of e.split(/[\u2029\n]/)){for(const e of t.split(""))this.glyphs.push([a,1.2*a,a,e,!1]);this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop()}}compute(e){let t=-1,a=0,r=0,n=0,i=0,s=0,o=!1,c=!0;for(let l=0,h=this.glyphs.length;le){r=Math.max(r,i);i=0;n+=s;s=m;t=-1;a=0;o=!0;c=!1}else{s=Math.max(m,s);a=i;i+=h;t=l}else if(i+h>e){n+=s;s=m;if(-1!==t){l=t;r=Math.max(r,a);i=0;t=-1;a=0}else{r=Math.max(r,i);i=h}o=!0;c=!1}else{i+=h;s=Math.max(m,s)}}r=Math.max(r,i);n+=s+this.extraHeight;return{width:1.02*r,height:n,isBroken:o}}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XmlObject=t.XFAObjectArray=t.XFAObject=t.XFAAttribute=t.StringObject=t.OptionObject=t.Option10=t.Option01=t.IntegerObject=t.ContentObject=void 0;var r=a(78),n=a(84),i=a(2),s=a(3),o=a(81),c=a(88);const l=Symbol(),h=Symbol(),u=Symbol(),d=Symbol("_children"),f=Symbol(),g=Symbol(),p=Symbol(),m=Symbol(),b=Symbol(),y=Symbol(),w=Symbol(),S=Symbol(),x=Symbol(),C=Symbol("parent"),k=Symbol(),v=Symbol(),F=Symbol();let O=0;const T=o.NamespaceIds.datasets.id;class XFAObject{constructor(e,t,a=!1){this[r.$namespaceId]=e;this[r.$nodeName]=t;this[w]=a;this[C]=null;this[d]=[];this[r.$uid]=`${t}${O++}`;this[r.$globalData]=null}get isXFAObject(){return!0}get isXFAObjectArray(){return!1}createNodes(e){let t=this,a=null;for(const{name:n,index:i}of e){for(let e=0,s=isFinite(i)?i:0;e<=s;e++){const e=t[r.$namespaceId]===T?-1:t[r.$namespaceId];a=new XmlObject(e,n);t[r.$appendChild](a)}t=a}return a}[r.$onChild](e){if(!this[w]||!this[r.$onChildCheck](e))return!1;const t=e[r.$nodeName],a=this[t];if(!(a instanceof XFAObjectArray)){null!==a&&this[r.$removeChild](a);this[t]=e;this[r.$appendChild](e);return!0}if(a.push(e)){this[r.$appendChild](e);return!0}let n="";this.id?n=` (id: ${this.id})`:this.name&&(n=` (name: ${this.name} ${this.h.value})`);(0,i.warn)(`XFA - node "${this[r.$nodeName]}"${n} has already enough "${t}"!`);return!1}[r.$onChildCheck](e){return this.hasOwnProperty(e[r.$nodeName])&&e[r.$namespaceId]===this[r.$namespaceId]}[r.$isNsAgnostic](){return!1}[r.$acceptWhitespace](){return!1}[r.$isCDATAXml](){return!1}[r.$isBindable](){return!1}[r.$popPara](){this.para&&this[r.$getTemplateRoot]()[r.$extra].paraStack.pop()}[r.$pushPara](){this[r.$getTemplateRoot]()[r.$extra].paraStack.push(this.para)}[r.$setId](e){this.id&&this[r.$namespaceId]===o.NamespaceIds.template.id&&e.set(this.id,this)}[r.$getTemplateRoot](){return this[r.$globalData].template}[r.$isSplittable](){return!1}[r.$isThereMoreWidth](){return!1}[r.$appendChild](e){e[C]=this;this[d].push(e);!e[r.$globalData]&&this[r.$globalData]&&(e[r.$globalData]=this[r.$globalData])}[r.$removeChild](e){const t=this[d].indexOf(e);this[d].splice(t,1)}[r.$hasSettableValue](){return this.hasOwnProperty("value")}[r.$setValue](e){}[r.$onText](e){}[r.$finalize](){}[r.$clean](e){delete this[w];if(this[r.$cleanup]){e.clean(this[r.$cleanup]);delete this[r.$cleanup]}}[r.$indexOf](e){return this[d].indexOf(e)}[r.$insertAt](e,t){t[C]=this;this[d].splice(e,0,t);!t[r.$globalData]&&this[r.$globalData]&&(t[r.$globalData]=this[r.$globalData])}[r.$isTransparent](){return!this.name}[r.$lastAttribute](){return""}[r.$text](){return 0===this[d].length?this[r.$content]:this[d].map((e=>e[r.$text]())).join("")}get[u](){const e=Object.getPrototypeOf(this);if(!e._attributes){const t=e._attributes=new Set;for(const e of Object.getOwnPropertyNames(this)){if(null===this[e]||this[e]instanceof XFAObject||this[e]instanceof XFAObjectArray)break;t.add(e)}}return(0,i.shadow)(this,u,e._attributes)}[r.$isDescendent](e){let t=this;for(;t;){if(t===e)return!0;t=t[r.$getParent]()}return!1}[r.$getParent](){return this[C]}[r.$getSubformParent](){return this[r.$getParent]()}[r.$getChildren](e=null){return e?this[e]:this[d]}[r.$dump](){const e=Object.create(null);this[r.$content]&&(e.$content=this[r.$content]);for(const t of Object.getOwnPropertyNames(this)){const a=this[t];null!==a&&(a instanceof XFAObject?e[t]=a[r.$dump]():a instanceof XFAObjectArray?a.isEmpty()||(e[t]=a.dump()):e[t]=a)}return e}[r.$toStyle](){return null}[r.$toHTML](){return n.HTMLResult.EMPTY}*[r.$getContainedChildren](){for(const e of this[r.$getChildren]())yield e}*[m](e,t){for(const a of this[r.$getContainedChildren]())if(!e||t===e.has(a[r.$nodeName])){const e=this[r.$getAvailableSpace](),t=a[r.$toHTML](e);t.success||(this[r.$extra].failingNode=a);yield t}}[r.$flushHTML](){return null}[r.$addHTML](e,t){this[r.$extra].children.push(e)}[r.$getAvailableSpace](){}[r.$childrenToHTML]({filter:e=null,include:t=!0}){if(this[r.$extra].generator){const e=this[r.$getAvailableSpace](),t=this[r.$extra].failingNode[r.$toHTML](e);if(!t.success)return t;t.html&&this[r.$addHTML](t.html,t.bbox);delete this[r.$extra].failingNode}else this[r.$extra].generator=this[m](e,t);for(;;){const e=this[r.$extra].generator.next();if(e.done)break;const t=e.value;if(!t.success)return t;t.html&&this[r.$addHTML](t.html,t.bbox)}this[r.$extra].generator=null;return n.HTMLResult.EMPTY}[r.$setSetAttributes](e){this[v]=new Set(Object.keys(e))}[y](e){const t=this[u],a=this[v];return[...e].filter((e=>t.has(e)&&!a.has(e)))}[r.$resolvePrototypes](e,t=new Set){for(const a of this[d])a[k](e,t)}[k](e,t){const a=this[b](e,t);a?this[l](a,e,t):this[r.$resolvePrototypes](e,t)}[b](e,t){const{use:a,usehref:n}=this;if(!a&&!n)return null;let s=null,o=null,h=null,u=a;if(n){u=n;n.startsWith("#som(")&&n.endsWith(")")?o=n.slice(5,-1):n.startsWith(".#som(")&&n.endsWith(")")?o=n.slice(6,-1):n.startsWith("#")?h=n.slice(1):n.startsWith(".#")&&(h=n.slice(2))}else a.startsWith("#")?h=a.slice(1):o=a;this.use=this.usehref="";if(h)s=e.get(h);else{s=(0,c.searchNode)(e.get(r.$root),this,o,!0,!1);s&&(s=s[0])}if(!s){(0,i.warn)(`XFA - Invalid prototype reference: ${u}.`);return null}if(s[r.$nodeName]!==this[r.$nodeName]){(0,i.warn)(`XFA - Incompatible prototype: ${s[r.$nodeName]} !== ${this[r.$nodeName]}.`);return null}if(t.has(s)){(0,i.warn)("XFA - Cycle detected in prototypes use.");return null}t.add(s);const d=s[b](e,t);d&&s[l](d,e,t);s[r.$resolvePrototypes](e,t);t.delete(s);return s}[l](e,t,a){if(a.has(e)){(0,i.warn)("XFA - Cycle detected in prototypes use.");return}!this[r.$content]&&e[r.$content]&&(this[r.$content]=e[r.$content]);new Set(a).add(e);for(const t of this[y](e[v])){this[t]=e[t];this[v]&&this[v].add(t)}for(const n of Object.getOwnPropertyNames(this)){if(this[u].has(n))continue;const i=this[n],s=e[n];if(i instanceof XFAObjectArray){for(const e of i[d])e[k](t,a);for(let n=i[d].length,o=s[d].length;nXFAObject[f](e))):"object"==typeof e&&null!==e?Object.assign({},e):e}[r.$clone](){const e=Object.create(Object.getPrototypeOf(this));for(const t of Object.getOwnPropertySymbols(this))try{e[t]=this[t]}catch{(0,i.shadow)(e,t,this[t])}e[r.$uid]=`${e[r.$nodeName]}${O++}`;e[d]=[];for(const t of Object.getOwnPropertyNames(this)){if(this[u].has(t)){e[t]=XFAObject[f](this[t]);continue}const a=this[t];e[t]=a instanceof XFAObjectArray?new XFAObjectArray(a[S]):null}for(const t of this[d]){const a=t[r.$nodeName],n=t[r.$clone]();e[d].push(n);n[C]=e;null===e[a]?e[a]=n:e[a][d].push(n)}return e}[r.$getChildren](e=null){return e?this[d].filter((t=>t[r.$nodeName]===e)):this[d]}[r.$getChildrenByClass](e){return this[e]}[r.$getChildrenByName](e,t,a=!0){return Array.from(this[r.$getChildrenByNameIt](e,t,a))}*[r.$getChildrenByNameIt](e,t,a=!0){if("parent"!==e){for(const a of this[d]){a[r.$nodeName]===e&&(yield a);a.name===e&&(yield a);(t||a[r.$isTransparent]())&&(yield*a[r.$getChildrenByNameIt](e,t,!1))}a&&this[u].has(e)&&(yield new XFAAttribute(this,e,this[e]))}else yield this[C]}}t.XFAObject=XFAObject;class XFAObjectArray{constructor(e=1/0){this[S]=e;this[d]=[]}get isXFAObject(){return!1}get isXFAObjectArray(){return!0}push(e){if(this[d].length<=this[S]){this[d].push(e);return!0}(0,i.warn)(`XFA - node "${e[r.$nodeName]}" accepts no more than ${this[S]} children`);return!1}isEmpty(){return 0===this[d].length}dump(){return 1===this[d].length?this[d][0][r.$dump]():this[d].map((e=>e[r.$dump]()))}[r.$clone](){const e=new XFAObjectArray(this[S]);e[d]=this[d].map((e=>e[r.$clone]()));return e}get children(){return this[d]}clear(){this[d].length=0}}t.XFAObjectArray=XFAObjectArray;class XFAAttribute{constructor(e,t,a){this[C]=e;this[r.$nodeName]=t;this[r.$content]=a;this[r.$consumed]=!1;this[r.$uid]="attribute"+O++}[r.$getParent](){return this[C]}[r.$isDataValue](){return!0}[r.$getDataValue](){return this[r.$content].trim()}[r.$setValue](e){e=e.value||"";this[r.$content]=e.toString()}[r.$text](){return this[r.$content]}[r.$isDescendent](e){return this[C]===e||this[C][r.$isDescendent](e)}}t.XFAAttribute=XFAAttribute;class XmlObject extends XFAObject{constructor(e,t,a={}){super(e,t);this[r.$content]="";this[g]=null;if("#text"!==t){const e=new Map;this[h]=e;for(const[t,r]of Object.entries(a))e.set(t,new XFAAttribute(this,t,r));if(a.hasOwnProperty(r.$nsAttributes)){const e=a[r.$nsAttributes].xfa.dataNode;void 0!==e&&("dataGroup"===e?this[g]=!1:"dataValue"===e&&(this[g]=!0))}}this[r.$consumed]=!1}[r.$toString](e){const t=this[r.$nodeName];if("#text"===t){e.push((0,s.encodeToXmlString)(this[r.$content]));return}const a=(0,i.utf8StringToString)(t),n=this[r.$namespaceId]===T?"xfa:":"";e.push(`<${n}${a}`);for(const[t,a]of this[h].entries()){const n=(0,i.utf8StringToString)(t);e.push(` ${n}="${(0,s.encodeToXmlString)(a[r.$content])}"`)}null!==this[g]&&(this[g]?e.push(' xfa:dataNode="dataValue"'):e.push(' xfa:dataNode="dataGroup"'));if(this[r.$content]||0!==this[d].length){e.push(">");if(this[r.$content])"string"==typeof this[r.$content]?e.push((0,s.encodeToXmlString)(this[r.$content])):this[r.$content][r.$toString](e);else for(const t of this[d])t[r.$toString](e);e.push(``)}else e.push("/>")}[r.$onChild](e){if(this[r.$content]){const e=new XmlObject(this[r.$namespaceId],"#text");this[r.$appendChild](e);e[r.$content]=this[r.$content];this[r.$content]=""}this[r.$appendChild](e);return!0}[r.$onText](e){this[r.$content]+=e}[r.$finalize](){if(this[r.$content]&&this[d].length>0){const e=new XmlObject(this[r.$namespaceId],"#text");this[r.$appendChild](e);e[r.$content]=this[r.$content];delete this[r.$content]}}[r.$toHTML](){return"#text"===this[r.$nodeName]?n.HTMLResult.success({name:"#text",value:this[r.$content]}):n.HTMLResult.EMPTY}[r.$getChildren](e=null){return e?this[d].filter((t=>t[r.$nodeName]===e)):this[d]}[r.$getAttributes](){return this[h]}[r.$getChildrenByClass](e){const t=this[h].get(e);return void 0!==t?t:this[r.$getChildren](e)}*[r.$getChildrenByNameIt](e,t){const a=this[h].get(e);a&&(yield a);for(const a of this[d]){a[r.$nodeName]===e&&(yield a);t&&(yield*a[r.$getChildrenByNameIt](e,t))}}*[r.$getAttributeIt](e,t){const a=this[h].get(e);!a||t&&a[r.$consumed]||(yield a);for(const a of this[d])yield*a[r.$getAttributeIt](e,t)}*[r.$getRealChildrenByNameIt](e,t,a){for(const n of this[d]){n[r.$nodeName]!==e||a&&n[r.$consumed]||(yield n);t&&(yield*n[r.$getRealChildrenByNameIt](e,t,a))}}[r.$isDataValue](){return null===this[g]?0===this[d].length||this[d][0][r.$namespaceId]===o.NamespaceIds.xhtml.id:this[g]}[r.$getDataValue](){return null===this[g]?0===this[d].length?this[r.$content].trim():this[d][0][r.$namespaceId]===o.NamespaceIds.xhtml.id?this[d][0][r.$text]().trim():null:this[r.$content].trim()}[r.$setValue](e){e=e.value||"";this[r.$content]=e.toString()}[r.$dump](e=!1){const t=Object.create(null);e&&(t.$ns=this[r.$namespaceId]);this[r.$content]&&(t.$content=this[r.$content]);t.$name=this[r.$nodeName];t.children=[];for(const a of this[d])t.children.push(a[r.$dump](e));t.attributes=Object.create(null);for(const[e,a]of this[h])t.attributes[e]=a[r.$content];return t}}t.XmlObject=XmlObject;class ContentObject extends XFAObject{constructor(e,t){super(e,t);this[r.$content]=""}[r.$onText](e){this[r.$content]+=e}[r.$finalize](){}}t.ContentObject=ContentObject;class OptionObject extends ContentObject{constructor(e,t,a){super(e,t);this[x]=a}[r.$finalize](){this[r.$content]=(0,n.getKeyword)({data:this[r.$content],defaultValue:this[x][0],validate:e=>this[x].includes(e)})}[r.$clean](e){super[r.$clean](e);delete this[x]}}t.OptionObject=OptionObject;class StringObject extends ContentObject{[r.$finalize](){this[r.$content]=this[r.$content].trim()}}t.StringObject=StringObject;class IntegerObject extends ContentObject{constructor(e,t,a,r){super(e,t);this[p]=a;this[F]=r}[r.$finalize](){this[r.$content]=(0,n.getInteger)({data:this[r.$content],defaultValue:this[p],validate:this[F]})}[r.$clean](e){super[r.$clean](e);delete this[p];delete this[F]}}t.IntegerObject=IntegerObject;t.Option01=class Option01 extends IntegerObject{constructor(e,t){super(e,t,0,(e=>1===e))}};t.Option10=class Option10 extends IntegerObject{constructor(e,t){super(e,t,1,(e=>0===e))}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.createDataNode=function createDataNode(e,t,a){const i=parseExpression(a);if(!i)return null;if(i.some((e=>e.operator===o.dotDot)))return null;const s=c.get(i[0].name);let l=0;if(s){e=s(e,t);l=1}else e=t||e;for(let t=i.length;l0&&f.push(e)}if(0!==f.length||u||0!==d)e=isFinite(h)?f.filter((e=>he[h])):f.flat();else{const a=t[r.$getParent]();if(!(t=a))return null;d=-1;e=[t]}}if(0===e.length)return null;return e};var r=a(78),n=a(2);const i=/^[^.[]+/,s=/^[^\]]+/,o={dot:0,dotDot:1,dotHash:2,dotBracket:3,dotParen:4},c=new Map([["$data",(e,t)=>e.datasets?e.datasets.data:e],["$record",(e,t)=>(e.datasets?e.datasets.data:e)[r.$getChildren]()[0]],["$template",(e,t)=>e.template],["$connectionSet",(e,t)=>e.connectionSet],["$form",(e,t)=>e.form],["$layout",(e,t)=>e.layout],["$host",(e,t)=>e.host],["$dataWindow",(e,t)=>e.dataWindow],["$event",(e,t)=>e.event],["!",(e,t)=>e.datasets],["$xfa",(e,t)=>e],["xfa",(e,t)=>e],["$",(e,t)=>t]]),l=new WeakMap;function parseExpression(e,t,a=!0){let r=e.match(i);if(!r)return null;let[c]=r;const l=[{name:c,cacheName:"."+c,index:0,js:null,formCalc:null,operator:o.dot}];let h=c.length;for(;h{Object.defineProperty(t,"__esModule",{value:!0});t.DataHandler=void 0;var r=a(78);t.DataHandler=class DataHandler{constructor(e,t){this.data=t;this.dataset=e.datasets||null}serialize(e){const t=[[-1,this.data[r.$getChildren]()]];for(;t.length>0;){const a=t.at(-1),[n,i]=a;if(n+1===i.length){t.pop();continue}const s=i[++a[0]],o=e.get(s[r.$uid]);if(o)s[r.$setValue](o);else{const t=s[r.$getAttributes]();for(const a of t.values()){const t=e.get(a[r.$uid]);if(t){a[r.$setValue](t);break}}}const c=s[r.$getChildren]();c.length>0&&t.push([-1,c])}const a=[''];if(this.dataset)for(const e of this.dataset[r.$getChildren]())"data"!==e[r.$nodeName]&&e[r.$toString](a);this.data[r.$toString](a);a.push("");return a.join("")}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XFAParser=void 0;var r=a(78),n=a(71),i=a(91),s=a(2);class XFAParser extends n.XMLParserBase{constructor(e=null,t=!1){super();this._builder=new i.Builder(e);this._stack=[];this._globalData={usedTypefaces:new Set};this._ids=new Map;this._current=this._builder.buildRoot(this._ids);this._errorCode=n.XMLParserErrorCode.NoError;this._whiteRegex=/^\s+$/;this._nbsps=/\xa0+/g;this._richText=t}parse(e){this.parseXml(e);if(this._errorCode===n.XMLParserErrorCode.NoError){this._current[r.$finalize]();return this._current.element}}onText(e){e=e.replace(this._nbsps,(e=>e.slice(1)+" "));this._richText||this._current[r.$acceptWhitespace]()?this._current[r.$onText](e,this._richText):this._whiteRegex.test(e)||this._current[r.$onText](e.trim())}onCdata(e){this._current[r.$onText](e)}_mkAttributes(e,t){let a=null,n=null;const i=Object.create({});for(const{name:o,value:c}of e)if("xmlns"===o)a?(0,s.warn)(`XFA - multiple namespace definition in <${t}>`):a=c;else if(o.startsWith("xmlns:")){const e=o.substring(6);n||(n=[]);n.push({prefix:e,value:c})}else{const e=o.indexOf(":");if(-1===e)i[o]=c;else{let t=i[r.$nsAttributes];t||(t=i[r.$nsAttributes]=Object.create(null));const[a,n]=[o.slice(0,e),o.slice(e+1)];(t[a]||=Object.create(null))[n]=c}}return[a,n,i]}_getNameAndPrefix(e,t){const a=e.indexOf(":");return-1===a?[e,null]:[e.substring(a+1),t?"":e.substring(0,a)]}onBeginElement(e,t,a){const[n,i,s]=this._mkAttributes(t,e),[o,c]=this._getNameAndPrefix(e,this._builder.isNsAgnostic()),l=this._builder.build({nsPrefix:c,name:o,attributes:s,namespace:n,prefixes:i});l[r.$globalData]=this._globalData;if(a){l[r.$finalize]();this._current[r.$onChild](l)&&l[r.$setId](this._ids);l[r.$clean](this._builder)}else{this._stack.push(this._current);this._current=l}}onEndElement(e){const t=this._current;if(t[r.$isCDATAXml]()&&"string"==typeof t[r.$content]){const e=new XFAParser;e._globalData=this._globalData;const a=e.parse(t[r.$content]);t[r.$content]=null;t[r.$onChild](a)}t[r.$finalize]();this._current=this._stack.pop();this._current[r.$onChild](t)&&t[r.$setId](this._ids);t[r.$clean](this._builder)}onError(e){this._errorCode=e}}t.XFAParser=XFAParser},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Builder=void 0;var r=a(81),n=a(78),i=a(92),s=a(80),o=a(101),c=a(2),l=a(87);class Root extends l.XFAObject{constructor(e){super(-1,"root",Object.create(null));this.element=null;this[n.$ids]=e}[n.$onChild](e){this.element=e;return!0}[n.$finalize](){super[n.$finalize]();if(this.element.template instanceof s.Template){this[n.$ids].set(n.$root,this.element);this.element.template[n.$resolvePrototypes](this[n.$ids]);this.element.template[n.$ids]=this[n.$ids]}}}class Empty extends l.XFAObject{constructor(){super(-1,"",Object.create(null))}[n.$onChild](e){return!1}}t.Builder=class Builder{constructor(e=null){this._namespaceStack=[];this._nsAgnosticLevel=0;this._namespacePrefixes=new Map;this._namespaces=new Map;this._nextNsId=Math.max(...Object.values(r.NamespaceIds).map((({id:e})=>e)));this._currentNamespace=e||new o.UnknownNamespace(++this._nextNsId)}buildRoot(e){return new Root(e)}build({nsPrefix:e,name:t,attributes:a,namespace:s,prefixes:o}){const c=null!==s;if(c){this._namespaceStack.push(this._currentNamespace);this._currentNamespace=this._searchNamespace(s)}o&&this._addNamespacePrefix(o);if(a.hasOwnProperty(n.$nsAttributes)){const e=i.NamespaceSetUp.datasets,t=a[n.$nsAttributes];let r=null;for(const[a,n]of Object.entries(t)){if(this._getNamespaceToUse(a)===e){r={xfa:n};break}}r?a[n.$nsAttributes]=r:delete a[n.$nsAttributes]}const l=this._getNamespaceToUse(e),h=l?.[r.$buildXFAObject](t,a)||new Empty;h[n.$isNsAgnostic]()&&this._nsAgnosticLevel++;(c||o||h[n.$isNsAgnostic]())&&(h[n.$cleanup]={hasNamespace:c,prefixes:o,nsAgnostic:h[n.$isNsAgnostic]()});return h}isNsAgnostic(){return this._nsAgnosticLevel>0}_searchNamespace(e){let t=this._namespaces.get(e);if(t)return t;for(const[a,{check:n}]of Object.entries(r.NamespaceIds))if(n(e)){t=i.NamespaceSetUp[a];if(t){this._namespaces.set(e,t);return t}break}t=new o.UnknownNamespace(++this._nextNsId);this._namespaces.set(e,t);return t}_addNamespacePrefix(e){for(const{prefix:t,value:a}of e){const e=this._searchNamespace(a);let r=this._namespacePrefixes.get(t);if(!r){r=[];this._namespacePrefixes.set(t,r)}r.push(e)}}_getNamespaceToUse(e){if(!e)return this._currentNamespace;const t=this._namespacePrefixes.get(e);if(t?.length>0)return t.at(-1);(0,c.warn)(`Unknown namespace prefix: ${e}.`);return null}clean(e){const{hasNamespace:t,prefixes:a,nsAgnostic:r}=e;t&&(this._currentNamespace=this._namespaceStack.pop());a&&a.forEach((({prefix:e})=>{this._namespacePrefixes.get(e).pop()}));r&&this._nsAgnosticLevel--}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NamespaceSetUp=void 0;var r=a(93),n=a(94),i=a(95),s=a(96),o=a(97),c=a(98),l=a(80),h=a(99),u=a(100);const d={config:r.ConfigNamespace,connection:n.ConnectionSetNamespace,datasets:i.DatasetsNamespace,localeSet:s.LocaleSetNamespace,signature:o.SignatureNamespace,stylesheet:c.StylesheetNamespace,template:l.TemplateNamespace,xdp:h.XdpNamespace,xhtml:u.XhtmlNamespace};t.NamespaceSetUp=d},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ConfigNamespace=void 0;var r=a(81),n=a(78),i=a(87),s=a(84),o=a(2);const c=r.NamespaceIds.config.id;class Acrobat extends i.XFAObject{constructor(e){super(c,"acrobat",!0);this.acrobat7=null;this.autoSave=null;this.common=null;this.validate=null;this.validateApprovalSignatures=null;this.submitUrl=new i.XFAObjectArray}}class Acrobat7 extends i.XFAObject{constructor(e){super(c,"acrobat7",!0);this.dynamicRender=null}}class ADBE_JSConsole extends i.OptionObject{constructor(e){super(c,"ADBE_JSConsole",["delegate","Enable","Disable"])}}class ADBE_JSDebugger extends i.OptionObject{constructor(e){super(c,"ADBE_JSDebugger",["delegate","Enable","Disable"])}}class AddSilentPrint extends i.Option01{constructor(e){super(c,"addSilentPrint")}}class AddViewerPreferences extends i.Option01{constructor(e){super(c,"addViewerPreferences")}}class AdjustData extends i.Option10{constructor(e){super(c,"adjustData")}}class AdobeExtensionLevel extends i.IntegerObject{constructor(e){super(c,"adobeExtensionLevel",0,(e=>e>=1&&e<=8))}}class Agent extends i.XFAObject{constructor(e){super(c,"agent",!0);this.name=e.name?e.name.trim():"";this.common=new i.XFAObjectArray}}class AlwaysEmbed extends i.ContentObject{constructor(e){super(c,"alwaysEmbed")}}class Amd extends i.StringObject{constructor(e){super(c,"amd")}}class Area extends i.XFAObject{constructor(e){super(c,"area");this.level=(0,s.getInteger)({data:e.level,defaultValue:0,validate:e=>e>=1&&e<=3});this.name=(0,s.getStringOption)(e.name,["","barcode","coreinit","deviceDriver","font","general","layout","merge","script","signature","sourceSet","templateCache"])}}class Attributes extends i.OptionObject{constructor(e){super(c,"attributes",["preserve","delegate","ignore"])}}class AutoSave extends i.OptionObject{constructor(e){super(c,"autoSave",["disabled","enabled"])}}class Base extends i.StringObject{constructor(e){super(c,"base")}}class BatchOutput extends i.XFAObject{constructor(e){super(c,"batchOutput");this.format=(0,s.getStringOption)(e.format,["none","concat","zip","zipCompress"])}}class BehaviorOverride extends i.ContentObject{constructor(e){super(c,"behaviorOverride")}[n.$finalize](){this[n.$content]=new Map(this[n.$content].trim().split(/\s+/).filter((e=>e.includes(":"))).map((e=>e.split(":",2))))}}class Cache extends i.XFAObject{constructor(e){super(c,"cache",!0);this.templateCache=null}}class Change extends i.Option01{constructor(e){super(c,"change")}}class Common extends i.XFAObject{constructor(e){super(c,"common",!0);this.data=null;this.locale=null;this.localeSet=null;this.messaging=null;this.suppressBanner=null;this.template=null;this.validationMessaging=null;this.versionControl=null;this.log=new i.XFAObjectArray}}class Compress extends i.XFAObject{constructor(e){super(c,"compress");this.scope=(0,s.getStringOption)(e.scope,["imageOnly","document"])}}class CompressLogicalStructure extends i.Option01{constructor(e){super(c,"compressLogicalStructure")}}class CompressObjectStream extends i.Option10{constructor(e){super(c,"compressObjectStream")}}class Compression extends i.XFAObject{constructor(e){super(c,"compression",!0);this.compressLogicalStructure=null;this.compressObjectStream=null;this.level=null;this.type=null}}class Config extends i.XFAObject{constructor(e){super(c,"config",!0);this.acrobat=null;this.present=null;this.trace=null;this.agent=new i.XFAObjectArray}}class Conformance extends i.OptionObject{constructor(e){super(c,"conformance",["A","B"])}}class ContentCopy extends i.Option01{constructor(e){super(c,"contentCopy")}}class Copies extends i.IntegerObject{constructor(e){super(c,"copies",1,(e=>e>=1))}}class Creator extends i.StringObject{constructor(e){super(c,"creator")}}class CurrentPage extends i.IntegerObject{constructor(e){super(c,"currentPage",0,(e=>e>=0))}}class Data extends i.XFAObject{constructor(e){super(c,"data",!0);this.adjustData=null;this.attributes=null;this.incrementalLoad=null;this.outputXSL=null;this.range=null;this.record=null;this.startNode=null;this.uri=null;this.window=null;this.xsl=null;this.excludeNS=new i.XFAObjectArray;this.transform=new i.XFAObjectArray}}class Debug extends i.XFAObject{constructor(e){super(c,"debug",!0);this.uri=null}}class DefaultTypeface extends i.ContentObject{constructor(e){super(c,"defaultTypeface");this.writingScript=(0,s.getStringOption)(e.writingScript,["*","Arabic","Cyrillic","EastEuropeanRoman","Greek","Hebrew","Japanese","Korean","Roman","SimplifiedChinese","Thai","TraditionalChinese","Vietnamese"])}}class Destination extends i.OptionObject{constructor(e){super(c,"destination",["pdf","pcl","ps","webClient","zpl"])}}class DocumentAssembly extends i.Option01{constructor(e){super(c,"documentAssembly")}}class Driver extends i.XFAObject{constructor(e){super(c,"driver",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class DuplexOption extends i.OptionObject{constructor(e){super(c,"duplexOption",["simplex","duplexFlipLongEdge","duplexFlipShortEdge"])}}class DynamicRender extends i.OptionObject{constructor(e){super(c,"dynamicRender",["forbidden","required"])}}class Embed extends i.Option01{constructor(e){super(c,"embed")}}class Encrypt extends i.Option01{constructor(e){super(c,"encrypt")}}class Encryption extends i.XFAObject{constructor(e){super(c,"encryption",!0);this.encrypt=null;this.encryptionLevel=null;this.permissions=null}}class EncryptionLevel extends i.OptionObject{constructor(e){super(c,"encryptionLevel",["40bit","128bit"])}}class Enforce extends i.StringObject{constructor(e){super(c,"enforce")}}class Equate extends i.XFAObject{constructor(e){super(c,"equate");this.force=(0,s.getInteger)({data:e.force,defaultValue:1,validate:e=>0===e});this.from=e.from||"";this.to=e.to||""}}class EquateRange extends i.XFAObject{constructor(e){super(c,"equateRange");this.from=e.from||"";this.to=e.to||"";this._unicodeRange=e.unicodeRange||""}get unicodeRange(){const e=[],t=/U\+([0-9a-fA-F]+)/,a=this._unicodeRange;for(let r of a.split(",").map((e=>e.trim())).filter((e=>!!e))){r=r.split("-",2).map((e=>{const a=e.match(t);return a?parseInt(a[1],16):0}));1===r.length&&r.push(r[0]);e.push(r)}return(0,o.shadow)(this,"unicodeRange",e)}}class Exclude extends i.ContentObject{constructor(e){super(c,"exclude")}[n.$finalize](){this[n.$content]=this[n.$content].trim().split(/\s+/).filter((e=>e&&["calculate","close","enter","exit","initialize","ready","validate"].includes(e)))}}class ExcludeNS extends i.StringObject{constructor(e){super(c,"excludeNS")}}class FlipLabel extends i.OptionObject{constructor(e){super(c,"flipLabel",["usePrinterSetting","on","off"])}}class FontInfo extends i.XFAObject{constructor(e){super(c,"fontInfo",!0);this.embed=null;this.map=null;this.subsetBelow=null;this.alwaysEmbed=new i.XFAObjectArray;this.defaultTypeface=new i.XFAObjectArray;this.neverEmbed=new i.XFAObjectArray}}class FormFieldFilling extends i.Option01{constructor(e){super(c,"formFieldFilling")}}class GroupParent extends i.StringObject{constructor(e){super(c,"groupParent")}}class IfEmpty extends i.OptionObject{constructor(e){super(c,"ifEmpty",["dataValue","dataGroup","ignore","remove"])}}class IncludeXDPContent extends i.StringObject{constructor(e){super(c,"includeXDPContent")}}class IncrementalLoad extends i.OptionObject{constructor(e){super(c,"incrementalLoad",["none","forwardOnly"])}}class IncrementalMerge extends i.Option01{constructor(e){super(c,"incrementalMerge")}}class Interactive extends i.Option01{constructor(e){super(c,"interactive")}}class Jog extends i.OptionObject{constructor(e){super(c,"jog",["usePrinterSetting","none","pageSet"])}}class LabelPrinter extends i.XFAObject{constructor(e){super(c,"labelPrinter",!0);this.name=(0,s.getStringOption)(e.name,["zpl","dpl","ipl","tcpl"]);this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class Layout extends i.OptionObject{constructor(e){super(c,"layout",["paginate","panel"])}}class Level extends i.IntegerObject{constructor(e){super(c,"level",0,(e=>e>0))}}class Linearized extends i.Option01{constructor(e){super(c,"linearized")}}class Locale extends i.StringObject{constructor(e){super(c,"locale")}}class LocaleSet extends i.StringObject{constructor(e){super(c,"localeSet")}}class Log extends i.XFAObject{constructor(e){super(c,"log",!0);this.mode=null;this.threshold=null;this.to=null;this.uri=null}}class MapElement extends i.XFAObject{constructor(e){super(c,"map",!0);this.equate=new i.XFAObjectArray;this.equateRange=new i.XFAObjectArray}}class MediumInfo extends i.XFAObject{constructor(e){super(c,"mediumInfo",!0);this.map=null}}class Message extends i.XFAObject{constructor(e){super(c,"message",!0);this.msgId=null;this.severity=null}}class Messaging extends i.XFAObject{constructor(e){super(c,"messaging",!0);this.message=new i.XFAObjectArray}}class Mode extends i.OptionObject{constructor(e){super(c,"mode",["append","overwrite"])}}class ModifyAnnots extends i.Option01{constructor(e){super(c,"modifyAnnots")}}class MsgId extends i.IntegerObject{constructor(e){super(c,"msgId",1,(e=>e>=1))}}class NameAttr extends i.StringObject{constructor(e){super(c,"nameAttr")}}class NeverEmbed extends i.ContentObject{constructor(e){super(c,"neverEmbed")}}class NumberOfCopies extends i.IntegerObject{constructor(e){super(c,"numberOfCopies",null,(e=>e>=2&&e<=5))}}class OpenAction extends i.XFAObject{constructor(e){super(c,"openAction",!0);this.destination=null}}class Output extends i.XFAObject{constructor(e){super(c,"output",!0);this.to=null;this.type=null;this.uri=null}}class OutputBin extends i.StringObject{constructor(e){super(c,"outputBin")}}class OutputXSL extends i.XFAObject{constructor(e){super(c,"outputXSL",!0);this.uri=null}}class Overprint extends i.OptionObject{constructor(e){super(c,"overprint",["none","both","draw","field"])}}class Packets extends i.StringObject{constructor(e){super(c,"packets")}[n.$finalize](){"*"!==this[n.$content]&&(this[n.$content]=this[n.$content].trim().split(/\s+/).filter((e=>["config","datasets","template","xfdf","xslt"].includes(e))))}}class PageOffset extends i.XFAObject{constructor(e){super(c,"pageOffset");this.x=(0,s.getInteger)({data:e.x,defaultValue:"useXDCSetting",validate:e=>!0});this.y=(0,s.getInteger)({data:e.y,defaultValue:"useXDCSetting",validate:e=>!0})}}class PageRange extends i.StringObject{constructor(e){super(c,"pageRange")}[n.$finalize](){const e=this[n.$content].trim().split(/\s+/).map((e=>parseInt(e,10))),t=[];for(let a=0,r=e.length;a!1))}}class Pcl extends i.XFAObject{constructor(e){super(c,"pcl",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.pageOffset=null;this.staple=null;this.xdc=null}}class Pdf extends i.XFAObject{constructor(e){super(c,"pdf",!0);this.name=e.name||"";this.adobeExtensionLevel=null;this.batchOutput=null;this.compression=null;this.creator=null;this.encryption=null;this.fontInfo=null;this.interactive=null;this.linearized=null;this.openAction=null;this.pdfa=null;this.producer=null;this.renderPolicy=null;this.scriptModel=null;this.silentPrint=null;this.submitFormat=null;this.tagged=null;this.version=null;this.viewerPreferences=null;this.xdc=null}}class Pdfa extends i.XFAObject{constructor(e){super(c,"pdfa",!0);this.amd=null;this.conformance=null;this.includeXDPContent=null;this.part=null}}class Permissions extends i.XFAObject{constructor(e){super(c,"permissions",!0);this.accessibleContent=null;this.change=null;this.contentCopy=null;this.documentAssembly=null;this.formFieldFilling=null;this.modifyAnnots=null;this.plaintextMetadata=null;this.print=null;this.printHighQuality=null}}class PickTrayByPDFSize extends i.Option01{constructor(e){super(c,"pickTrayByPDFSize")}}class Picture extends i.StringObject{constructor(e){super(c,"picture")}}class PlaintextMetadata extends i.Option01{constructor(e){super(c,"plaintextMetadata")}}class Presence extends i.OptionObject{constructor(e){super(c,"presence",["preserve","dissolve","dissolveStructure","ignore","remove"])}}class Present extends i.XFAObject{constructor(e){super(c,"present",!0);this.behaviorOverride=null;this.cache=null;this.common=null;this.copies=null;this.destination=null;this.incrementalMerge=null;this.layout=null;this.output=null;this.overprint=null;this.pagination=null;this.paginationOverride=null;this.script=null;this.validate=null;this.xdp=null;this.driver=new i.XFAObjectArray;this.labelPrinter=new i.XFAObjectArray;this.pcl=new i.XFAObjectArray;this.pdf=new i.XFAObjectArray;this.ps=new i.XFAObjectArray;this.submitUrl=new i.XFAObjectArray;this.webClient=new i.XFAObjectArray;this.zpl=new i.XFAObjectArray}}class Print extends i.Option01{constructor(e){super(c,"print")}}class PrintHighQuality extends i.Option01{constructor(e){super(c,"printHighQuality")}}class PrintScaling extends i.OptionObject{constructor(e){super(c,"printScaling",["appdefault","noScaling"])}}class PrinterName extends i.StringObject{constructor(e){super(c,"printerName")}}class Producer extends i.StringObject{constructor(e){super(c,"producer")}}class Ps extends i.XFAObject{constructor(e){super(c,"ps",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.staple=null;this.xdc=null}}class Range extends i.ContentObject{constructor(e){super(c,"range")}[n.$finalize](){this[n.$content]=this[n.$content].trim().split(/\s*,\s*/,2).map((e=>e.split("-").map((e=>parseInt(e.trim(),10))))).filter((e=>e.every((e=>!isNaN(e))))).map((e=>{1===e.length&&e.push(e[0]);return e}))}}class Record extends i.ContentObject{constructor(e){super(c,"record")}[n.$finalize](){this[n.$content]=this[n.$content].trim();const e=parseInt(this[n.$content],10);!isNaN(e)&&e>=0&&(this[n.$content]=e)}}class Relevant extends i.ContentObject{constructor(e){super(c,"relevant")}[n.$finalize](){this[n.$content]=this[n.$content].trim().split(/\s+/)}}class Rename extends i.ContentObject{constructor(e){super(c,"rename")}[n.$finalize](){this[n.$content]=this[n.$content].trim();(this[n.$content].toLowerCase().startsWith("xml")||new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*","u").test(this[n.$content]))&&(0,o.warn)("XFA - Rename: invalid XFA name")}}class RenderPolicy extends i.OptionObject{constructor(e){super(c,"renderPolicy",["server","client"])}}class RunScripts extends i.OptionObject{constructor(e){super(c,"runScripts",["both","client","none","server"])}}class Script extends i.XFAObject{constructor(e){super(c,"script",!0);this.currentPage=null;this.exclude=null;this.runScripts=null}}class ScriptModel extends i.OptionObject{constructor(e){super(c,"scriptModel",["XFA","none"])}}class Severity extends i.OptionObject{constructor(e){super(c,"severity",["ignore","error","information","trace","warning"])}}class SilentPrint extends i.XFAObject{constructor(e){super(c,"silentPrint",!0);this.addSilentPrint=null;this.printerName=null}}class Staple extends i.XFAObject{constructor(e){super(c,"staple");this.mode=(0,s.getStringOption)(e.mode,["usePrinterSetting","on","off"])}}class StartNode extends i.StringObject{constructor(e){super(c,"startNode")}}class StartPage extends i.IntegerObject{constructor(e){super(c,"startPage",0,(e=>!0))}}class SubmitFormat extends i.OptionObject{constructor(e){super(c,"submitFormat",["html","delegate","fdf","xml","pdf"])}}class SubmitUrl extends i.StringObject{constructor(e){super(c,"submitUrl")}}class SubsetBelow extends i.IntegerObject{constructor(e){super(c,"subsetBelow",100,(e=>e>=0&&e<=100))}}class SuppressBanner extends i.Option01{constructor(e){super(c,"suppressBanner")}}class Tagged extends i.Option01{constructor(e){super(c,"tagged")}}class Template extends i.XFAObject{constructor(e){super(c,"template",!0);this.base=null;this.relevant=null;this.startPage=null;this.uri=null;this.xsl=null}}class Threshold extends i.OptionObject{constructor(e){super(c,"threshold",["trace","error","information","warning"])}}class To extends i.OptionObject{constructor(e){super(c,"to",["null","memory","stderr","stdout","system","uri"])}}class TemplateCache extends i.XFAObject{constructor(e){super(c,"templateCache");this.maxEntries=(0,s.getInteger)({data:e.maxEntries,defaultValue:5,validate:e=>e>=0})}}class Trace extends i.XFAObject{constructor(e){super(c,"trace",!0);this.area=new i.XFAObjectArray}}class Transform extends i.XFAObject{constructor(e){super(c,"transform",!0);this.groupParent=null;this.ifEmpty=null;this.nameAttr=null;this.picture=null;this.presence=null;this.rename=null;this.whitespace=null}}class Type extends i.OptionObject{constructor(e){super(c,"type",["none","ascii85","asciiHex","ccittfax","flate","lzw","runLength","native","xdp","mergedXDP"])}}class Uri extends i.StringObject{constructor(e){super(c,"uri")}}class Validate extends i.OptionObject{constructor(e){super(c,"validate",["preSubmit","prePrint","preExecute","preSave"])}}class ValidateApprovalSignatures extends i.ContentObject{constructor(e){super(c,"validateApprovalSignatures")}[n.$finalize](){this[n.$content]=this[n.$content].trim().split(/\s+/).filter((e=>["docReady","postSign"].includes(e)))}}class ValidationMessaging extends i.OptionObject{constructor(e){super(c,"validationMessaging",["allMessagesIndividually","allMessagesTogether","firstMessageOnly","noMessages"])}}class Version extends i.OptionObject{constructor(e){super(c,"version",["1.7","1.6","1.5","1.4","1.3","1.2"])}}class VersionControl extends i.XFAObject{constructor(e){super(c,"VersionControl");this.outputBelow=(0,s.getStringOption)(e.outputBelow,["warn","error","update"]);this.sourceAbove=(0,s.getStringOption)(e.sourceAbove,["warn","error"]);this.sourceBelow=(0,s.getStringOption)(e.sourceBelow,["update","maintain"])}}class ViewerPreferences extends i.XFAObject{constructor(e){super(c,"viewerPreferences",!0);this.ADBE_JSConsole=null;this.ADBE_JSDebugger=null;this.addViewerPreferences=null;this.duplexOption=null;this.enforce=null;this.numberOfCopies=null;this.pageRange=null;this.pickTrayByPDFSize=null;this.printScaling=null}}class WebClient extends i.XFAObject{constructor(e){super(c,"webClient",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class Whitespace extends i.OptionObject{constructor(e){super(c,"whitespace",["preserve","ltrim","normalize","rtrim","trim"])}}class Window extends i.ContentObject{constructor(e){super(c,"window")}[n.$finalize](){const e=this[n.$content].trim().split(/\s*,\s*/,2).map((e=>parseInt(e,10)));if(e.some((e=>isNaN(e))))this[n.$content]=[0,0];else{1===e.length&&e.push(e[0]);this[n.$content]=e}}}class Xdc extends i.XFAObject{constructor(e){super(c,"xdc",!0);this.uri=new i.XFAObjectArray;this.xsl=new i.XFAObjectArray}}class Xdp extends i.XFAObject{constructor(e){super(c,"xdp",!0);this.packets=null}}class Xsl extends i.XFAObject{constructor(e){super(c,"xsl",!0);this.debug=null;this.uri=null}}class Zpl extends i.XFAObject{constructor(e){super(c,"zpl",!0);this.name=e.name?e.name.trim():"";this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class ConfigNamespace{static[r.$buildXFAObject](e,t){if(ConfigNamespace.hasOwnProperty(e))return ConfigNamespace[e](t)}static acrobat(e){return new Acrobat(e)}static acrobat7(e){return new Acrobat7(e)}static ADBE_JSConsole(e){return new ADBE_JSConsole(e)}static ADBE_JSDebugger(e){return new ADBE_JSDebugger(e)}static addSilentPrint(e){return new AddSilentPrint(e)}static addViewerPreferences(e){return new AddViewerPreferences(e)}static adjustData(e){return new AdjustData(e)}static adobeExtensionLevel(e){return new AdobeExtensionLevel(e)}static agent(e){return new Agent(e)}static alwaysEmbed(e){return new AlwaysEmbed(e)}static amd(e){return new Amd(e)}static area(e){return new Area(e)}static attributes(e){return new Attributes(e)}static autoSave(e){return new AutoSave(e)}static base(e){return new Base(e)}static batchOutput(e){return new BatchOutput(e)}static behaviorOverride(e){return new BehaviorOverride(e)}static cache(e){return new Cache(e)}static change(e){return new Change(e)}static common(e){return new Common(e)}static compress(e){return new Compress(e)}static compressLogicalStructure(e){return new CompressLogicalStructure(e)}static compressObjectStream(e){return new CompressObjectStream(e)}static compression(e){return new Compression(e)}static config(e){return new Config(e)}static conformance(e){return new Conformance(e)}static contentCopy(e){return new ContentCopy(e)}static copies(e){return new Copies(e)}static creator(e){return new Creator(e)}static currentPage(e){return new CurrentPage(e)}static data(e){return new Data(e)}static debug(e){return new Debug(e)}static defaultTypeface(e){return new DefaultTypeface(e)}static destination(e){return new Destination(e)}static documentAssembly(e){return new DocumentAssembly(e)}static driver(e){return new Driver(e)}static duplexOption(e){return new DuplexOption(e)}static dynamicRender(e){return new DynamicRender(e)}static embed(e){return new Embed(e)}static encrypt(e){return new Encrypt(e)}static encryption(e){return new Encryption(e)}static encryptionLevel(e){return new EncryptionLevel(e)}static enforce(e){return new Enforce(e)}static equate(e){return new Equate(e)}static equateRange(e){return new EquateRange(e)}static exclude(e){return new Exclude(e)}static excludeNS(e){return new ExcludeNS(e)}static flipLabel(e){return new FlipLabel(e)}static fontInfo(e){return new FontInfo(e)}static formFieldFilling(e){return new FormFieldFilling(e)}static groupParent(e){return new GroupParent(e)}static ifEmpty(e){return new IfEmpty(e)}static includeXDPContent(e){return new IncludeXDPContent(e)}static incrementalLoad(e){return new IncrementalLoad(e)}static incrementalMerge(e){return new IncrementalMerge(e)}static interactive(e){return new Interactive(e)}static jog(e){return new Jog(e)}static labelPrinter(e){return new LabelPrinter(e)}static layout(e){return new Layout(e)}static level(e){return new Level(e)}static linearized(e){return new Linearized(e)}static locale(e){return new Locale(e)}static localeSet(e){return new LocaleSet(e)}static log(e){return new Log(e)}static map(e){return new MapElement(e)}static mediumInfo(e){return new MediumInfo(e)}static message(e){return new Message(e)}static messaging(e){return new Messaging(e)}static mode(e){return new Mode(e)}static modifyAnnots(e){return new ModifyAnnots(e)}static msgId(e){return new MsgId(e)}static nameAttr(e){return new NameAttr(e)}static neverEmbed(e){return new NeverEmbed(e)}static numberOfCopies(e){return new NumberOfCopies(e)}static openAction(e){return new OpenAction(e)}static output(e){return new Output(e)}static outputBin(e){return new OutputBin(e)}static outputXSL(e){return new OutputXSL(e)}static overprint(e){return new Overprint(e)}static packets(e){return new Packets(e)}static pageOffset(e){return new PageOffset(e)}static pageRange(e){return new PageRange(e)}static pagination(e){return new Pagination(e)}static paginationOverride(e){return new PaginationOverride(e)}static part(e){return new Part(e)}static pcl(e){return new Pcl(e)}static pdf(e){return new Pdf(e)}static pdfa(e){return new Pdfa(e)}static permissions(e){return new Permissions(e)}static pickTrayByPDFSize(e){return new PickTrayByPDFSize(e)}static picture(e){return new Picture(e)}static plaintextMetadata(e){return new PlaintextMetadata(e)}static presence(e){return new Presence(e)}static present(e){return new Present(e)}static print(e){return new Print(e)}static printHighQuality(e){return new PrintHighQuality(e)}static printScaling(e){return new PrintScaling(e)}static printerName(e){return new PrinterName(e)}static producer(e){return new Producer(e)}static ps(e){return new Ps(e)}static range(e){return new Range(e)}static record(e){return new Record(e)}static relevant(e){return new Relevant(e)}static rename(e){return new Rename(e)}static renderPolicy(e){return new RenderPolicy(e)}static runScripts(e){return new RunScripts(e)}static script(e){return new Script(e)}static scriptModel(e){return new ScriptModel(e)}static severity(e){return new Severity(e)}static silentPrint(e){return new SilentPrint(e)}static staple(e){return new Staple(e)}static startNode(e){return new StartNode(e)}static startPage(e){return new StartPage(e)}static submitFormat(e){return new SubmitFormat(e)}static submitUrl(e){return new SubmitUrl(e)}static subsetBelow(e){return new SubsetBelow(e)}static suppressBanner(e){return new SuppressBanner(e)}static tagged(e){return new Tagged(e)}static template(e){return new Template(e)}static templateCache(e){return new TemplateCache(e)}static threshold(e){return new Threshold(e)}static to(e){return new To(e)}static trace(e){return new Trace(e)}static transform(e){return new Transform(e)}static type(e){return new Type(e)}static uri(e){return new Uri(e)}static validate(e){return new Validate(e)}static validateApprovalSignatures(e){return new ValidateApprovalSignatures(e)}static validationMessaging(e){return new ValidationMessaging(e)}static version(e){return new Version(e)}static versionControl(e){return new VersionControl(e)}static viewerPreferences(e){return new ViewerPreferences(e)}static webClient(e){return new WebClient(e)}static whitespace(e){return new Whitespace(e)}static window(e){return new Window(e)}static xdc(e){return new Xdc(e)}static xdp(e){return new Xdp(e)}static xsl(e){return new Xsl(e)}static zpl(e){return new Zpl(e)}}t.ConfigNamespace=ConfigNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ConnectionSetNamespace=void 0;var r=a(81),n=a(87);const i=r.NamespaceIds.connectionSet.id;class ConnectionSet extends n.XFAObject{constructor(e){super(i,"connectionSet",!0);this.wsdlConnection=new n.XFAObjectArray;this.xmlConnection=new n.XFAObjectArray;this.xsdConnection=new n.XFAObjectArray}}class EffectiveInputPolicy extends n.XFAObject{constructor(e){super(i,"effectiveInputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EffectiveOutputPolicy extends n.XFAObject{constructor(e){super(i,"effectiveOutputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Operation extends n.StringObject{constructor(e){super(i,"operation");this.id=e.id||"";this.input=e.input||"";this.name=e.name||"";this.output=e.output||"";this.use=e.use||"";this.usehref=e.usehref||""}}class RootElement extends n.StringObject{constructor(e){super(i,"rootElement");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAction extends n.StringObject{constructor(e){super(i,"soapAction");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAddress extends n.StringObject{constructor(e){super(i,"soapAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Uri extends n.StringObject{constructor(e){super(i,"uri");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlAddress extends n.StringObject{constructor(e){super(i,"wsdlAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlConnection extends n.XFAObject{constructor(e){super(i,"wsdlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.effectiveInputPolicy=null;this.effectiveOutputPolicy=null;this.operation=null;this.soapAction=null;this.soapAddress=null;this.wsdlAddress=null}}class XmlConnection extends n.XFAObject{constructor(e){super(i,"xmlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.uri=null}}class XsdConnection extends n.XFAObject{constructor(e){super(i,"xsdConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.rootElement=null;this.uri=null}}class ConnectionSetNamespace{static[r.$buildXFAObject](e,t){if(ConnectionSetNamespace.hasOwnProperty(e))return ConnectionSetNamespace[e](t)}static connectionSet(e){return new ConnectionSet(e)}static effectiveInputPolicy(e){return new EffectiveInputPolicy(e)}static effectiveOutputPolicy(e){return new EffectiveOutputPolicy(e)}static operation(e){return new Operation(e)}static rootElement(e){return new RootElement(e)}static soapAction(e){return new SoapAction(e)}static soapAddress(e){return new SoapAddress(e)}static uri(e){return new Uri(e)}static wsdlAddress(e){return new WsdlAddress(e)}static wsdlConnection(e){return new WsdlConnection(e)}static xmlConnection(e){return new XmlConnection(e)}static xsdConnection(e){return new XsdConnection(e)}}t.ConnectionSetNamespace=ConnectionSetNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.DatasetsNamespace=void 0;var r=a(78),n=a(81),i=a(87);const s=n.NamespaceIds.datasets.id;class Data extends i.XmlObject{constructor(e){super(s,"data",e)}[r.$isNsAgnostic](){return!0}}class Datasets extends i.XFAObject{constructor(e){super(s,"datasets",!0);this.data=null;this.Signature=null}[r.$onChild](e){const t=e[r.$nodeName];("data"===t&&e[r.$namespaceId]===s||"Signature"===t&&e[r.$namespaceId]===n.NamespaceIds.signature.id)&&(this[t]=e);this[r.$appendChild](e)}}class DatasetsNamespace{static[n.$buildXFAObject](e,t){if(DatasetsNamespace.hasOwnProperty(e))return DatasetsNamespace[e](t)}static datasets(e){return new Datasets(e)}static data(e){return new Data(e)}}t.DatasetsNamespace=DatasetsNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.LocaleSetNamespace=void 0;var r=a(81),n=a(87),i=a(84);const s=r.NamespaceIds.localeSet.id;class CalendarSymbols extends n.XFAObject{constructor(e){super(s,"calendarSymbols",!0);this.name="gregorian";this.dayNames=new n.XFAObjectArray(2);this.eraNames=null;this.meridiemNames=null;this.monthNames=new n.XFAObjectArray(2)}}class CurrencySymbol extends n.StringObject{constructor(e){super(s,"currencySymbol");this.name=(0,i.getStringOption)(e.name,["symbol","isoname","decimal"])}}class CurrencySymbols extends n.XFAObject{constructor(e){super(s,"currencySymbols",!0);this.currencySymbol=new n.XFAObjectArray(3)}}class DatePattern extends n.StringObject{constructor(e){super(s,"datePattern");this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class DatePatterns extends n.XFAObject{constructor(e){super(s,"datePatterns",!0);this.datePattern=new n.XFAObjectArray(4)}}class DateTimeSymbols extends n.ContentObject{constructor(e){super(s,"dateTimeSymbols")}}class Day extends n.StringObject{constructor(e){super(s,"day")}}class DayNames extends n.XFAObject{constructor(e){super(s,"dayNames",!0);this.abbr=(0,i.getInteger)({data:e.abbr,defaultValue:0,validate:e=>1===e});this.day=new n.XFAObjectArray(7)}}class Era extends n.StringObject{constructor(e){super(s,"era")}}class EraNames extends n.XFAObject{constructor(e){super(s,"eraNames",!0);this.era=new n.XFAObjectArray(2)}}class Locale extends n.XFAObject{constructor(e){super(s,"locale",!0);this.desc=e.desc||"";this.name="isoname";this.calendarSymbols=null;this.currencySymbols=null;this.datePatterns=null;this.dateTimeSymbols=null;this.numberPatterns=null;this.numberSymbols=null;this.timePatterns=null;this.typeFaces=null}}class LocaleSet extends n.XFAObject{constructor(e){super(s,"localeSet",!0);this.locale=new n.XFAObjectArray}}class Meridiem extends n.StringObject{constructor(e){super(s,"meridiem")}}class MeridiemNames extends n.XFAObject{constructor(e){super(s,"meridiemNames",!0);this.meridiem=new n.XFAObjectArray(2)}}class Month extends n.StringObject{constructor(e){super(s,"month")}}class MonthNames extends n.XFAObject{constructor(e){super(s,"monthNames",!0);this.abbr=(0,i.getInteger)({data:e.abbr,defaultValue:0,validate:e=>1===e});this.month=new n.XFAObjectArray(12)}}class NumberPattern extends n.StringObject{constructor(e){super(s,"numberPattern");this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class NumberPatterns extends n.XFAObject{constructor(e){super(s,"numberPatterns",!0);this.numberPattern=new n.XFAObjectArray(4)}}class NumberSymbol extends n.StringObject{constructor(e){super(s,"numberSymbol");this.name=(0,i.getStringOption)(e.name,["decimal","grouping","percent","minus","zero"])}}class NumberSymbols extends n.XFAObject{constructor(e){super(s,"numberSymbols",!0);this.numberSymbol=new n.XFAObjectArray(5)}}class TimePattern extends n.StringObject{constructor(e){super(s,"timePattern");this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class TimePatterns extends n.XFAObject{constructor(e){super(s,"timePatterns",!0);this.timePattern=new n.XFAObjectArray(4)}}class TypeFace extends n.XFAObject{constructor(e){super(s,"typeFace",!0);this.name=""|e.name}}class TypeFaces extends n.XFAObject{constructor(e){super(s,"typeFaces",!0);this.typeFace=new n.XFAObjectArray}}class LocaleSetNamespace{static[r.$buildXFAObject](e,t){if(LocaleSetNamespace.hasOwnProperty(e))return LocaleSetNamespace[e](t)}static calendarSymbols(e){return new CalendarSymbols(e)}static currencySymbol(e){return new CurrencySymbol(e)}static currencySymbols(e){return new CurrencySymbols(e)}static datePattern(e){return new DatePattern(e)}static datePatterns(e){return new DatePatterns(e)}static dateTimeSymbols(e){return new DateTimeSymbols(e)}static day(e){return new Day(e)}static dayNames(e){return new DayNames(e)}static era(e){return new Era(e)}static eraNames(e){return new EraNames(e)}static locale(e){return new Locale(e)}static localeSet(e){return new LocaleSet(e)}static meridiem(e){return new Meridiem(e)}static meridiemNames(e){return new MeridiemNames(e)}static month(e){return new Month(e)}static monthNames(e){return new MonthNames(e)}static numberPattern(e){return new NumberPattern(e)}static numberPatterns(e){return new NumberPatterns(e)}static numberSymbol(e){return new NumberSymbol(e)}static numberSymbols(e){return new NumberSymbols(e)}static timePattern(e){return new TimePattern(e)}static timePatterns(e){return new TimePatterns(e)}static typeFace(e){return new TypeFace(e)}static typeFaces(e){return new TypeFaces(e)}}t.LocaleSetNamespace=LocaleSetNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.SignatureNamespace=void 0;var r=a(81),n=a(87);const i=r.NamespaceIds.signature.id;class Signature extends n.XFAObject{constructor(e){super(i,"signature",!0)}}class SignatureNamespace{static[r.$buildXFAObject](e,t){if(SignatureNamespace.hasOwnProperty(e))return SignatureNamespace[e](t)}static signature(e){return new Signature(e)}}t.SignatureNamespace=SignatureNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.StylesheetNamespace=void 0;var r=a(81),n=a(87);const i=r.NamespaceIds.stylesheet.id;class Stylesheet extends n.XFAObject{constructor(e){super(i,"stylesheet",!0)}}class StylesheetNamespace{static[r.$buildXFAObject](e,t){if(StylesheetNamespace.hasOwnProperty(e))return StylesheetNamespace[e](t)}static stylesheet(e){return new Stylesheet(e)}}t.StylesheetNamespace=StylesheetNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XdpNamespace=void 0;var r=a(81),n=a(78),i=a(87);const s=r.NamespaceIds.xdp.id;class Xdp extends i.XFAObject{constructor(e){super(s,"xdp",!0);this.uuid=e.uuid||"";this.timeStamp=e.timeStamp||"";this.config=null;this.connectionSet=null;this.datasets=null;this.localeSet=null;this.stylesheet=new i.XFAObjectArray;this.template=null}[n.$onChildCheck](e){const t=r.NamespaceIds[e[n.$nodeName]];return t&&e[n.$namespaceId]===t.id}}class XdpNamespace{static[r.$buildXFAObject](e,t){if(XdpNamespace.hasOwnProperty(e))return XdpNamespace[e](t)}static xdp(e){return new Xdp(e)}}t.XdpNamespace=XdpNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XhtmlNamespace=void 0;var r=a(78),n=a(81),i=a(83),s=a(84),o=a(87);const c=n.NamespaceIds.xhtml.id,l=Symbol(),h=new Set(["color","font","font-family","font-size","font-stretch","font-style","font-weight","margin","margin-bottom","margin-left","margin-right","margin-top","letter-spacing","line-height","orphans","page-break-after","page-break-before","page-break-inside","tab-interval","tab-stop","text-align","text-decoration","text-indent","vertical-align","widows","kerning-mode","xfa-font-horizontal-scale","xfa-font-vertical-scale","xfa-spacerun","xfa-tab-stops"]),u=new Map([["page-break-after","breakAfter"],["page-break-before","breakBefore"],["page-break-inside","breakInside"],["kerning-mode",e=>"none"===e?"none":"normal"],["xfa-font-horizontal-scale",e=>`scaleX(${Math.max(0,Math.min(parseInt(e)/100)).toFixed(2)})`],["xfa-font-vertical-scale",e=>`scaleY(${Math.max(0,Math.min(parseInt(e)/100)).toFixed(2)})`],["xfa-spacerun",""],["xfa-tab-stops",""],["font-size",(e,t)=>{e=t.fontSize=(0,s.getMeasurement)(e);return(0,i.measureToString)(.99*e)}],["letter-spacing",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["line-height",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-bottom",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-left",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-right",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-top",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["text-indent",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["font-family",e=>e],["vertical-align",e=>(0,i.measureToString)((0,s.getMeasurement)(e))]]),d=/\s+/g,f=/[\r\n]+/g,g=/\r\n?/g;function mapStyle(e,t,a){const n=Object.create(null);if(!e)return n;const o=Object.create(null);for(const[t,a]of e.split(";").map((e=>e.split(":",2)))){const e=u.get(t);if(""===e)continue;let r=a;e&&(r="string"==typeof e?e:e(a,o));t.endsWith("scale")?n.transform=n.transform?`${n[t]} ${r}`:r:n[t.replaceAll(/-([a-zA-Z])/g,((e,t)=>t.toUpperCase()))]=r}n.fontFamily&&(0,i.setFontFamily)({typeface:n.fontFamily,weight:n.fontWeight||"normal",posture:n.fontStyle||"normal",size:o.fontSize||0},t,t[r.$globalData].fontFinder,n);if(a&&n.verticalAlign&&"0px"!==n.verticalAlign&&n.fontSize){const e=.583,t=.333,a=(0,s.getMeasurement)(n.fontSize);n.fontSize=(0,i.measureToString)(a*e);n.verticalAlign=(0,i.measureToString)(Math.sign((0,s.getMeasurement)(n.verticalAlign))*a*t)}a&&n.fontSize&&(n.fontSize=`calc(${n.fontSize} * var(--scale-factor))`);(0,i.fixTextIndent)(n);return n}const p=new Set(["body","html"]);class XhtmlObject extends o.XmlObject{constructor(e,t){super(c,t);this[l]=!1;this.style=e.style||""}[r.$clean](e){super[r.$clean](e);this.style=function checkStyle(e){return e.style?e.style.trim().split(/\s*;\s*/).filter((e=>!!e)).map((e=>e.split(/\s*:\s*/,2))).filter((([t,a])=>{"font-family"===t&&e[r.$globalData].usedTypefaces.add(a);return h.has(t)})).map((e=>e.join(":"))).join(";"):""}(this)}[r.$acceptWhitespace](){return!p.has(this[r.$nodeName])}[r.$onText](e,t=!1){if(t)this[l]=!0;else{e=e.replaceAll(f,"");this.style.includes("xfa-spacerun:yes")||(e=e.replaceAll(d," "))}e&&(this[r.$content]+=e)}[r.$pushGlyphs](e,t=!0){const a=Object.create(null),n={top:NaN,bottom:NaN,left:NaN,right:NaN};let i=null;for(const[e,t]of this.style.split(";").map((e=>e.split(":",2))))switch(e){case"font-family":a.typeface=(0,s.stripQuotes)(t);break;case"font-size":a.size=(0,s.getMeasurement)(t);break;case"font-weight":a.weight=t;break;case"font-style":a.posture=t;break;case"letter-spacing":a.letterSpacing=(0,s.getMeasurement)(t);break;case"margin":const e=t.split(/ \t/).map((e=>(0,s.getMeasurement)(e)));switch(e.length){case 1:n.top=n.bottom=n.left=n.right=e[0];break;case 2:n.top=n.bottom=e[0];n.left=n.right=e[1];break;case 3:n.top=e[0];n.bottom=e[2];n.left=n.right=e[1];break;case 4:n.top=e[0];n.left=e[1];n.bottom=e[2];n.right=e[3]}break;case"margin-top":n.top=(0,s.getMeasurement)(t);break;case"margin-bottom":n.bottom=(0,s.getMeasurement)(t);break;case"margin-left":n.left=(0,s.getMeasurement)(t);break;case"margin-right":n.right=(0,s.getMeasurement)(t);break;case"line-height":i=(0,s.getMeasurement)(t)}e.pushData(a,n,i);if(this[r.$content])e.addString(this[r.$content]);else for(const t of this[r.$getChildren]())"#text"!==t[r.$nodeName]?t[r.$pushGlyphs](e):e.addString(t[r.$content]);t&&e.popFont()}[r.$toHTML](e){const t=[];this[r.$extra]={children:t};this[r.$childrenToHTML]({});if(0===t.length&&!this[r.$content])return s.HTMLResult.EMPTY;let a;a=this[l]?this[r.$content]?this[r.$content].replaceAll(g,"\n"):void 0:this[r.$content]||void 0;return s.HTMLResult.success({name:this[r.$nodeName],attributes:{href:this.href,style:mapStyle(this.style,this,this[l])},children:t,value:a})}}class A extends XhtmlObject{constructor(e){super(e,"a");this.href=(0,i.fixURL)(e.href)||""}}class B extends XhtmlObject{constructor(e){super(e,"b")}[r.$pushGlyphs](e){e.pushFont({weight:"bold"});super[r.$pushGlyphs](e);e.popFont()}}class Body extends XhtmlObject{constructor(e){super(e,"body")}[r.$toHTML](e){const t=super[r.$toHTML](e),{html:a}=t;if(!a)return s.HTMLResult.EMPTY;a.name="div";a.attributes.class=["xfaRich"];return t}}class Br extends XhtmlObject{constructor(e){super(e,"br")}[r.$text](){return"\n"}[r.$pushGlyphs](e){e.addString("\n")}[r.$toHTML](e){return s.HTMLResult.success({name:"br"})}}class Html extends XhtmlObject{constructor(e){super(e,"html")}[r.$toHTML](e){const t=[];this[r.$extra]={children:t};this[r.$childrenToHTML]({});if(0===t.length)return s.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},value:this[r.$content]||""});if(1===t.length){const e=t[0];if(e.attributes?.class.includes("xfaRich"))return s.HTMLResult.success(e)}return s.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},children:t})}}class I extends XhtmlObject{constructor(e){super(e,"i")}[r.$pushGlyphs](e){e.pushFont({posture:"italic"});super[r.$pushGlyphs](e);e.popFont()}}class Li extends XhtmlObject{constructor(e){super(e,"li")}}class Ol extends XhtmlObject{constructor(e){super(e,"ol")}}class P extends XhtmlObject{constructor(e){super(e,"p")}[r.$pushGlyphs](e){super[r.$pushGlyphs](e,!1);e.addString("\n");e.addPara();e.popFont()}[r.$text](){return this[r.$getParent]()[r.$getChildren]().at(-1)===this?super[r.$text]():super[r.$text]()+"\n"}}class Span extends XhtmlObject{constructor(e){super(e,"span")}}class Sub extends XhtmlObject{constructor(e){super(e,"sub")}}class Sup extends XhtmlObject{constructor(e){super(e,"sup")}}class Ul extends XhtmlObject{constructor(e){super(e,"ul")}}class XhtmlNamespace{static[n.$buildXFAObject](e,t){if(XhtmlNamespace.hasOwnProperty(e))return XhtmlNamespace[e](t)}static a(e){return new A(e)}static b(e){return new B(e)}static body(e){return new Body(e)}static br(e){return new Br(e)}static html(e){return new Html(e)}static i(e){return new I(e)}static li(e){return new Li(e)}static ol(e){return new Ol(e)}static p(e){return new P(e)}static span(e){return new Span(e)}static sub(e){return new Sub(e)}static sup(e){return new Sup(e)}static ul(e){return new Ul(e)}}t.XhtmlNamespace=XhtmlNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.UnknownNamespace=void 0;var r=a(81),n=a(87);class UnknownNamespace{constructor(e){this.namespaceId=e}[r.$buildXFAObject](e,t){return new n.XmlObject(this.namespaceId,e,t)}}t.UnknownNamespace=UnknownNamespace},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.DatasetReader=void 0;var r=a(2),n=a(3),i=a(71);function decodeString(e){try{return(0,r.stringToUTF8String)(e)}catch(t){(0,r.warn)(`UTF-8 decoding failed: "${t}".`);return e}}class DatasetXMLParser extends i.SimpleXMLParser{constructor(e){super(e);this.node=null}onEndElement(e){const t=super.onEndElement(e);if(t&&"xfa:datasets"===e){this.node=t;throw new Error("Aborting DatasetXMLParser.")}}}t.DatasetReader=class DatasetReader{constructor(e){if(e.datasets)this.node=new i.SimpleXMLParser({hasAttributes:!0}).parseFromString(e.datasets).documentElement;else{const t=new DatasetXMLParser({hasAttributes:!0});try{t.parseFromString(e["xdp:xdp"])}catch{}this.node=t.node}}getValue(e){if(!this.node||!e)return"";const t=this.node.searchNode((0,n.parseXFAPath)(e),0);if(!t)return"";const a=t.firstChild;return"value"===a?.nodeName?t.children.map((e=>decodeString(e.textContent))):decodeString(t.textContent)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XRef=void 0;var r=a(2),n=a(4),i=a(16),s=a(3),o=a(5),c=a(74);t.XRef=class XRef{#B=null;constructor(e,t){this.stream=e;this.pdfManager=t;this.entries=[];this._xrefStms=new Set;this._cacheMap=new Map;this._pendingRefs=new n.RefSet;this._newPersistentRefNum=null;this._newTemporaryRefNum=null}getNewPersistentRef(e){null===this._newPersistentRefNum&&(this._newPersistentRefNum=this.entries.length||1);const t=this._newPersistentRefNum++;this._cacheMap.set(t,e);return n.Ref.get(t,0)}getNewTemporaryRef(){null===this._newTemporaryRefNum&&(this._newTemporaryRefNum=this.entries.length||1);return n.Ref.get(this._newTemporaryRefNum++,0)}resetNewTemporaryRef(){this._newTemporaryRefNum=null}setStartXRef(e){this.startXRefQueue=[e]}parse(e=!1){let t,a,i;if(e){(0,r.warn)("Indexing all PDF objects");t=this.indexObjects()}else t=this.readXRef();t.assignXref(this);this.trailer=t;try{a=t.get("Encrypt")}catch(e){if(e instanceof s.MissingDataException)throw e;(0,r.warn)(`XRef.parse - Invalid "Encrypt" reference: "${e}".`)}if(a instanceof n.Dict){const e=t.get("ID"),r=e?.length?e[0]:"";a.suppressEncryption=!0;this.encrypt=new c.CipherTransformFactory(a,r,this.pdfManager.password)}try{i=t.get("Root")}catch(e){if(e instanceof s.MissingDataException)throw e;(0,r.warn)(`XRef.parse - Invalid "Root" reference: "${e}".`)}if(i instanceof n.Dict)try{if(i.get("Pages")instanceof n.Dict){this.root=i;return}}catch(e){if(e instanceof s.MissingDataException)throw e;(0,r.warn)(`XRef.parse - Invalid "Pages" reference: "${e}".`)}if(!e)throw new s.XRefParseException;throw new r.InvalidPDFException("Invalid Root reference.")}processXRefTable(e){"tableState"in this||(this.tableState={entryNum:0,streamPos:e.lexer.stream.pos,parserBuf1:e.buf1,parserBuf2:e.buf2});const t=this.readXRefTable(e);if(!(0,n.isCmd)(t,"trailer"))throw new r.FormatError("Invalid XRef table: could not find trailer dictionary");let a=e.getObj();a instanceof n.Dict||!a.dict||(a=a.dict);if(!(a instanceof n.Dict))throw new r.FormatError("Invalid XRef table: could not parse trailer dictionary");delete this.tableState;return a}readXRefTable(e){const t=e.lexer.stream,a=this.tableState;t.pos=a.streamPos;e.buf1=a.parserBuf1;e.buf2=a.parserBuf2;let i;for(;;){if(!("firstEntryNum"in a)||!("entryCount"in a)){if((0,n.isCmd)(i=e.getObj(),"trailer"))break;a.firstEntryNum=i;a.entryCount=e.getObj()}let s=a.firstEntryNum;const o=a.entryCount;if(!Number.isInteger(s)||!Number.isInteger(o))throw new r.FormatError("Invalid XRef table: wrong types in subsection header");for(let i=a.entryNum;i0;){const[o,c]=s;if(!Number.isInteger(o)||!Number.isInteger(c))throw new r.FormatError(`Invalid XRef range fields: ${o}, ${c}`);if(!Number.isInteger(a)||!Number.isInteger(n)||!Number.isInteger(i))throw new r.FormatError(`Invalid XRef entry fields length: ${o}, ${c}`);for(let s=t.entryNum;s=e.length);){a+=String.fromCharCode(r);r=e[t]}return a}function skipUntil(e,t,a){const r=a.length,n=e.length;let i=0;for(;t=r)break;t++;i++}return i}const e=/\b(endobj|\d+\s+\d+\s+obj|xref|trailer\s*<<)\b/g,t=/\b(startxref|\d+\s+\d+\s+obj)\b/g,a=/^(\d+)\s+(\d+)\s+obj\b/,o=new Uint8Array([116,114,97,105,108,101,114]),c=new Uint8Array([115,116,97,114,116,120,114,101,102]),l=new Uint8Array([47,88,82,101,102]);this.entries.length=0;this._cacheMap.clear();const h=this.stream;h.pos=0;const u=h.getBytes(),d=(0,r.bytesToString)(u),f=u.length;let g=h.start;const p=[],m=[];for(;g=f)break;n=u[g]}while(10!==n&&13!==n);continue}const b=readToken(u,g);let y;if(b.startsWith("xref")&&(4===b.length||/\s/.test(b[4]))){g+=skipUntil(u,g,o);p.push(g);g+=skipUntil(u,g,c)}else if(y=a.exec(b)){const t=0|y[1],a=0|y[2],n=g+b.length;let o,c=!1;if(this.entries[t]){if(this.entries[t].gen===a)try{new i.Parser({lexer:new i.Lexer(h.makeSubStream(n))}).getObj();c=!0}catch(e){e instanceof s.ParserEOFException?(0,r.warn)(`indexObjects -- checking object (${b}): "${e}".`):c=!0}}else c=!0;c&&(this.entries[t]={offset:g-h.start,gen:a,uncompressed:!0});e.lastIndex=n;const p=e.exec(d);if(p){o=e.lastIndex+1-g;if("endobj"!==p[1]){(0,r.warn)(`indexObjects: Found "${p[1]}" inside of another "obj", caused by missing "endobj" -- trying to recover.`);o-=p[1].length+1}}else o=f-g;const w=u.subarray(g,g+o),S=skipUntil(w,0,l);if(S0?Math.max(...this._xrefStms):null)}getEntry(e){const t=this.entries[e];return t&&!t.free&&t.offset?t:null}fetchIfRef(e,t=!1){return e instanceof n.Ref?this.fetch(e,t):e}fetch(e,t=!1){if(!(e instanceof n.Ref))throw new Error("ref object is not a reference");const a=e.num,i=this._cacheMap.get(a);if(void 0!==i){i instanceof n.Dict&&!i.objId&&(i.objId=e.toString());return i}let s=this.getEntry(a);if(null===s){this._cacheMap.set(a,s);return s}if(this._pendingRefs.has(e)){this._pendingRefs.remove(e);(0,r.warn)(`Ignoring circular reference: ${e}.`);return n.CIRCULAR_REF}this._pendingRefs.put(e);try{s=s.uncompressed?this.fetchUncompressed(e,s,t):this.fetchCompressed(e,s,t);this._pendingRefs.remove(e)}catch(t){this._pendingRefs.remove(e);throw t}s instanceof n.Dict?s.objId=e.toString():s instanceof o.BaseStream&&(s.dict.objId=e.toString());return s}fetchUncompressed(e,t,a=!1){const c=e.gen;let l=e.num;if(t.gen!==c){const i=`Inconsistent generation in XRef: ${e}`;if(this._generationFallback&&t.gen{Object.defineProperty(t,"__esModule",{value:!0});t.MessageHandler=void 0;var r=a(2);const n=1,i=2,s=1,o=2,c=3,l=4,h=5,u=6,d=7,f=8;function wrapReason(e){e instanceof Error||"object"==typeof e&&null!==e||(0,r.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.');switch(e.name){case"AbortException":return new r.AbortException(e.message);case"MissingPDFException":return new r.MissingPDFException(e.message);case"PasswordException":return new r.PasswordException(e.message,e.code);case"UnexpectedResponseException":return new r.UnexpectedResponseException(e.message,e.status);case"UnknownErrorException":return new r.UnknownErrorException(e.message,e.details);default:return new r.UnknownErrorException(e.message,e.toString())}}t.MessageHandler=class MessageHandler{constructor(e,t,a){this.sourceName=e;this.targetName=t;this.comObj=a;this.callbackId=1;this.streamId=1;this.streamSinks=Object.create(null);this.streamControllers=Object.create(null);this.callbackCapabilities=Object.create(null);this.actionHandler=Object.create(null);this._onComObjOnMessage=e=>{const t=e.data;if(t.targetName!==this.sourceName)return;if(t.stream){this.#E(t);return}if(t.callback){const e=t.callbackId,a=this.callbackCapabilities[e];if(!a)throw new Error(`Cannot resolve callback ${e}`);delete this.callbackCapabilities[e];if(t.callback===n)a.resolve(t.data);else{if(t.callback!==i)throw new Error("Unexpected callback case");a.reject(wrapReason(t.reason))}return}const r=this.actionHandler[t.action];if(!r)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const e=this.sourceName,s=t.sourceName;new Promise((function(e){e(r(t.data))})).then((function(r){a.postMessage({sourceName:e,targetName:s,callback:n,callbackId:t.callbackId,data:r})}),(function(r){a.postMessage({sourceName:e,targetName:s,callback:i,callbackId:t.callbackId,reason:wrapReason(r)})}))}else t.streamId?this.#N(t):r(t.data)};a.addEventListener("message",this._onComObjOnMessage)}on(e,t){const a=this.actionHandler;if(a[e])throw new Error(`There is already an actionName called "${e}"`);a[e]=t}send(e,t,a){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},a)}sendWithPromise(e,t,a){const n=this.callbackId++,i=new r.PromiseCapability;this.callbackCapabilities[n]=i;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:n,data:t},a)}catch(e){i.reject(e)}return i.promise}sendWithStream(e,t,a,n){const i=this.streamId++,o=this.sourceName,c=this.targetName,l=this.comObj;return new ReadableStream({start:a=>{const s=new r.PromiseCapability;this.streamControllers[i]={controller:a,startCall:s,pullCall:null,cancelCall:null,isClosed:!1};l.postMessage({sourceName:o,targetName:c,action:e,streamId:i,data:t,desiredSize:a.desiredSize},n);return s.promise},pull:e=>{const t=new r.PromiseCapability;this.streamControllers[i].pullCall=t;l.postMessage({sourceName:o,targetName:c,stream:u,streamId:i,desiredSize:e.desiredSize});return t.promise},cancel:e=>{(0,r.assert)(e instanceof Error,"cancel must have a valid reason");const t=new r.PromiseCapability;this.streamControllers[i].cancelCall=t;this.streamControllers[i].isClosed=!0;l.postMessage({sourceName:o,targetName:c,stream:s,streamId:i,reason:wrapReason(e)});return t.promise}},a)}#N(e){const t=e.streamId,a=this.sourceName,n=e.sourceName,i=this.comObj,s=this,o=this.actionHandler[e.action],u={enqueue(e,s=1,o){if(this.isCancelled)return;const c=this.desiredSize;this.desiredSize-=s;if(c>0&&this.desiredSize<=0){this.sinkCapability=new r.PromiseCapability;this.ready=this.sinkCapability.promise}i.postMessage({sourceName:a,targetName:n,stream:l,streamId:t,chunk:e},o)},close(){if(!this.isCancelled){this.isCancelled=!0;i.postMessage({sourceName:a,targetName:n,stream:c,streamId:t});delete s.streamSinks[t]}},error(e){(0,r.assert)(e instanceof Error,"error must have a valid reason");if(!this.isCancelled){this.isCancelled=!0;i.postMessage({sourceName:a,targetName:n,stream:h,streamId:t,reason:wrapReason(e)})}},sinkCapability:new r.PromiseCapability,onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};u.sinkCapability.resolve();u.ready=u.sinkCapability.promise;this.streamSinks[t]=u;new Promise((function(t){t(o(e.data,u))})).then((function(){i.postMessage({sourceName:a,targetName:n,stream:f,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:a,targetName:n,stream:f,streamId:t,reason:wrapReason(e)})}))}#E(e){const t=e.streamId,a=this.sourceName,n=e.sourceName,i=this.comObj,g=this.streamControllers[t],p=this.streamSinks[t];switch(e.stream){case f:e.success?g.startCall.resolve():g.startCall.reject(wrapReason(e.reason));break;case d:e.success?g.pullCall.resolve():g.pullCall.reject(wrapReason(e.reason));break;case u:if(!p){i.postMessage({sourceName:a,targetName:n,stream:d,streamId:t,success:!0});break}p.desiredSize<=0&&e.desiredSize>0&&p.sinkCapability.resolve();p.desiredSize=e.desiredSize;new Promise((function(e){e(p.onPull?.())})).then((function(){i.postMessage({sourceName:a,targetName:n,stream:d,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:a,targetName:n,stream:d,streamId:t,reason:wrapReason(e)})}));break;case l:(0,r.assert)(g,"enqueue should have stream controller");if(g.isClosed)break;g.controller.enqueue(e.chunk);break;case c:(0,r.assert)(g,"close should have stream controller");if(g.isClosed)break;g.isClosed=!0;g.controller.close();this.#R(g,t);break;case h:(0,r.assert)(g,"error should have stream controller");g.controller.error(wrapReason(e.reason));this.#R(g,t);break;case o:e.success?g.cancelCall.resolve():g.cancelCall.reject(wrapReason(e.reason));this.#R(g,t);break;case s:if(!p)break;new Promise((function(t){t(p.onCancel?.(wrapReason(e.reason)))})).then((function(){i.postMessage({sourceName:a,targetName:n,stream:o,streamId:t,success:!0})}),(function(e){i.postMessage({sourceName:a,targetName:n,stream:o,streamId:t,reason:wrapReason(e)})}));p.sinkCapability.reject(wrapReason(e.reason));p.isCancelled=!0;delete this.streamSinks[t];break;default:throw new Error("Unexpected stream case")}}async#R(e,t){await Promise.allSettled([e.startCall?.promise,e.pullCall?.promise,e.cancelCall?.promise]);delete this.streamControllers[t]}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}},(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});t.PDFWorkerStream=void 0;var r=a(2);t.PDFWorkerStream=class PDFWorkerStream{constructor(e){this._msgHandler=e;this._contentLength=null;this._fullRequestReader=null;this._rangeRequestReaders=[]}getFullReader(){(0,r.assert)(!this._fullRequestReader,"PDFWorkerStream.getFullReader can only be called once.");this._fullRequestReader=new PDFWorkerStreamReader(this._msgHandler);return this._fullRequestReader}getRangeReader(e,t){const a=new PDFWorkerStreamRangeReader(e,t,this._msgHandler);this._rangeRequestReaders.push(a);return a}cancelAllRequests(e){this._fullRequestReader?.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}};class PDFWorkerStreamReader{constructor(e){this._msgHandler=e;this.onProgress=null;this._contentLength=null;this._isRangeSupported=!1;this._isStreamingSupported=!1;const t=this._msgHandler.sendWithStream("GetReader");this._reader=t.getReader();this._headersReady=this._msgHandler.sendWithPromise("ReaderHeadersReady").then((e=>{this._isStreamingSupported=e.isStreamingSupported;this._isRangeSupported=e.isRangeSupported;this._contentLength=e.contentLength}))}get headersReady(){return this._headersReady}get contentLength(){return this._contentLength}get isStreamingSupported(){return this._isStreamingSupported}get isRangeSupported(){return this._isRangeSupported}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class PDFWorkerStreamRangeReader{constructor(e,t,a){this._msgHandler=a;this.onProgress=null;const r=this._msgHandler.sendWithStream("GetRangeReader",{begin:e,end:t});this._reader=r.getReader()}get isStreamingSupported(){return!1}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}}],t={};function __w_pdfjs_require__(a){var r=t[a];if(void 0!==r)return r.exports;var n=t[a]={exports:{}};e[a](n,n.exports,__w_pdfjs_require__);return n.exports}var a={};(()=>{var e=a;Object.defineProperty(e,"__esModule",{value:!0});Object.defineProperty(e,"WorkerMessageHandler",{enumerable:!0,get:function(){return t.WorkerMessageHandler}});var t=__w_pdfjs_require__(1)})();return a})())); \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx deleted file mode 100644 index 3e899f6a1..000000000 --- a/src/app/layout.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import logo from "@/assets/logo.svg"; -import { PublicEnvScript } from "@/components/public-env-script"; -import ScreenSize from "@/components/screen-size"; -import { constants } from "@/lib/constants"; -import { cn } from "@/lib/utils"; -import { NextAuthProvider } from "@/providers/next-auth"; -import { ProgressBarProvider } from "@/providers/progress-bar"; -import { getServerComponentAuthSession } from "@/server/auth"; -import { robotoMono, satoshi } from "@/styles/fonts"; -import "@/styles/globals.css"; -import { TRPCReactProvider } from "@/trpc/react"; -import type { Metadata } from "next"; -import { cookies } from "next/headers"; -import { Toaster } from "sonner"; - -export const metadata: Metadata = { - title: { - template: "%s | Captable, Inc.", - default: "Captable, Inc.", - }, - description: - "Captable, Inc. is an open source cap table management tool that does not sell your data.", - icons: [{ rel: "icon", url: logo.src }], - metadataBase: new URL(constants.url), -}; - -export default async function RootLayout({ - children, -}: { - children: React.ReactNode; -}) { - const session = await getServerComponentAuthSession(); - const nodeEnv = process.env.NODE_ENV; - - return ( - - - - - - - - -

{children}
- - {nodeEnv === "development" && } - - - - - - ); -} diff --git a/src/components/onboarding/auth-form-header.tsx b/src/components/onboarding/auth-form-header.tsx deleted file mode 100644 index bceeadcb2..000000000 --- a/src/components/onboarding/auth-form-header.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { CaptableLogo } from "@/components/common/logo"; - -interface LoginFormHeaderProps { - page?: string; -} - -export function AuthFormHeader({ page }: LoginFormHeaderProps) { - return ( -
-
- -
- -

- {page === "signup" - ? "Signup to Captable, Inc." - : "Login to Captable, Inc."} -

-
- ); -} diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx deleted file mode 100644 index 0b741f266..000000000 --- a/src/components/ui/button.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import * as React from "react"; - -import { type VariantProps, cva } from "class-variance-authority"; - -import { cn } from "@/lib/utils"; -import { RiLoader5Fill } from "@remixicon/react"; - -const buttonVariants = cva( - "inline-flex items-center gap-x-2 justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", - { - variants: { - variant: { - default: "bg-primary text-primary-foreground hover:bg-primary/90", - destructive: - "bg-destructive text-destructive-foreground hover:bg-destructive/90", - outline: - "border border-input bg-background hover:bg-accent hover:text-accent-foreground", - secondary: - "bg-secondary text-secondary-foreground hover:bg-secondary/80", - ghost: "hover:bg-accent hover:text-accent-foreground", - link: "text-primary underline-offset-4 hover:underline", - }, - size: { - default: "h-10 px-4 py-2", - xs: "h-6 px-2.5 text-xs", - sm: "h-9 rounded-md px-3", - lg: "h-11 rounded-md px-8", - xl: "h-14 rounded-md px-8", - icon: "h-10 w-10", - }, - }, - defaultVariants: { - variant: "default", - size: "default", - }, - }, -); - -export interface ButtonProps - extends React.ButtonHTMLAttributes, - VariantProps { - asChild?: boolean; - loading?: boolean; - loadingText?: string; -} - -const Button = React.forwardRef( - ( - { - className, - variant, - size, - children, - disabled, - loading, - loadingText, - ...props - }, - ref, - ) => { - const isLoading = loading === true; - const isDisabled = disabled ?? isLoading; - - return ( - - ); - }, -); -Button.displayName = "Button"; - -export { Button, buttonVariants }; diff --git a/src/constants/env.ts b/src/constants/env.ts deleted file mode 100644 index 52e33d1db..000000000 --- a/src/constants/env.ts +++ /dev/null @@ -1 +0,0 @@ -export const PUBLIC_ENV_KEY = "___ENV"; diff --git a/src/instrumentation.ts b/src/instrumentation.ts deleted file mode 100644 index 77903006a..000000000 --- a/src/instrumentation.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { isSentryEnabled } from "@/constants/sentry"; - -export async function register() { - if (process.env.NEXT_RUNTIME === "nodejs") { - const { startJobs } = await import("@/jobs/start"); - await startJobs(); - - if (isSentryEnabled) { - await import("../sentry.server.config"); - } - } - - if (process.env.NEXT_RUNTIME === "edge" && isSentryEnabled) { - await import("../sentry.edge.config"); - } -} diff --git a/src/lib/env.ts b/src/lib/env.ts deleted file mode 100644 index b6a51f06d..000000000 --- a/src/lib/env.ts +++ /dev/null @@ -1,13 +0,0 @@ -export function getPublicEnv() { - const publicEnv = Object.keys(process.env) - .filter((key) => /^NEXT_PUBLIC_/i.test(key)) - .reduce>((prev, curr) => { - const env = process.env[curr]; - if (env) { - prev[curr] = env; - } - return prev; - }, {}); - - return publicEnv; -} diff --git a/src/server/db.ts b/src/server/db.ts deleted file mode 100644 index f66e629b8..000000000 --- a/src/server/db.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { PrismaClient } from "@prisma/client"; - -import { env } from "@/env"; -import type { TTemplateFieldMetaType } from "@/trpc/routers/template-field-router/schema"; -import { pagination } from "prisma-extension-pagination"; - -declare global { - namespace PrismaJson { - type TemplateFieldMeta = TTemplateFieldMetaType; - } -} - -function getExtendedClient() { - return new PrismaClient({ - log: env.LOGS ? ["query", "error", "warn"] : ["error"], - }).$extends(pagination()); -} - -const globalForPrisma = globalThis as unknown as { - prisma: ExtendedPrismaClient | undefined; -}; - -export const db = globalForPrisma.prisma ?? getExtendedClient(); - -if (env.NODE_ENV !== "production") globalForPrisma.prisma = db; - -export type PrismaTransactionalClient = Parameters< - Parameters[0] ->[0]; - -export type TPrisma = typeof db; - -export type TPrismaOrTransaction = TPrisma | PrismaTransactionalClient; -export type ExtendedPrismaClient = ReturnType; diff --git a/src/server/user.ts b/src/server/user.ts deleted file mode 100644 index 51a5ce68c..000000000 --- a/src/server/user.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { db } from "./db"; -export const getUserByEmail = async (email: string) => { - try { - return await db.user.findUnique({ where: { email } }); - } catch { - return null; - } -}; - -export const getUserById = async (id: string) => { - try { - return await db.user.findUnique({ where: { id } }); - } catch { - return null; - } -}; diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 9d95da44e..000000000 --- a/tsconfig.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "compilerOptions": { - /* Base Options: */ - "esModuleInterop": true, - "skipLibCheck": true, - "target": "es2022", - "allowJs": true, - "resolveJsonModule": true, - "moduleDetection": "force", - "isolatedModules": true, - - /* Strictness */ - "strict": true, - "noUncheckedIndexedAccess": true, - "checkJs": true, - "strictNullChecks": true, - - /* Bundled projects */ - "lib": ["dom", "dom.iterable", "ES2022"], - "noEmit": true, - "module": "ESNext", - "moduleResolution": "Bundler", - "jsx": "preserve", - "plugins": [{ "name": "next" }], - "incremental": true, - - /* Path Aliases */ - "baseUrl": ".", - "paths": { - "@/*": ["./src/*"], - "@/prisma/*": ["./prisma/*"] - } - }, - "include": [ - ".eslintrc.cjs", - "next-env.d.ts", - "**/*.ts", - "**/*.tsx", - "**/*.cjs", - "**/*.js", - ".next/types/**/*.ts", - "src/components/onboarding/verify-email", - "src/app/(unauthenticated)/forgot-password" - ], - "exclude": ["node_modules"] -} diff --git a/turbo.jsonc b/turbo.jsonc new file mode 100644 index 000000000..9cbfe1f36 --- /dev/null +++ b/turbo.jsonc @@ -0,0 +1,38 @@ +{ + "$schema": "https://turborepo.com/schema.json", + "envMode": "loose", + // "ui": "tui", + "tasks": { + "build": { + "dependsOn": ["^build"], + "inputs": ["$TURBO_DEFAULT$", ".env*"], + "outputs": [".next/**", "!.next/cache/**"] + }, + "lint": { + "dependsOn": ["^lint"] + }, + "check-types": { + "dependsOn": ["^check-types"] + }, + "dev": { + "cache": false, + "persistent": true + }, + "format": { + "dependsOn": ["^format"] + }, + "db:seed": { + "dependsOn": ["^db:seed"] + }, + "db:generate": { + "dependsOn": ["^db:generate"], + "cache": false + }, + "db:migrate": { + "dependsOn": ["^db:migrate"] + }, + "db:studio": { + "dependsOn": ["^db:studio"] + } + } +} From 8142e2b0ab8203cc7eb6622720dd7a6be58f8a7a Mon Sep 17 00:00:00 2001 From: Puru D Date: Tue, 20 May 2025 23:28:05 -0500 Subject: [PATCH 03/85] feat: fix typesafety issues and refactor prisma query with drizzle --- .../components/audit/audit-table/index.tsx | 6 +- .../billing/pricing-modal/index.tsx | 20 +-- .../billing/pricing-modal/pricing-card.tsx | 6 +- .../captable/components/public-env-script.tsx | 3 +- .../emails/AccountVerificationEmail.tsx | 10 +- apps/captable/emails/MagicLinkEmail.tsx | 12 +- apps/captable/emails/MemberInviteEmail.tsx | 10 +- apps/captable/emails/PasswordResetEmail.tsx | 10 +- apps/captable/emails/ShareDataRoomEmail.tsx | 8 +- apps/captable/emails/ShareUpdateEmail.tsx | 8 +- apps/captable/lib/zodSchemas.ts | 2 +- apps/captable/server/company.ts | 28 ++-- apps/captable/server/esign.ts | 140 ++++++++++-------- apps/captable/server/file-uploads.ts | 2 +- apps/captable/server/member.ts | 34 ++--- apps/captable/server/password-reset-token.ts | 14 +- apps/captable/server/stripe.ts | 77 ++++------ apps/captable/server/verification-token.ts | 12 +- bun.lockb | Bin 173896 -> 306384 bytes package.json | 9 +- 20 files changed, 208 insertions(+), 203 deletions(-) diff --git a/apps/captable/components/audit/audit-table/index.tsx b/apps/captable/components/audit/audit-table/index.tsx index 0d2e54c43..1294a28cf 100644 --- a/apps/captable/components/audit/audit-table/index.tsx +++ b/apps/captable/components/audit/audit-table/index.tsx @@ -18,7 +18,7 @@ import { import { Checkbox } from "@/components/ui/checkbox"; -import { type RouterOutputs } from "@/trpc/shared"; +import type { RouterOutputs } from "@/trpc/shared"; import { dayjsExt } from "@/lib/common/dayjs"; import { Badge } from "@/components/ui/badge"; @@ -45,14 +45,14 @@ export const columns: ColumnDef[] = [ table.getIsAllPageRowsSelected() || (table.getIsSomePageRowsSelected() && "indeterminate") } - onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)} + onCheckedChange={(value: boolean) => table.toggleAllPageRowsSelected(!!value)} aria-label="Select all" /> ), cell: ({ row }) => ( row.toggleSelected(!!value)} + onCheckedChange={(value: boolean) => row.toggleSelected(!!value)} aria-label="Select row" /> ), diff --git a/apps/captable/components/billing/pricing-modal/index.tsx b/apps/captable/components/billing/pricing-modal/index.tsx index 8f4aacaf3..b1151542b 100644 --- a/apps/captable/components/billing/pricing-modal/index.tsx +++ b/apps/captable/components/billing/pricing-modal/index.tsx @@ -8,7 +8,7 @@ import { DialogHeader, DialogTitle, } from "@/components/ui/dialog"; -import type { PricingPlanInterval, PricingType } from "@/prisma/enums"; +import type { PricingPlanIntervalEnum, PricingTypeEnum } from "@captable/db/schema/enums"; import { api } from "@/trpc/react"; import type { TypeZodStripePortalMutationSchema } from "@/trpc/routers/billing-router/schema"; import type { RouterOutputs } from "@/trpc/shared"; @@ -29,22 +29,22 @@ interface PricingProps { interface handleStripeCheckoutOptions { priceId: string; - priceType: PricingType; + priceType: PricingTypeEnum; } function Plans({ products, subscription }: PricingProps) { const router = useRouter(); const intervals = Array.from( new Set( - products.flatMap((product) => - product?.prices?.map((price) => price?.interval), + products.flatMap((product: Products) => + product?.prices?.map((price: Products["prices"]) => price?.interval), ), ), ); const [billingInterval, setBillingInterval] = - useState("month"); + useState("month"); - const { mutateAsync: checkoutWithStripe, isLoading: checkoutLoading } = + const { mutateAsync: checkoutWithStripe, isPending: checkoutLoading } = api.billing.checkout.useMutation({ onSuccess: async ({ stripeSessionId }) => { const stripe = await getStripeClient(); @@ -52,14 +52,14 @@ function Plans({ products, subscription }: PricingProps) { }, }); - const { mutateAsync: stripePortal, isLoading: stripePortalLoading } = + const { mutateAsync: stripePortal, isPending: stripePortalLoading } = api.billing.stripePortal.useMutation({ onSuccess: ({ url }) => { router.push(url); }, }); - const handleBilling = (interval: PricingPlanInterval) => { + const handleBilling = (interval: PricingPlanIntervalEnum) => { setBillingInterval(interval); }; @@ -112,9 +112,9 @@ function Plans({ products, subscription }: PricingProps) { }, })} /> - {products.map((product) => { + {products.map((product: Products[number]) => { const price = product?.prices?.find( - (price) => price.interval === billingInterval, + (price: Products[number]['prices'][number]) => price.interval === billingInterval, ); if (!price) return null; diff --git a/apps/captable/components/billing/pricing-modal/pricing-card.tsx b/apps/captable/components/billing/pricing-modal/pricing-card.tsx index 87b498c0d..f28ce82f9 100644 --- a/apps/captable/components/billing/pricing-modal/pricing-card.tsx +++ b/apps/captable/components/billing/pricing-modal/pricing-card.tsx @@ -7,14 +7,14 @@ import { CardTitle, } from "@/components/ui/card"; import { cn } from "@/lib/utils"; -import type { PricingPlanInterval } from "@/prisma/enums"; +import type { PricingPlanIntervalEnum } from "@captable/db/schema/enums"; import { useState } from "react"; interface PricingCardProps { title: string; description?: string | null; price: string; - interval: PricingPlanInterval; + interval: PricingPlanIntervalEnum; subscribedUnitAmount?: bigint | null; unitAmount: number; // biome-ignore lint/suspicious/noExplicitAny: @@ -22,7 +22,7 @@ interface PricingCardProps { isSubmitting: boolean; } -const humanizedInterval: Record = { +const humanizedInterval: Record = { day: "Daily", month: "Monthly", week: "Weekly", diff --git a/apps/captable/components/public-env-script.tsx b/apps/captable/components/public-env-script.tsx index c1baa9cab..e6763282e 100644 --- a/apps/captable/components/public-env-script.tsx +++ b/apps/captable/components/public-env-script.tsx @@ -1,5 +1,4 @@ -import { PUBLIC_ENV_KEY } from "@/constants/env"; -import { getPublicEnv } from "@/lib/env"; +import { PUBLIC_ENV_KEY, getPublicEnv } from "@/env"; import { unstable_noStore as noStore } from "next/cache"; import Script from "next/script"; diff --git a/apps/captable/emails/AccountVerificationEmail.tsx b/apps/captable/emails/AccountVerificationEmail.tsx index a8087833a..5fe40bdbd 100644 --- a/apps/captable/emails/AccountVerificationEmail.tsx +++ b/apps/captable/emails/AccountVerificationEmail.tsx @@ -13,7 +13,7 @@ import { Text, } from "@react-email/components"; import * as React from "react"; -import { constants } from "../lib/constants"; +import { META } from "@/lib/constants/meta"; interface AccountVerificationEmailProps { verifyLink: string; @@ -24,12 +24,12 @@ export const AccountVerificationEmail = ({ }: AccountVerificationEmailProps) => ( - Your email verification link for {constants.title} + Your email verification link for {META.title} - Your verification email link for {constants.title} + Your verification email link for {META.title}
@@ -52,10 +52,10 @@ export const AccountVerificationEmail = ({
- {constants.title} + {META.title} diff --git a/apps/captable/emails/MagicLinkEmail.tsx b/apps/captable/emails/MagicLinkEmail.tsx index 3615b0023..a41d49e18 100644 --- a/apps/captable/emails/MagicLinkEmail.tsx +++ b/apps/captable/emails/MagicLinkEmail.tsx @@ -13,7 +13,7 @@ import { Text, } from "@react-email/components"; import * as React from "react"; -import { constants } from "../lib/constants"; +import { META } from "@/lib/constants/meta"; interface MagicLinkEmailProps { magicLink: string; @@ -22,12 +22,12 @@ interface MagicLinkEmailProps { export const MagicLinkEmail = ({ magicLink }: MagicLinkEmailProps) => ( - Your magic link for {constants.title} + Your magic link for {META.title} - Your magic link for {constants.title} + Your magic link for {META.title}
@@ -50,10 +50,10 @@ export const MagicLinkEmail = ({ magicLink }: MagicLinkEmailProps) => (
- {constants.title} + {META.title} @@ -62,7 +62,7 @@ export const MagicLinkEmail = ({ magicLink }: MagicLinkEmailProps) => ( ); MagicLinkEmail.PreviewProps = { - magicLink: `${constants.url}/api/auth/callback/email?callbackUrl=http%3A%2F%2Flocalhost%3A3000%2Fonboarding&token=671d9eac4043bbe1c22aeafd419ddfe79c2282ec755c558ea789671fdaffe8dd&email=ceo%40example.com`, + magicLink: `${META.url}/api/auth/callback/email?callbackUrl=http%3A%2F%2Flocalhost%3A3000%2Fonboarding&token=671d9eac4043bbe1c22aeafd419ddfe79c2282ec755c558ea789671fdaffe8dd&email=ceo%40example.com`, } as MagicLinkEmailProps; export default MagicLinkEmail; diff --git a/apps/captable/emails/MemberInviteEmail.tsx b/apps/captable/emails/MemberInviteEmail.tsx index f8554feaf..782b6e890 100644 --- a/apps/captable/emails/MemberInviteEmail.tsx +++ b/apps/captable/emails/MemberInviteEmail.tsx @@ -12,7 +12,7 @@ import { Tailwind, Text, } from "@react-email/components"; -import { constants } from "../lib/constants"; +import { META } from "@/lib/constants/meta"; interface MemberInviteEmailProps { invitedBy: string; @@ -25,7 +25,7 @@ export const MemberInviteEmail = ({ companyName, inviteLink, }: MemberInviteEmailProps) => { - const previewText = `Join ${invitedBy} on ${constants.title}`; + const previewText = `Join ${invitedBy} on ${META.title}`; return ( @@ -36,7 +36,7 @@ export const MemberInviteEmail = ({ Join {companyName} on{" "} - {constants.title} + {META.title} Hello , @@ -66,10 +66,10 @@ export const MemberInviteEmail = ({
- {constants.title} + {META.title}
diff --git a/apps/captable/emails/PasswordResetEmail.tsx b/apps/captable/emails/PasswordResetEmail.tsx index 4582496ca..ab32dbac3 100644 --- a/apps/captable/emails/PasswordResetEmail.tsx +++ b/apps/captable/emails/PasswordResetEmail.tsx @@ -13,7 +13,7 @@ import { Text, } from "@react-email/components"; import * as React from "react"; -import { constants } from "../lib/constants"; +import { META } from "@/lib/constants/meta"; interface PasswordResetEmailProps { resetLink: string; @@ -22,12 +22,12 @@ interface PasswordResetEmailProps { export const PasswordResetEmail = ({ resetLink }: PasswordResetEmailProps) => ( - Your password reset link for {constants.title} + Your password reset link for {META.title} - Your password reset link for {constants.title} + Your password reset link for {META.title}
@@ -50,10 +50,10 @@ export const PasswordResetEmail = ({ resetLink }: PasswordResetEmailProps) => (
- {constants.title} + {META.title} diff --git a/apps/captable/emails/ShareDataRoomEmail.tsx b/apps/captable/emails/ShareDataRoomEmail.tsx index d769c944d..b7eb3c087 100644 --- a/apps/captable/emails/ShareDataRoomEmail.tsx +++ b/apps/captable/emails/ShareDataRoomEmail.tsx @@ -12,7 +12,7 @@ import { Tailwind, Text, } from "@react-email/components"; -import { constants } from "../lib/constants"; +import { META } from "@/lib/constants/meta"; interface ShareDataRoomEmailProps { senderName: string; @@ -47,7 +47,7 @@ export const ShareDataRoomEmail = ({ {senderName} has shared a data room{" "} - {dataRoom} on {constants.title} + {dataRoom} on {META.title}
@@ -70,9 +70,9 @@ export const ShareDataRoomEmail = ({
- + Powered by - {` ${constants.title}`} + {` ${META.title}`} diff --git a/apps/captable/emails/ShareUpdateEmail.tsx b/apps/captable/emails/ShareUpdateEmail.tsx index cad928256..fa433a2e6 100644 --- a/apps/captable/emails/ShareUpdateEmail.tsx +++ b/apps/captable/emails/ShareUpdateEmail.tsx @@ -12,7 +12,7 @@ import { Tailwind, Text, } from "@react-email/components"; -import { constants } from "../lib/constants"; +import { META } from "@/lib/constants/meta"; interface ShareUpdateEmailProps { senderName: string; @@ -48,7 +48,7 @@ export const ShareUpdateEmail = ({ {senderName} has shared an update{" "} {updateTitle} on{" "} - {constants.title} + {META.title}
@@ -71,9 +71,9 @@ export const ShareUpdateEmail = ({
- + Powered by - {` ${constants.title}`} + {` ${META.title}`} diff --git a/apps/captable/lib/zodSchemas.ts b/apps/captable/lib/zodSchemas.ts index 0db08b98a..d70f5ae7f 100644 --- a/apps/captable/lib/zodSchemas.ts +++ b/apps/captable/lib/zodSchemas.ts @@ -1,5 +1,5 @@ +import { PayloadType } from "@/lib/types"; import { z } from "zod"; -import { PayloadType } from "./constants"; export const profileSettingsSchema = z.object({ fullName: z.string().min(2).max(40), diff --git a/apps/captable/server/company.ts b/apps/captable/server/company.ts index 4e125020d..481466470 100644 --- a/apps/captable/server/company.ts +++ b/apps/captable/server/company.ts @@ -1,21 +1,19 @@ -import { db } from "./db"; +import { db } from "@captable/db"; +import { eq } from "@captable/db/utils"; +import { members, companies } from "@captable/db/schema"; export const getCompanyList = async (userId: string) => { - const data = await db.member.findMany({ - where: { - userId, + const data = await db.select({ + id: members.id, + company: { + id: companies.id, + publicId: companies.publicId, + name: companies.name, }, - select: { - id: true, - company: { - select: { - id: true, - publicId: true, - name: true, - }, - }, - }, - }); + }) + .from(members) + .innerJoin(companies, eq(members.companyId, companies.id)) + .where(eq(members.userId, userId)); return data; }; diff --git a/apps/captable/server/esign.ts b/apps/captable/server/esign.ts index 8e35e3eb6..19227d259 100644 --- a/apps/captable/server/esign.ts +++ b/apps/captable/server/esign.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/prefer-for-of */ import { dayjsExt } from "@/lib/common/dayjs"; import { type TUploadFile, getFileFromS3, uploadFile } from "@/lib/common/uploads"; import { TAG } from "@/lib/tags"; @@ -8,28 +7,26 @@ import { createDocumentHandler } from "@/trpc/routers/document-router/procedures import { renderToBuffer } from "@react-pdf/renderer"; import { PDFDocument, StandardFonts } from "pdf-lib"; import { EsignAudit } from "./audit"; -import type { PrismaTransactionalClient } from "./db"; +import type { DBTransaction } from "@captable/db"; +import { eq } from "@captable/db/utils"; +import { esignAudits, templates, templateFields, buckets, companies, members, users } from "@captable/db/schema"; interface getEsignAuditsOptions { templateId: string; - tx: PrismaTransactionalClient; + tx: DBTransaction; } export async function getEsignAudits({ templateId, tx, }: getEsignAuditsOptions) { - const audits = await tx.esignAudit.findMany({ - where: { - templateId, - }, - select: { - id: true, - summary: true, - occurredAt: true, - action: true, - }, - }); + const audits = await tx.select({ + id: esignAudits.id, + summary: esignAudits.summary, + occurredAt: esignAudits.occurredAt, + action: esignAudits.action, + }).from(esignAudits).where(eq(esignAudits.templateId, templateId)); + return audits; } @@ -37,57 +34,87 @@ export type TGetEsignAudits = Awaited>; interface getEsignTemplateOptions { templateId: string; - tx: PrismaTransactionalClient; + tx: DBTransaction; } -export function getEsignTemplate({ tx, templateId }: getEsignTemplateOptions) { - return tx.template.findFirstOrThrow({ - where: { id: templateId }, - select: { - bucket: true, - fields: { - orderBy: { - top: "asc", - }, - }, - companyId: true, - id: true, - name: true, - orderedDelivery: true, - uploader: { - select: { - user: { - select: { - name: true, - email: true, - }, - }, - }, - }, - message: true, - company: { - select: { - name: true, - logo: true, - }, - }, +export async function getEsignTemplate({ tx, templateId }: getEsignTemplateOptions) { + // Get template + const [template] = await tx.select({ + id: templates.id, + name: templates.name, + orderedDelivery: templates.orderedDelivery, + message: templates.message, + companyId: templates.companyId, + bucketId: templates.bucketId, + uploaderId: templates.uploaderId, + }) + .from(templates) + .where(eq(templates.id, templateId)) + .limit(1); + + if (!template) { + throw new Error("Template not found"); + } + + // Get fields with ordering + const fields = await tx.select() + .from(templateFields) + .where(eq(templateFields.templateId, templateId)) + .orderBy(templateFields.top); + + // Get bucket information + const [bucket] = await tx.select() + .from(buckets) + .where(eq(buckets.id, template.bucketId)); + + // Get company information + const [company] = await tx.select({ + name: companies.name, + logo: companies.logo, + }) + .from(companies) + .where(eq(companies.id, template.companyId)); + + // Get uploader information + const [uploader] = await tx.select({ + user: { + name: users.name, + email: users.email, }, - }); + }) + .from(members) + .innerJoin(users, eq(members.userId, users.id)) + .where(eq(members.id, template.uploaderId)); + + return { + ...template, + fields, + bucket, + company, + uploader, + }; } export type EsignGetTemplateType = Awaited>; type Field = EsignGetTemplateType["fields"][number]; + +// Define the expected structure of the meta JSON field +interface FieldMeta { + options?: Array<{ id: string; value: string }>; + [key: string]: unknown; +} + interface TGetFieldValue { type: Field["type"]; id: Field["id"]; data: Record; - meta: Field["meta"]; + meta: FieldMeta; } export const getFieldValue = ({ type, id, data, meta }: TGetFieldValue) => { const value = data?.[id]; - + const selectValue = meta?.options ? meta.options.find((val) => val.id === value)?.value : undefined; @@ -129,7 +156,7 @@ export async function generateEsignPdf({ const value = getFieldValue({ data, id: field.id, - meta: field.meta, + meta: field.meta as unknown as FieldMeta, type: field.type, }); @@ -226,7 +253,7 @@ export async function uploadEsignDocuments({ export interface CompleteEsignDocumentsOptionsType { templateName: string; companyId: string; - db: PrismaTransactionalClient; + db: DBTransaction; requestIp: string; userAgent: string; uploaderName: string; @@ -244,14 +271,9 @@ export async function completeEsignDocuments({ userAgent, bucketData, }: CompleteEsignDocumentsOptionsType) { - await db.template.update({ - where: { - id: templateId, - }, - data: { - completedOn: new Date(), - }, - }); + await db.update(templates).set({ + completedOn: new Date(), + }).where(eq(templates.id, templateId)); await EsignAudit.create( { diff --git a/apps/captable/server/file-uploads.ts b/apps/captable/server/file-uploads.ts index b2e7e9cbd..fe940816f 100644 --- a/apps/captable/server/file-uploads.ts +++ b/apps/captable/server/file-uploads.ts @@ -101,7 +101,7 @@ export const getPresignedGetUrl = async (key: string) => { return { key, url }; }; -export const deleteBucketFile = (key: string) => { +export const deleteBucketFile = async (key: string) => { return S3.send( new DeleteObjectCommand({ Bucket: process.env.UPLOAD_BUCKET_PRIVATE, diff --git a/apps/captable/server/member.ts b/apps/captable/server/member.ts index 45203e790..b60ec1b2a 100644 --- a/apps/captable/server/member.ts +++ b/apps/captable/server/member.ts @@ -1,17 +1,18 @@ import { createHash } from "@/lib/crypto"; import { nanoid } from "nanoid"; -import { type TPrismaOrTransaction, db } from "./db"; +import { db, type DBTransaction } from "@captable/db"; +import { eq, inArray } from "@captable/db/utils"; +import { verificationTokens } from "@captable/db/schema"; export const checkVerificationToken = async ( token: string, userEmail: string | null | undefined, ) => { // based on https://github.com/nextauthjs/next-auth/blob/46264fb42af4c3ef7137a5694875eaa1309462ea/packages/core/src/lib/actions/callback/index.ts#L200 - const invite = await db.verificationToken.findFirst({ - where: { - token, - }, + const invite = await db.query.verificationTokens.findFirst({ + where: eq(verificationTokens.token, token), }); + const hasInvite = !!invite; const expired = invite ? invite.expires.valueOf() < Date.now() : undefined; const invalidInvite = !hasInvite || expired; @@ -58,9 +59,9 @@ export async function generateInviteToken() { } interface revokeExistingInviteTokensOptions { - memberId: string; - email: string; - tx?: TPrismaOrTransaction; + memberId: string; + email: string; + tx?: DBTransaction; } export async function revokeExistingInviteTokens({ @@ -75,16 +76,11 @@ export async function revokeExistingInviteTokens({ memberId, }); - const verificationToken = await dbClient.verificationToken.findMany({ - where: { - identifier, - }, - }); - await dbClient.verificationToken.deleteMany({ - where: { - token: { - in: verificationToken.map((item) => item.token), - }, - }, + const verificationToken = await dbClient.query.verificationTokens.findMany({ + where: eq(verificationTokens.identifier, identifier), }); + + await dbClient.delete(verificationTokens).where( + inArray(verificationTokens.token, verificationToken.map((item) => item.token)), + ); } diff --git a/apps/captable/server/password-reset-token.ts b/apps/captable/server/password-reset-token.ts index b00ada6e0..31c50ad23 100644 --- a/apps/captable/server/password-reset-token.ts +++ b/apps/captable/server/password-reset-token.ts @@ -1,9 +1,11 @@ -import { db } from "./db"; +import { db } from "@captable/db"; +import { eq } from "@captable/db/utils"; +import { passwordResetTokens } from "@captable/db/schema"; export const getPasswordResetTokenByToken = async (token: string) => { try { - const passwordResetToken = await db.passwordResetToken.findUnique({ - where: { token }, + const passwordResetToken = await db.query.passwordResetTokens.findFirst({ + where: eq(passwordResetTokens.token, token), }); return passwordResetToken; @@ -12,10 +14,10 @@ export const getPasswordResetTokenByToken = async (token: string) => { } }; -export const getPasswordResetokenByEmail = async (email: string) => { +export const getPasswordResetTokenByEmail = async (email: string) => { try { - const passwordResetToken = await db.passwordResetToken.findFirst({ - where: { email }, + const passwordResetToken = await db.query.passwordResetTokens.findFirst({ + where: eq(passwordResetTokens.email, email), }); return passwordResetToken; diff --git a/apps/captable/server/stripe.ts b/apps/captable/server/stripe.ts index 7aa70ff59..b19ef6cb5 100644 --- a/apps/captable/server/stripe.ts +++ b/apps/captable/server/stripe.ts @@ -1,7 +1,9 @@ import { env } from "@/env"; import { invariant } from "@/lib/error"; import Stripe from "stripe"; -import { type TPrismaOrTransaction, db } from "./db"; +import { db, type DBTransaction } from "@captable/db"; +import { billingProducts, billingPrices, billingCustomers, billingSubscriptions } from "@captable/db/schema"; +import { eq } from "@captable/db/utils"; const toDateTime = (secs: number) => { const t = new Date(+0); // Unix epoch start. @@ -11,7 +13,7 @@ const toDateTime = (secs: number) => { export const stripe = new Stripe(env.STRIPE_API_KEY ?? "", { typescript: true, - apiVersion: "2024-04-10", + apiVersion: "2025-04-30.basil", }); export { Stripe }; @@ -25,29 +27,18 @@ export async function upsertProductRecord(product: Stripe.Product) { metadata: product.metadata, }; - await db.billingProduct.upsert({ - create: productData, - update: productData, - where: { - id: product.id, - }, + await db.insert(billingProducts).values(productData).onConflictDoUpdate({ + target: [billingProducts.id], + set: productData, }); } export async function deleteProductRecord(product: Stripe.Product) { - await db.billingProduct.delete({ - where: { - id: product.id, - }, - }); + await db.delete(billingProducts).where(eq(billingProducts.id, product.id)); } export async function deletePriceRecord(price: Stripe.Price) { - await db.billingPrice.delete({ - where: { - id: price.id, - }, - }); + await db.delete(billingPrices).where(eq(billingPrices.id, price.id)); } const TRIAL_PERIOD_DAYS = 0; @@ -65,12 +56,9 @@ export async function upsertPriceRecord(price: Stripe.Price) { trialPeriodDays: price.recurring?.trial_period_days ?? TRIAL_PERIOD_DAYS, }; - await db.billingPrice.upsert({ - create: priceData, - update: priceData, - where: { - id: price.id, - }, + await db.insert(billingPrices).values(priceData).onConflictDoUpdate({ + target: [billingPrices.id], + set: priceData, }); } @@ -79,8 +67,8 @@ export const manageSubscriptionStatusChange = async ( customerId: string, createAction = false, ) => { - const customer = await db.billingCustomer.findFirst({ - where: { id: customerId }, + const customer = await db.query.billingCustomers.findFirst({ + where: eq(billingCustomers.id, customerId), }); invariant(customer?.id, "Customer lookup failed"); @@ -126,19 +114,16 @@ export const manageSubscriptionStatusChange = async ( : undefined, }; - await db.billingSubscription.upsert({ - create: { ...data, id }, - update: data, - where: { - id, - }, + await db.insert(billingSubscriptions).values({ ...data, id }).onConflictDoUpdate({ + target: [billingSubscriptions.id], + set: data, }); }; interface upsertCustomerOptions { customerId: string; companyId: string; - tx: TPrismaOrTransaction; + tx: DBTransaction; } async function upsertCustomer({ @@ -147,11 +132,10 @@ async function upsertCustomer({ customerId, }: upsertCustomerOptions) { const data = { companyId, id: customerId }; - const customer = await tx.billingCustomer.upsert({ - where: data, - update: data, - create: data, - }); + const customer = await tx.insert(billingCustomers).values(data).onConflictDoUpdate({ + target: [billingCustomers.id], + set: data, + }).returning(); return customer.id; } @@ -175,7 +159,7 @@ const createCustomerInStripe = async ({ interface createOrRetrieveCustomerOptions { companyId: string; - tx: TPrismaOrTransaction; + tx: DBTransaction; email: string; } @@ -184,8 +168,8 @@ export async function createOrRetrieveCustomer({ tx, email, }: createOrRetrieveCustomerOptions) { - const existingCustomer = await tx.billingCustomer.findFirst({ - where: { companyId }, + const existingCustomer = await tx.query.billingCustomers.findFirst({ + where: eq(billingCustomers.companyId, companyId), }); let stripeCustomerId: string | undefined; @@ -207,14 +191,9 @@ export async function createOrRetrieveCustomer({ : await createCustomerInStripe({ email, companyId }); if (existingCustomer && stripeCustomerId) { - await tx.billingCustomer.update({ - where: { - id: existingCustomer.id, - }, - data: { - id: stripeCustomerId, - }, - }); + await tx.update(billingCustomers).set({ + id: stripeCustomerId, + }).where(eq(billingCustomers.id, existingCustomer.id)); return stripeCustomerId; } diff --git a/apps/captable/server/verification-token.ts b/apps/captable/server/verification-token.ts index e7c7fd349..5d9611f24 100644 --- a/apps/captable/server/verification-token.ts +++ b/apps/captable/server/verification-token.ts @@ -1,9 +1,11 @@ -import { db } from "./db"; +import { db } from "@captable/db"; +import { eq } from "@captable/db/utils"; +import { verificationTokens } from "@captable/db/schema"; export const getVerificationTokenByToken = async (token: string) => { try { - const verificationToken = await db.verificationToken.findUnique({ - where: { token }, + const verificationToken = await db.query.verificationTokens.findFirst({ + where: eq(verificationTokens.token, token), }); return verificationToken; @@ -14,8 +16,8 @@ export const getVerificationTokenByToken = async (token: string) => { export const getVerificationTokenByEmail = async (email: string) => { try { - const verificationToken = await db.verificationToken.findFirst({ - where: { identifier: email }, + const verificationToken = await db.query.verificationTokens.findFirst({ + where: eq(verificationTokens.identifier, email), }); return verificationToken; diff --git a/bun.lockb b/bun.lockb index fbc922f17bf9324b092f2eebc99d8e564e4f0c6e..af4fceed5e9a14afe7813806a04b0cb8d6475137 100755 GIT binary patch literal 306384 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 delta 35596 zcmeHwcU)9gxAvJcGs-AUlp;mJ7AznjFeo@;1MHxpNNfX)FiMl62r6KS*vnD3V%Mlx zVo6l&U86>0H;S>wM2#gzqfwLS_pDRE7?XS7_ul*c_0G?Swb!%PZflpb&za-wGgs`6 zeO+aSccUrCY%_ck`)rSCl(}Qp?b|Ek^A=XK^fjK_^eEa=d#7@{?W=f>K08!1V`}9` zZ&8UF$Hg1dvy5@crexEgtfaKGA=?pAgX0R8LpnfCll2@~PmuMlvK|6y2Rl!hw}-3_ zorAQ8+<>o^Yo3NlQ__$+V@P#Ec7<4-;%m<-Yy z@-$MpL2iL`fm{Gt6LKu16XXzC_JnkVZh$1uc*=5^T;O(OMh&t>?a3}(E?JQp@YJBe zX_@&Zq~Ts60rDtFMwk+2WoN{tA-u4f3**P|C2$wF)PVyh-t*|By)TcGBIbGa;Rp? zn8-~-zu?ms&7nSxf~1VD!Y$Oo2)KzVfPO`E=NrDC22zK4T%NVmY!j zXL=WD1oHD{sod;o-fA_GG=BC#rWegOxc;#i1?(mA?5^Q#-L2o zFjHz)X2W_?!Cye4dujA0B$zYOjj1D2j9KwXnc49f#!M4u)j%5c>E;Y$7HXc73wPl2 z5IlJzE6J2f`CpLr8<5oU-|JJp`CNhMA0*i5DUIeOkkm)UhEfKzp;JccMskZWxYCW8 znUlej2X=s`mRUEJDm+H!S3{?KiXo{$p^0Qa2$H(M;01~CSI`Uux#%s zlicntWl*`Pl<%*77Ap0A3rI>DA>AQY zLejjM0EwYqV3uVkS$ad#(q;$g3i%>flHWp7g$_ef1wMmB!37M`fksE67{Jm5NsDQ3 zS+<3w3N@9bi!7@^(r`V}R`N(zX0kaB6@J@7>dZ`2$}sX+d|GlE1oyn15aHq!#XkB#*S}EP3Lz9KQmR z3Rc#}_Fbg-07#k-4IwF?nXsd=QmLCf-!g_|jYv0fN1>Ak_CTV6`2_~F1hxgQBIQLj zN@}?=Gu3x6ma6n&*;(e~OzsZisY2%m02w#AAfV>LnLSx{FOgQ(G`jCet!yo%f@**U)d>FjHRDlqqpk(L_k9KwC)4aAT5GK^1Z#-pec%*a(%NL6@CP zJ1mSDY{C+8(N*?b-@%R=W=H1LnYqWP`GU$m>-MWZ9s2?By&}kl#Mwx z$&_Kv%8bh%G>FzEv&m%A2l#W_5Kr~H498G$r(~(@gyP~eMxa+#-cOUD5{?gBxP(u(dOg?ZcLt(AQ_T|KrdN_%CeCx?ICHXs36Hf zk8&k>MV3coxmlKrM2T5EQ6{ow83##Ywwo+NWZ6)bj*wJgtt_9R!ld7lWji#8I>dd9 z)bcZEF;!?kB+VJ6VPZZsiyzwCrKO5X6%Q${Ry@@f6`}MArnu}x^mB?hQaP?f?(2Dw)Z)0w(k!1S zkBJA+X{_a%x%%QDaYDzEp(Ug^Su!)lB|nQR+jjM6<_;mW<`ZFQgPRt4oBPhn&%5|o zDEP?T_GHSmUsrT{8dlPzcUcd+AHNYwKJv6!-t1D>B`aU)g)<)oMSA+KJneEX``6$1 z>tB6kib@!}$#l9=^KLs<3?7y};?2iy5v?ZcCU(4eX2JXu&O=kSS8ZK&E4TjS!70r; z{qSPj*oKuyR_eE)<&>4FlQIVH>DTf8QDKI=le^2B{2LqYZsocj{G#Wj-Ej*Zq#Rxl zb2sX%=z$O4zMf%xA?$Z|7eYOqEEa#Vt8K|2)~kdV&mf<~{ge8+v}(F@`;0M;;~y7Y zZ)dYt+6S@#8wRSxvV(-6y}yel;%o!K|&q49_5o?h`Ly_i4F`S^(WAw{uoufE7D|xFz zPrE$s+~G|9T3-oInjEuje<(iw)JM-Ugm05}TE$#FA#C@G^x1Xphq#i=EfYMhHtqjW ze~-J>ihp!;x^W@#NQZV)JaZ3B9~YhdrhDynFMD@i$i4aL^$EerJHlzMZ9(g1{Wi3} z^Khs0e)m7lj(fXx@o!G{sb38AE>YP|8_W6Maz1hN(=CTDZvAF@gka$_gFng%&U%CP zq>AIZ3vT*gZ7rVTdWoSdge2~0Ip?ZYxKxBByTb@|6;s%0l-LA>B1LWsLOm(OJ86Zo z<_5l0D>%0>@UOK(Yzu=fq!P!4U274uI1Vv&^niE9kB9rEY}2R*wD)9u0kVEOSyPpHE&n0nV?ZeSqL5}dfg6a z2+pk256OqWs!P|ZP2I$w%LaF5oY*U=yX_; z+kjDvX*)raIugS{w+NclDx8aP9hh`9SK{x5D z)#12SVjPAPA74js-ek~j0U0XvYZk0i*Of+&N-&1&bseCQF`ALD*A+o)CS_Zs*Y1KA zC|qk3Vu66XDs>onmij&1?&3nB+!MGYaStb-AZVBl!1nH z((@h-gtE;BT}A`N@5`d}x)Nwjq)PSIYk!4i5c+it*0%mgtWfu0?Qnz)f}3BkZYx4G z?9nSeu!Yu9aGM^?M|ldxUl_DUJZaTj|8jVmi3ECl9!zu{vEi_sowKUCjT`+NIOmgDv zoC%Gbr4wiro|ZMt7A%ieSV*Z+qVM@|U%|PzfiLqFVtX0*P(Pu#mq9lR%MOhTwYY+O z3oT4sZoQfbW!nwf{upiEf?G(iZVH89s1-cM23bI%Dxl@4&>Lt}4CXsc1dMxXtC~hE zKfzy!-D%M61xfP(GcHii+XV<^I}LnxfZ)8#z@G{bVj-*pg<^;mfkGLsO+o11-oiCQ zuy%TR=m&(NMJ~8G$Mq0H)5=4)5Q-8xKUAihu&7mt27yjQ@h4jd&aDmFN-c2%Cb(g= zr63efA>A2-jHnt`_?AH$xN?AKFrz&5Q+cQ>W@0}vb{#?=i=j&B7%5~#C`NE=9jx7f z5ViscS+y273J48A2pa{2Hj1G|Z9_B&U_Sw>3mhhe79fO6Cb+xhp=NCrE+3&Visdh~ z6=K5-yj?q?ILx4Hht5DP;a-mbJwLsj;2dt?5496wAyn-J=LiGet-TN%VbCqcN=}y8 zV;J=Ox9x>8kWQF4v{&E+EC76uFd?>sLH8v{$#NOylQtaJI?xql3)ceNudhJ|j2H~1HSa(6@F?>4db@e+)a}^qf_Yi1O?P(XZ z1{#ef4E+?n_B&{Sf?G;3U$di7yvLyHh|x+T33UzE^P@Wo&U-PuK+@&Jf?B0}ENkLr zL0hYn*e#ucb;A&%W>yua(Pn6HhNST?Itj)541B-NLfJlp?o(_d$}RaDorT!_27Xo- zp?JSRcfX6WXTx<~*SxE=ufPRqie6U;jV3B)eP6xq05mEAzD6tCcatu$qQ-yHO>jPF z;LmmwVhm^+C3+5|F3&lqbx}<2y8yI;QI@_ZK=PwPq30M^eBL}3x zg5cMi;|7WvT~TL2>n~Qoh+*{vTDai$Ww35wABh+D$J)KndJFw_1?%i%r2!@Ky57*> zA>>R~lhx2VQ*Ct55JFRlKdRTZ|Cknk@Y;z8brr6K2lL;2EX1C`X0tD*reerv_Z7-O zdiGQNOErvxhMtqk&~5sY_68b8vQ&;P3=JV?VpYTTYZ0_yVNw5J?QaOR65M74Yg-I} zFGX%RLZauirw}rVZHt6k;>t_<92%92VT-HkC?icBT6vEn)K0Rx5@Z2;sRFdkh=xYZ z#>yM6*KUH=g07{y9}%J}6MCh$UY8Uv%`dEQyY#wM&?q}>^#X%b34-&P(Yh`P()`g; z(K;`aGKXn)ra_}IEnRLlLX$R9G*=(UapEpe*LaXp8`=+#f<~UkTnNzX&O*b2LYEJ0 z{~QygZWK3C7KzZPwiSEjJz)IBv{cH^&@iPXH|v6vq}E{g_tNttl7zDJ2JLo`!NRrk z!Thr%A@*Yf-`p$|e;g=8UWm{=G?zCH&2h!Rq^$#ze}TIVXjBlYwMoy<87w$oH0aLC zCOW~RrCw_sf_W>r1qSPuBSdWwyIXfp)^H8PE;lGyh`nUcrYBPu^z#ko*Cq>PmkheM zAjo@CnpP>8tk5{o&)Lu@4r>Qit-a7_&4Hg=>UFQ68K6m?)u&1WRN9aal{IPKu};?D zXEg77XtWYm7L2R(I{UQpi#E2QpFpF@gQc@gkOh=>N&&ocy5L-fg(h7pRmy7~G(VW2 zez?kChDHgHb2IF(hQf`sF6(+CL?c4vF48ubIp=&RT6f!0pkYFcJVrD0@a^V1QU zoIl3j7-(`wchYP3LBo36B3Snvp%%ys3rDP8+cXJk+v4;l`DRzCx(IXlGlfgrdts#Y#wb z1EJRN1TGdR|C1Zxi?gq_aA z5Y;##_F*f{I3;2(Lby$U$#sOVReBVn8BexEr6bf)4DCcn%IOV4Qi8Bg#LETjW+5bT zWeDK{0nT%R5}SpPl;2K-Bs;!H$uA5ciJOKHE~n-9vp3~j z*d#eS-6VwkL|4(B;%;cT6QN1*b&v%VJrt}%f}XEEStx#F;L|1xWseNH^^>LhLNQMJ z3L0*~E(P=YDMImMgKpRqX$h|`-orb^3-x{QPgq z%E+-6pawj|-2Wso&ORJb&T9~=4^Rf4BKyyh>>2|+;3eCCNLnB+0ACM@p8(nL-;pY$ z#cIw`h6aH2RseneODUHx8dgGr_F}SsO_GN?$mu>L$s?Tss#q7XMlN+06k^v3zbG0`z%TQi1aUlEnah zNRqyQ6ns7;DSjb9auGlul2q^#Qt%;3`Z7{D!TPBKt5HQ|+mN(R0WGkG6nschUTXnL zv!0}|=&7UFZ5yFc>?VLdBxw+ACj}pp6u*NMd`ObM6QJC712jDj0rYuSQlA|K$o@-N z9)qM0B&M+xD3>&Nz7{n}QUPaVoh0e!NEc2$bIhk~FOY^0Ns7Hh3O*z$w{HQe#tne% zZvynW2@wAsK%aLd+1&w1eh<)xB-!5sh`%qcbW%W!c!)54{zbsL(&@1B9cb63mN@;QXC3m2DEJY$r=4`NXn`i{*d&S zWq>RLWvN$5<#T$O2!f;!NeVWXWeZsb%aUF4Aa8}dIH zwv&l>C3Sl^c#4XU<4KZzM_GSY(!xORL(=D6NmMtPe_!UmPrR#Bnn?U18HGPIu6sjL z1^N&vOVU4vPLqG293Lmge@IeA2O%CZpBpSENQR^|DfCB{G{3W;Qv!PPlcGl84|!%J zDY7J;JV|zAWjR5%nHBgg+eEfb%G?j&T>3S(!0nyq%{BDArSp112I8YIl+e{W!O#5I8v5TvOUQf zh&RdlU!^?%DZ&zlLuJEvC3zwXJQb8J$CD&|n5@4mi61WW?@G!iSLVxQzMN4WB=yZW z+2BKxqCUYNl12DK1x+MHmZVRTF{o@@L>swnjlI?tut-c+OgV7xfCd_S0=reL%Oz%=Dp_XA+=5wn#TUyktyQGy@GVo5gR z*ykkuIacKmWB|wFNCt9jCrLfW><%M`5!Dj8khckBEs!vqpkBM$8^c zWkR=n4JM}zn3S)LS}oB}4N3mE%CFcZKOg7NGMrprYz6VdkxOD};b>IUYsOJJsQ z>@_h#kzo3L17e$QluT`}S3MS)0Z1wvpuT7ih@4#ETreh%i&Wu$pY zjQtfb47Irerlbd$BgD){=ahko=?Nyg49o(!o*0X0Fnf9;<3(&u4`jTZ2rD9%us%IO zB=rJeAB{B2FbJtNQQSFVF8iUsosjOsJirx~Wh2DX{RMyB(J*u;z^HnSZhK4;YeAiiK` z5?j~-5?fi#Kveo=KV&p25E+%S;~-SqnTH-?2OB|RCp$}G7i$;QRgCo;@Uq1aFpF-0xrWhR0%kig z&xyH#d2$m>QZks8H^JP(>P3uG3Yh3yV7|kmbPLQeVzjrxe2>NGHkh1LFk6Yai>2o~ zFrH~(Oy7aIk8w)OWn%2_fO&v%dIwBVI+!EGJi<8r9!$_sFxlUO`3d8cn0v(3{{hU; zSRsA@GcN&rX(NC_r%mxF~48H#1w#;^9vXk6}wH0MIo5>&%wB<*sSMZwiEN5 znA$4V<^`CfF<@4{0OJAw5aTo!O!Ti{>cT(2f;mQv_9dA5@Xt#yIpe@=CFUde=M@;w z@nB4^z%+z^h`CIR{cA9d;h)!Fiar5zgcvXQ=Ql7x6I7P$fj8e;y0ABelZd`I0fzN| zhoLW=^gEb&MPM!x(+p1f15Ct3FysFK696X>^OBf=H(>N|(i<=(lfZmWOmjHtEtr_e zVCK996AUL2V=+Z#HK#q_iEpWzGmD3dptCu#uxJH~SXd-YeYcX>kW?Fk>FP8Mc3o6R z*jB}gRY-Y^m_LYVuVNi}Fgeq~e8z(bSFzW`c+LRRPYtGnimg?HxlD|e223Xvi`9TB znh9nPFHlz@hbKsF~^AMVhP3sk6D7rDF*Wg7*!%G zTm`3kE&$=y3(KdO&0GZHG7-^MNHYY3(F$pb7J@mo0<}qjPl*Xy1g4)gY|`LUYcThS zv9bX(6h5^9GjH*`eaL6Rv9_QimcTH@7KYhyEHN*MSs8`whhsiOq4_0C!9;flGXkTw z8jn2-Tuw3%!@<5poLLNpdP`OmZ5ApA+PCxD1lrD?tmi zHPOnMn7=j29c#dBB}TyfbtX@&1!HmsGY9h*3_lk>a)D%+y(H(sLnPi!P?1-!`HKsp!dj#6;Ic8#lu< zb;%D~z-a4%`2wD)M}F7}W-BpU;hFkiUJ_%f52h5JA*N&-82bi%Z~V7Ujg|7NVD#>n zCHuJ%{}s_yHjv8Uf2?R(|Au^5Z4SN`u*OX+-_}9-xvuzRvp4;=13eh1Y{9BD;tz^B z#+lPnOyKU|dqrI-a>NP~)QNZ3R;vbripV27_H8GAp_pK-z4XfoQz30Bz6aaVnfDY1 z`qU5&Z+7M_w8i*lw+dCDvB*rL zQ_5+Hru2z7uMwk4(_{EZ{2z3=wiSj{TSv;;QrmN|oN%L>a^t@+GwXhQAVVf0Vx5#9 zRaiWNT7o)NmFoIu9wn>QrJdvW<(Blfi5LCN5Sdvz3MX1s#h{?ZaW%H7*z8~Uko-4q zr4Nxa5l7L3NWn+ZsSguH2Cpf|HuT+Ln#>6@N4HSQ7ofAjk&PB`lkJ#nM_(dUlEQeA zQYPtrm_KC0`7%e}oaV|Ly$yta;>#L&GPgkH=sW81GPh9X=slR7RC9b5$sE0DLa#ee z++uL_TSww6Ltl{Pl)4=J}fU&+mcy^#r1UUO;c456~Cr2lNL900RLd5C_Bq z2|z0#5;;Zz-GSaf4A2LN1wID)0{wvgzyM$%U72T+gG_vqe0Q@{uC1^fWaA^MLCoF^;f)s9+M1l?Gl*L-dI1wQ(j5Aj_S zdiG5(Df|M^OAK3qZ9plo9iW$l5`iSZ3=9T_0LefKkP4&$=|CvZ8fXKw1=<1afiNH( zhyXg!>rWjKpx2h@?FV|FipCd>CmKIAUTAzQ0hR*v#Z4-Z2BZT+feauMp!e)P2Koa1 zfc^lzt4Hr>Rt78p9Z&_Z1grpS6`W^-fGtoBumh?CH2`|a^A+$K_zn0Spo#GYcniD$ z=skv?nduL{XtM;0kr{lzyqiQ)CKAR^??S!M}Q~L5NHH62ATj~fH%+-@Bw^Pwc$Yox&RTtQ?zIy zFb9|mFc$q5qk0p9p95b2TY*yGQ(z^q8dwS}0%ie|0eZ=T-oU62&}%>R=zTXpFNMtj zW&#rcdV7rCIQtHE*^u;FTpge;P#*WF11A7l5NQEC1snnn14n>mz;<9Quns5&_Mq^+z+61Y!W}o>odD=PIeOQP z-iw|tLjDI9B>p^4r~NI1LnY%-leMs*a4wP_YL?fz*XQp zumYeh$%CHwLl>5pkVSwVXb!XhY60{WbZ1}-!mEJk09_C0rMLaS0pK8T2sjKJ0gf`` z8{V}EKsvHJ4bTg2sKnGX=bnUDJXaNnN22daIvQ!h27TfB8 z9Z(Ih0&MA}BpU>*0g7}2906rjrZ`GSj-!R!1#pwYA3-)?rz)#m@*5)96rknb3upo~ z0_1&#C>lejz6b;Y0Dqtv;0J^N)Mn}<>Z?$o70?ne0IdOPKdrY0fYt_DBgi-4^2HHB z&ZBut3oR|WwD@WOH9&*m89+n)0q_W*UbzoY&)fxQq^$?m0!mxgAY1~h1ZWPo2igH` z}OMj#G|2a+S z3Sb5(elRcuNCgH06rTlT0{N71C_t@A2QmOEgh1RvU;!{17zN}2!+~Ky9xxIZ0p!a1 zILIPkJTL|*0H~26Kp{Z!V}VbA2^2L6fr$VErU7$+DZp%CGB6V$p17&9oB=rJFs6;S$< z(tQTF0#|^`z&F4}-~w_9>YvQmNEw#D5K(0!{$O zfn&gzz)|1`a2PlQ90U#k`+8N!Segxd7HRS;U4*`m# z2$146`e(=|z)wJXK$%;=Aj}F~)K2-&5&9K)AxmC`TL6Fq-a@hkpI^y!hNUAnnxTyCitVr5CDm_ZP3qWhz`yA~XX%9(x(4LYunY7{j zPp&?`KBa zOWI~CE>|i|`Op^B8K?=opHAVZE9Elt#r~!Y-Z!TGtJ3GRho!wNL8(1;&AXMPz3uyX zC|yAL(EipFputG{-uj|_zBJ$($Pr5BWb|&BHpq&uWTNO~OB?1jkTmyd1GLW!hNKO2 zGYSK=?+gO;Kp+qR_)`D-1Ac(C)0Pr6hu#vPOMWYglQX7U1j_sifNmQ$0aQ>XWClPx zfuTS;kP4&#?E%{QwFTM$t$}EuCy?I*f4T!vz!YQ@3E35(OGX4_I1mQV&c74T0q6+O zKC&C|?&XC%VFDKm!~y*P%Ciq-4A2|s1yDRmr0r6E^VlE6Kwto11mb}NU@%|?2FWrJ zG8~yEK_&x3fHZ(wOG{cJo8h9?=Ff&I0JDHBU zKoKwj_yiaaj0463V}L@S0H6*W4U7Ut0(n5L3fsY%2y6hTBA)^4fpx%IU=2_LtOiyA zD_NnP+OfwH1Q!E~fQ7&Upct4B%mWxO7nlQV1U?6-6Sn{~P)dRAK>Bg~!Dp!h&z`xe zr?O%#3bwY4AC~qQf*RYr~Zx&J`93 zDi#TgKE)5NRWoXS-?hPTPzw>dau_@9pRB?awKPH8h(QpL<}@ z(owuBPb=;@%a3yy<>y`dV0CpJr1A0gC3mmTvYz$Ton8OF+(%lryFNVf*W9mEmU920 zGJ8T6%3%?}t1e=1i{B0fE z-$3oeH>kqONcXJDY}4RNS@1+WCp0T;L4X2k@#0;s* z`cqovbcwTpU$oix_0#?p7Rvb(d)7y^a_t?oq#|ZZRkj{!U6m6nqNj(B+0gNJ-3p8C z*6b!M_*d5KbsB1_v0>inYCl)yObX>^Pc&6ug9DE65JDhIY0 zX#

;&ryKU#+likCUD%U(9oFTx66V>n+-~>YUT?vrXg}cq*Aa$WSM`DnI%yTqru% zD=u+FYkavD zF_;SE!$JqP8);pYUuR!Z?P~tZN!Fr8GqGj{8}@{9SAIZ##te}0uqdSrcVlo*3v4&-(^Fhds7DnC{~BmCDbqmI?eqVh4r(aXxu+aL4a*L+Ux zPnK82Jak}Fkd}Yxz*c2px+;eo{2Jgr%{u?iDOie&fUj>&M`oRkfpS|XO`klc;Me8} zJqJ-h!x zSBJLl*2EPfhN_Htdew<_&4F_xYBHa3YA05lqju(_oY=M;b!Q%tni1%m6=)ZYz?Bo1 z)@{^vIeuVIOpc6WU0C-Kuw3oJ`gTPfm9tosUzMghq9BaoeJ*SUESSa*1-x=)H$9*% z9-;PkRnA+fvglUXxXRx(LmC?Sm>W%MvkS;QQaNx%`8jFP0= zgc!Y)HVZN2ElrGH&r_Aw9zl#eHRQ4Q`FaOn zS;?2noSZOw^X{_aHz>wOj47$ZEb~yiU+S<1d1^nlJ4~JA`qyDIntC4n*RUQ74Tm`f zNo+X!@r!zF8tJ9A*|(6cA9S4$U2c?Nr5tgh{6sdI;DhOeyr0!)S*Qa4dwo`the@m) zAM;~Wd|u>a&(WeKE?#)>(16*FL}@n~NUN*zBi)KS=!hBCZlt9FjLdcF1cr2n+wQMTG`6apjm5q>CM}=7yS`K zLk)vcTKk;>jSZ#cU~hNxA^y$z85OmmLyzcOn#@WwM#ax-k;AL*!`2zYMcs&v?0}Xi zC)M=X_gK5|`Xf)I754@hRE^mtvQW;dS-f`E0|)za<6#km^5M7DjoHXisJn8=%pb|B zP3d*omBB*pwO&o6A@}liUedvs*(-TfD=@SS4{E|9^O5^_=rnv2`W!mA*k-AgSEYlY zZKTkIy`kJUL8mL3ZWJQ|K3)MV}w_!*4B zixreJPOgW&B$qu*h>gA$vcH|&C>WmhVqcTtc5jyI2U)o(>+g+fe4wyE3{9~xsjL6g zeDRv6G*Ud)2NjN0Exa1`>ymVoMyny_wQLdjf%-JZk_IO$C-?L@8rc2Ej;|gfEu2r~ zibwJwSLHX|5kvDCxvuhMUG=E@0bdpp2HDVWE~ygjpz-H|{Mq7sb-UV6F#@rElphDC zT$F58Vhr2dNNr!G4<<5hk#T?zb1zUA)Anh10lH2(HKu-#CEcH{UosBm2Y6#uz?~ev zorgu>UpH3bz`({+IS$Nq%G`{0{eS9ILxs7BE2X%hG8C$vyx+f0+Nw-}(!fv-4k|qU z%avB$`!BLp1|@B8 z%;OHn*Bg0rcLUk)o@%GT;yF8L@K?R&o;r77%m5yhgALs9*S+>zB&5-)971&I#_E&P z-Y$5h5my&~^oDXwQK9d}tQw64?E93Oxa-;IhH#U7vQfb|V;nZ?&NtCiSSV*7&3ICB zGHlpM+RMtVFzMMzq;*wJOWK&9f6q?$)4U3cx%#<{(CM4>%()R3w-b8S6?#M&u2FWV z@W-1hVoc_7$=J%$CI`Lt5HWb@Q{caC<=mUKZ8K`98o?>_`DL%6V07xBYhQ z?CvF*6&8m>SSa$~?}RYRccsk#LrOVsr53zgtAD7s+%o=1TlT^Wdm`m9s-4g8KHS+Ga*@zfgyD-az_H4a3M&4o1`Rf=rwDiT34{smIia+hZt|M`va^_W&)7!4k$`2{FRmpb=xRH<+D6frcJ)%O2 zTG`Tq7>Iou*QzsXGFIJ4*Q2wvjgzwchpdzXu~J_(f7xYlcNet5-#d^z7tn=m7>jw_ zzKe7bTzYnA`dRDLX`+P>tz*g|TZcCcZ)2xwmq)j=xY(fmf4wW{(}h`&gWu(Cu}h_H z(gizzdcoyd`mOV6=@W0CaD%sboVqdZ(2dQ&{#oY@L%NRtndZH_v6qzJo^Gt`c#P?z zFrzz_Yiq6yd>YewFy-fu>fj3z$s$lWd24lGzb5nN4gOB})4OIytZ>Q`Ld)PFu|wF3w(~e9Ai;mzJ6nPI2zd#O5f>Bmn0eFTdzFkC*S(WeNe56Nvm>Saad%kS~D=Nm8V^jjOUWn2sCa@>SGEg}Q z^Pu|Sr}oajZ4-SX?va%8PKUd|{&b)_-r;6+z;Hxq5;RZ^>*A$WXnu7N-vykR$ zCzoVQ*MD+TAkG>Tzu&lhaMS8(B^Q76q-tS1jqkh@q@*V*HQdw5r|=g~KA8@T&cYYG zW_BGebydzW-2Y_wV|}|vQ;`-o_1M$64Kw947AhB8RYrOV9-GWOfE} za3Y*f_gYutt=EtJI&KTE8ch|zeTs7U=_{)`TkS)aKH*h&VQUFn<@nPBcEQgFbe{DU zaz_f9ejj+oMk5T({qqAowqU7xh-=$4sq?rodrOXmWgM-jf5l_JE@>=e862scl=^A( zr)%eb6&o+Mh~^lVkjBzs!Dpngy^!qOQtZ%Wh5xk)bEk)ZC(>C9KQw#BP-eLt(%6uN zF2|#=*i7~<=^Hbd?F!gQw^8=BG2)fORF%UI;Tic$ifvh}-3kntQ)V`6h58=9KAVmF z6m@)m#8*6j*_zEZ!6I;fwlsUP%^S{#w-0+-VQ~sEbf;Y>((#u+_VWE}s0=OXp3mFo zYBqaAY46JxKR<7>_7lyrS7brgQoP@V80zgkC%1-K%n$pxBG*d8Sm%|f*$1B)(X%bi zVHhibMPS2W(%oqL_7PJ?*3cwL<tRt77L)evu)X^2cjL)| zwzGJ3Zy1YQh3Tjqy=r#r82H8I-`a?yMC|!9!`Wiw5vUwXYrXp9$|!a%P97Tpcr7MJ z8nO1)9b)5?zG;CNe{VgFn#dgX5V`Z4a+v#SJTg>Hu2oK}grz(Ym9uS?^DGgAyL8Hf z&S14e-OW2fO8hIO{6J5a=!t_5r=0G3cW&0xWvyQ9s)*6%vQ(58s2oHa*!kqPWwW;A zR#+$pxcamy9#C4z2G5z4Ttjl%ZlrZp&XO(CtWO$Htwm0SMO-d>Lb)r4ydJ9@$-?fX z9IUWVj)Qf2{o1$ti9l0D%%WUoC_!4~gxRZO2Zj00Ejv(QaU@q7BaQ4lo2e#$x2z)O zN-mp%w64mjw?gp4x`U?{7gboO^4NaLT{)I^v5U{n^Y`OpD=d@)YP%cGG=)YL0aW3+;w5*ei^MkT3BJBoSvIJaQWLyGk3JEh#8Z|`XVjwK86ijqi$DEJyu%p z+Coy_UBA9>(K^39%_)T+o_^ykqFi>JO8ZcKB#RIEP>Qk7V@=k=4YuAf`ymfWY2k<8sb(MQL&+jJ zkNK=a?#hY8aSp%hY--ndQIY$HMzxeSdMq1FX+JbFB@5*oWWQ>odfnRDJ+30xN4e}I z(zhNn!G<{WSgELkDM=6B13sP07hk6HTdJDaLdhd!HDemXcyjO)zD!3;i_TS;=0) z_p|22R94zwbBF1DG;P_!0h*i|^wn*OF)Kbv^h9QSc1FgC(i#Ib4OHxVE7Vg}39agB zt?9?kxM^xLYa7kM(iTR|NR@>#HPh^cL$ukZ%9>g%a-&+yMkQ#fv-@$H=~YcBX@kvP z8Ky*24$Fzx9A*1W8fP8t48=}hX=l`%N(~8`8!Bdgpmt^b@2ab^FYeMvx~q0^dbeR& z8OC^Ym)JD+^K}^ayQ{WjbAM2`V#~f((mLK%FJyN2)U`|925AD+)}e96I8$=djO^4b zbBc*|H*0)L9S*A7sq8}2(lK;Q$)*%jR>p{?#&mOO>>;(i74^MKY3;M>Cp-<)l`LJY zsmx9VY4oLS2Wt+h*drT_e`%9s&BsoxbyH2-(&ghc=~~w79D46`J(wX6dNX__lMbGWHqS=w%W8i1d z=yGMwdX1+h(>Tb)22Ry9V87f`w_w|vYJ%7jK~s|n{>b;dpb2E9{^%RsY)za_o;>M^ zr9)0?SB+RH&EFWz-_O=+>bl{-t5p6x w{`lIS*2-DvOJx&omAJ4hs_L^!N)ri!(y(poG Date: Tue, 20 May 2025 23:28:59 -0500 Subject: [PATCH 04/85] feat: reformat files --- .../components/audit/audit-table/index.tsx | 4 +- .../billing/pricing-modal/index.tsx | 8 +- apps/captable/components/common/logo.tsx | 18 +-- .../onboarding/auth-form-header.tsx | 26 ++-- apps/captable/components/ui/button.tsx | 120 +++++++++--------- .../emails/AccountVerificationEmail.tsx | 5 +- apps/captable/emails/MagicLinkEmail.tsx | 5 +- apps/captable/emails/PasswordResetEmail.tsx | 5 +- apps/captable/emails/ShareUpdateEmail.tsx | 3 +- apps/captable/lib/constants/auth.ts | 2 +- apps/captable/server/company.ts | 23 ++-- apps/captable/server/esign.ts | 110 ++++++++++------ apps/captable/server/member.ts | 11 +- apps/captable/server/stripe.ts | 61 ++++++--- apps/captable/styles/hint.css | 39 +++--- 15 files changed, 245 insertions(+), 195 deletions(-) diff --git a/apps/captable/components/audit/audit-table/index.tsx b/apps/captable/components/audit/audit-table/index.tsx index 1294a28cf..bb011bc93 100644 --- a/apps/captable/components/audit/audit-table/index.tsx +++ b/apps/captable/components/audit/audit-table/index.tsx @@ -45,7 +45,9 @@ export const columns: ColumnDef[] = [ table.getIsAllPageRowsSelected() || (table.getIsSomePageRowsSelected() && "indeterminate") } - onCheckedChange={(value: boolean) => table.toggleAllPageRowsSelected(!!value)} + onCheckedChange={(value: boolean) => + table.toggleAllPageRowsSelected(!!value) + } aria-label="Select all" /> ), diff --git a/apps/captable/components/billing/pricing-modal/index.tsx b/apps/captable/components/billing/pricing-modal/index.tsx index b1151542b..2990a8d40 100644 --- a/apps/captable/components/billing/pricing-modal/index.tsx +++ b/apps/captable/components/billing/pricing-modal/index.tsx @@ -8,7 +8,10 @@ import { DialogHeader, DialogTitle, } from "@/components/ui/dialog"; -import type { PricingPlanIntervalEnum, PricingTypeEnum } from "@captable/db/schema/enums"; +import type { + PricingPlanIntervalEnum, + PricingTypeEnum, +} from "@captable/db/schema/enums"; import { api } from "@/trpc/react"; import type { TypeZodStripePortalMutationSchema } from "@/trpc/routers/billing-router/schema"; import type { RouterOutputs } from "@/trpc/shared"; @@ -114,7 +117,8 @@ function Plans({ products, subscription }: PricingProps) { /> {products.map((product: Products[number]) => { const price = product?.prices?.find( - (price: Products[number]['prices'][number]) => price.interval === billingInterval, + (price: Products[number]["prices"][number]) => + price.interval === billingInterval, ); if (!price) return null; diff --git a/apps/captable/components/common/logo.tsx b/apps/captable/components/common/logo.tsx index 891641b6a..67e80eb92 100644 --- a/apps/captable/components/common/logo.tsx +++ b/apps/captable/components/common/logo.tsx @@ -5,15 +5,15 @@ export const CaptableLogo = ({ className }: { className?: string }) => { - Captable Logo - - + Captable Logo + + diff --git a/apps/captable/components/onboarding/auth-form-header.tsx b/apps/captable/components/onboarding/auth-form-header.tsx index 2415e78d5..bceeadcb2 100644 --- a/apps/captable/components/onboarding/auth-form-header.tsx +++ b/apps/captable/components/onboarding/auth-form-header.tsx @@ -1,21 +1,21 @@ import { CaptableLogo } from "@/components/common/logo"; interface LoginFormHeaderProps { - page?: string; + page?: string; } export function AuthFormHeader({ page }: LoginFormHeaderProps) { - return ( -

-
- -
+ return ( +
+
+ +
-

- {page === "signup" - ? "Signup to Captable, Inc." - : "Login to Captable, Inc."} -

-
- ); +

+ {page === "signup" + ? "Signup to Captable, Inc." + : "Login to Captable, Inc."} +

+
+ ); } diff --git a/apps/captable/components/ui/button.tsx b/apps/captable/components/ui/button.tsx index 79b1bf40b..0b741f266 100644 --- a/apps/captable/components/ui/button.tsx +++ b/apps/captable/components/ui/button.tsx @@ -6,73 +6,73 @@ import { cn } from "@/lib/utils"; import { RiLoader5Fill } from "@remixicon/react"; const buttonVariants = cva( - "inline-flex items-center gap-x-2 justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", - { - variants: { - variant: { - default: "bg-primary text-primary-foreground hover:bg-primary/90", - destructive: - "bg-destructive text-destructive-foreground hover:bg-destructive/90", - outline: - "border border-input bg-background hover:bg-accent hover:text-accent-foreground", - secondary: - "bg-secondary text-secondary-foreground hover:bg-secondary/80", - ghost: "hover:bg-accent hover:text-accent-foreground", - link: "text-primary underline-offset-4 hover:underline", - }, - size: { - default: "h-10 px-4 py-2", - xs: "h-6 px-2.5 text-xs", - sm: "h-9 rounded-md px-3", - lg: "h-11 rounded-md px-8", - xl: "h-14 rounded-md px-8", - icon: "h-10 w-10", - }, - }, - defaultVariants: { - variant: "default", - size: "default", - }, - }, + "inline-flex items-center gap-x-2 justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-10 px-4 py-2", + xs: "h-6 px-2.5 text-xs", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + xl: "h-14 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + }, ); export interface ButtonProps - extends React.ButtonHTMLAttributes, - VariantProps { - asChild?: boolean; - loading?: boolean; - loadingText?: string; + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean; + loading?: boolean; + loadingText?: string; } const Button = React.forwardRef( - ( - { - className, - variant, - size, - children, - disabled, - loading, - loadingText, - ...props - }, - ref, - ) => { - const isLoading = loading === true; - const isDisabled = disabled ?? isLoading; + ( + { + className, + variant, + size, + children, + disabled, + loading, + loadingText, + ...props + }, + ref, + ) => { + const isLoading = loading === true; + const isDisabled = disabled ?? isLoading; - return ( - - ); - }, + return ( + + ); + }, ); Button.displayName = "Button"; diff --git a/apps/captable/emails/AccountVerificationEmail.tsx b/apps/captable/emails/AccountVerificationEmail.tsx index 5fe40bdbd..9f25794a3 100644 --- a/apps/captable/emails/AccountVerificationEmail.tsx +++ b/apps/captable/emails/AccountVerificationEmail.tsx @@ -51,10 +51,7 @@ export const AccountVerificationEmail = ({
- + {META.title} diff --git a/apps/captable/emails/MagicLinkEmail.tsx b/apps/captable/emails/MagicLinkEmail.tsx index a41d49e18..6b0ef9c71 100644 --- a/apps/captable/emails/MagicLinkEmail.tsx +++ b/apps/captable/emails/MagicLinkEmail.tsx @@ -49,10 +49,7 @@ export const MagicLinkEmail = ({ magicLink }: MagicLinkEmailProps) => (
- + {META.title} diff --git a/apps/captable/emails/PasswordResetEmail.tsx b/apps/captable/emails/PasswordResetEmail.tsx index ab32dbac3..361c7313a 100644 --- a/apps/captable/emails/PasswordResetEmail.tsx +++ b/apps/captable/emails/PasswordResetEmail.tsx @@ -49,10 +49,7 @@ export const PasswordResetEmail = ({ resetLink }: PasswordResetEmailProps) => (
- + {META.title} diff --git a/apps/captable/emails/ShareUpdateEmail.tsx b/apps/captable/emails/ShareUpdateEmail.tsx index fa433a2e6..81ad164f5 100644 --- a/apps/captable/emails/ShareUpdateEmail.tsx +++ b/apps/captable/emails/ShareUpdateEmail.tsx @@ -47,8 +47,7 @@ export const ShareUpdateEmail = ({ {senderName} has shared an update{" "} - {updateTitle} on{" "} - {META.title} + {updateTitle} on {META.title}
diff --git a/apps/captable/lib/constants/auth.ts b/apps/captable/lib/constants/auth.ts index 2f1230088..3f2e17225 100644 --- a/apps/captable/lib/constants/auth.ts +++ b/apps/captable/lib/constants/auth.ts @@ -1,5 +1,5 @@ import { env } from "@/env"; export const IS_GOOGLE_AUTH_ENABLED = !!( - env.GOOGLE_CLIENT_ID && env.GOOGLE_CLIENT_SECRET + env.GOOGLE_CLIENT_ID && env.GOOGLE_CLIENT_SECRET ); diff --git a/apps/captable/server/company.ts b/apps/captable/server/company.ts index 481466470..e4df02fa6 100644 --- a/apps/captable/server/company.ts +++ b/apps/captable/server/company.ts @@ -3,17 +3,18 @@ import { eq } from "@captable/db/utils"; import { members, companies } from "@captable/db/schema"; export const getCompanyList = async (userId: string) => { - const data = await db.select({ - id: members.id, - company: { - id: companies.id, - publicId: companies.publicId, - name: companies.name, - }, - }) - .from(members) - .innerJoin(companies, eq(members.companyId, companies.id)) - .where(eq(members.userId, userId)); + const data = await db + .select({ + id: members.id, + company: { + id: companies.id, + publicId: companies.publicId, + name: companies.name, + }, + }) + .from(members) + .innerJoin(companies, eq(members.companyId, companies.id)) + .where(eq(members.userId, userId)); return data; }; diff --git a/apps/captable/server/esign.ts b/apps/captable/server/esign.ts index 19227d259..7f2e2fc4b 100644 --- a/apps/captable/server/esign.ts +++ b/apps/captable/server/esign.ts @@ -1,5 +1,9 @@ import { dayjsExt } from "@/lib/common/dayjs"; -import { type TUploadFile, getFileFromS3, uploadFile } from "@/lib/common/uploads"; +import { + type TUploadFile, + getFileFromS3, + uploadFile, +} from "@/lib/common/uploads"; import { TAG } from "@/lib/tags"; import { AuditLogTemplate } from "@/lib/pdf-templates/audit-log-template"; import { createBucketHandler } from "@/trpc/routers/bucket-router/procedures/create-bucket"; @@ -9,7 +13,15 @@ import { PDFDocument, StandardFonts } from "pdf-lib"; import { EsignAudit } from "./audit"; import type { DBTransaction } from "@captable/db"; import { eq } from "@captable/db/utils"; -import { esignAudits, templates, templateFields, buckets, companies, members, users } from "@captable/db/schema"; +import { + esignAudits, + templates, + templateFields, + buckets, + companies, + members, + users, +} from "@captable/db/schema"; interface getEsignAuditsOptions { templateId: string; @@ -20,12 +32,15 @@ export async function getEsignAudits({ templateId, tx, }: getEsignAuditsOptions) { - const audits = await tx.select({ - id: esignAudits.id, - summary: esignAudits.summary, - occurredAt: esignAudits.occurredAt, - action: esignAudits.action, - }).from(esignAudits).where(eq(esignAudits.templateId, templateId)); + const audits = await tx + .select({ + id: esignAudits.id, + summary: esignAudits.summary, + occurredAt: esignAudits.occurredAt, + action: esignAudits.action, + }) + .from(esignAudits) + .where(eq(esignAudits.templateId, templateId)); return audits; } @@ -37,54 +52,62 @@ interface getEsignTemplateOptions { tx: DBTransaction; } -export async function getEsignTemplate({ tx, templateId }: getEsignTemplateOptions) { +export async function getEsignTemplate({ + tx, + templateId, +}: getEsignTemplateOptions) { // Get template - const [template] = await tx.select({ - id: templates.id, - name: templates.name, - orderedDelivery: templates.orderedDelivery, - message: templates.message, - companyId: templates.companyId, - bucketId: templates.bucketId, - uploaderId: templates.uploaderId, - }) - .from(templates) - .where(eq(templates.id, templateId)) - .limit(1); + const [template] = await tx + .select({ + id: templates.id, + name: templates.name, + orderedDelivery: templates.orderedDelivery, + message: templates.message, + companyId: templates.companyId, + bucketId: templates.bucketId, + uploaderId: templates.uploaderId, + }) + .from(templates) + .where(eq(templates.id, templateId)) + .limit(1); if (!template) { throw new Error("Template not found"); } // Get fields with ordering - const fields = await tx.select() + const fields = await tx + .select() .from(templateFields) .where(eq(templateFields.templateId, templateId)) .orderBy(templateFields.top); // Get bucket information - const [bucket] = await tx.select() + const [bucket] = await tx + .select() .from(buckets) .where(eq(buckets.id, template.bucketId)); // Get company information - const [company] = await tx.select({ - name: companies.name, - logo: companies.logo, - }) - .from(companies) - .where(eq(companies.id, template.companyId)); + const [company] = await tx + .select({ + name: companies.name, + logo: companies.logo, + }) + .from(companies) + .where(eq(companies.id, template.companyId)); // Get uploader information - const [uploader] = await tx.select({ - user: { - name: users.name, - email: users.email, - }, - }) - .from(members) - .innerJoin(users, eq(members.userId, users.id)) - .where(eq(members.id, template.uploaderId)); + const [uploader] = await tx + .select({ + user: { + name: users.name, + email: users.email, + }, + }) + .from(members) + .innerJoin(users, eq(members.userId, users.id)) + .where(eq(members.id, template.uploaderId)); return { ...template, @@ -114,7 +137,7 @@ interface TGetFieldValue { export const getFieldValue = ({ type, id, data, meta }: TGetFieldValue) => { const value = data?.[id]; - + const selectValue = meta?.options ? meta.options.find((val) => val.id === value)?.value : undefined; @@ -271,9 +294,12 @@ export async function completeEsignDocuments({ userAgent, bucketData, }: CompleteEsignDocumentsOptionsType) { - await db.update(templates).set({ - completedOn: new Date(), - }).where(eq(templates.id, templateId)); + await db + .update(templates) + .set({ + completedOn: new Date(), + }) + .where(eq(templates.id, templateId)); await EsignAudit.create( { diff --git a/apps/captable/server/member.ts b/apps/captable/server/member.ts index b60ec1b2a..5f48db350 100644 --- a/apps/captable/server/member.ts +++ b/apps/captable/server/member.ts @@ -59,9 +59,9 @@ export async function generateInviteToken() { } interface revokeExistingInviteTokensOptions { - memberId: string; - email: string; - tx?: DBTransaction; + memberId: string; + email: string; + tx?: DBTransaction; } export async function revokeExistingInviteTokens({ @@ -81,6 +81,9 @@ export async function revokeExistingInviteTokens({ }); await dbClient.delete(verificationTokens).where( - inArray(verificationTokens.token, verificationToken.map((item) => item.token)), + inArray( + verificationTokens.token, + verificationToken.map((item) => item.token), + ), ); } diff --git a/apps/captable/server/stripe.ts b/apps/captable/server/stripe.ts index b19ef6cb5..1a8cad5a9 100644 --- a/apps/captable/server/stripe.ts +++ b/apps/captable/server/stripe.ts @@ -2,7 +2,12 @@ import { env } from "@/env"; import { invariant } from "@/lib/error"; import Stripe from "stripe"; import { db, type DBTransaction } from "@captable/db"; -import { billingProducts, billingPrices, billingCustomers, billingSubscriptions } from "@captable/db/schema"; +import { + billingProducts, + billingPrices, + billingCustomers, + billingSubscriptions, +} from "@captable/db/schema"; import { eq } from "@captable/db/utils"; const toDateTime = (secs: number) => { @@ -27,10 +32,13 @@ export async function upsertProductRecord(product: Stripe.Product) { metadata: product.metadata, }; - await db.insert(billingProducts).values(productData).onConflictDoUpdate({ - target: [billingProducts.id], - set: productData, - }); + await db + .insert(billingProducts) + .values(productData) + .onConflictDoUpdate({ + target: [billingProducts.id], + set: productData, + }); } export async function deleteProductRecord(product: Stripe.Product) { @@ -56,10 +64,13 @@ export async function upsertPriceRecord(price: Stripe.Price) { trialPeriodDays: price.recurring?.trial_period_days ?? TRIAL_PERIOD_DAYS, }; - await db.insert(billingPrices).values(priceData).onConflictDoUpdate({ - target: [billingPrices.id], - set: priceData, - }); + await db + .insert(billingPrices) + .values(priceData) + .onConflictDoUpdate({ + target: [billingPrices.id], + set: priceData, + }); } export const manageSubscriptionStatusChange = async ( @@ -114,10 +125,13 @@ export const manageSubscriptionStatusChange = async ( : undefined, }; - await db.insert(billingSubscriptions).values({ ...data, id }).onConflictDoUpdate({ - target: [billingSubscriptions.id], - set: data, - }); + await db + .insert(billingSubscriptions) + .values({ ...data, id }) + .onConflictDoUpdate({ + target: [billingSubscriptions.id], + set: data, + }); }; interface upsertCustomerOptions { @@ -132,10 +146,14 @@ async function upsertCustomer({ customerId, }: upsertCustomerOptions) { const data = { companyId, id: customerId }; - const customer = await tx.insert(billingCustomers).values(data).onConflictDoUpdate({ - target: [billingCustomers.id], - set: data, - }).returning(); + const customer = await tx + .insert(billingCustomers) + .values(data) + .onConflictDoUpdate({ + target: [billingCustomers.id], + set: data, + }) + .returning(); return customer.id; } @@ -191,9 +209,12 @@ export async function createOrRetrieveCustomer({ : await createCustomerInStripe({ email, companyId }); if (existingCustomer && stripeCustomerId) { - await tx.update(billingCustomers).set({ - id: stripeCustomerId, - }).where(eq(billingCustomers.id, existingCustomer.id)); + await tx + .update(billingCustomers) + .set({ + id: stripeCustomerId, + }) + .where(eq(billingCustomers.id, existingCustomer.id)); return stripeCustomerId; } diff --git a/apps/captable/styles/hint.css b/apps/captable/styles/hint.css index 999bd0cdc..456245c9e 100644 --- a/apps/captable/styles/hint.css +++ b/apps/captable/styles/hint.css @@ -23,7 +23,7 @@ * Classes added: * 1) hint */ -[class*=hint--] { +[class*="hint--"] { position: relative; display: inline-block; /** @@ -34,8 +34,8 @@ */ } -[class*=hint--]:before, -[class*=hint--]:after { +[class*="hint--"]:before, +[class*="hint--"]:after { position: absolute; transform: translate3d(0, 0, 0); visibility: hidden; @@ -46,18 +46,18 @@ transition-delay: 0ms; } -[class*=hint--]:hover:before, -[class*=hint--]:hover:after { +[class*="hint--"]:hover:before, +[class*="hint--"]:hover:after { visibility: visible; opacity: 1; } -[class*=hint--]:hover:before, -[class*=hint--]:hover:after { +[class*="hint--"]:hover:before, +[class*="hint--"]:hover:after { transition-delay: 100ms; } -[class*=hint--]:before { +[class*="hint--"]:before { content: ""; position: absolute; background: transparent; @@ -67,7 +67,7 @@ z-index: 1000001; } -[class*=hint--]:after { +[class*="hint--"]:after { background: hsl(0, 0%, 22%); color: white; padding: 8px 10px; @@ -77,11 +77,11 @@ white-space: nowrap; } -[class*=hint--][aria-label]:after { +[class*="hint--"][aria-label]:after { content: attr(aria-label); } -[class*=hint--][data-hint]:after { +[class*="hint--"][data-hint]:after { content: attr(data-hint); } @@ -430,13 +430,13 @@ * Defines basic theme for tooltips. * */ -[class*=hint--] { +[class*="hint--"] { /** * tooltip body */ } -[class*=hint--]:after { +[class*="hint--"]:after { text-shadow: 0 1px 0px black; box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.3); } @@ -614,14 +614,15 @@ .hint--bounce:before, .hint--bounce:after { - transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s cubic-bezier(0.71, 1.7, 0.77, 1.24); + transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s + cubic-bezier(0.71, 1.7, 0.77, 1.24); } @supports (transition-timing-function: linear(0, 1)) { - .hint--bounce:before, .hint--bounce:after { - --spring-easing: linear(0, + --spring-easing: linear( + 0, 0.009, 0.035 2.1%, 0.141 4.4%, @@ -641,8 +642,10 @@ 0.975 57.1%, 0.997 69.8%, 1.003 76.9%, - 1); - transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.5s var(--spring-easing); + 1 + ); + transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.5s + var(--spring-easing); } } From fa2d25aa9255c68a2edca0f196b888be0c8bb9fb Mon Sep 17 00:00:00 2001 From: Puru D Date: Wed, 21 May 2025 00:36:18 -0500 Subject: [PATCH 05/85] feat: contd. type, import and query refactor --- .../components/member/member-profile.tsx | 2 +- apps/captable/jobs/member-inivite-email.ts | 4 +- apps/captable/package.json | 7 +- .../captable/server/passkey/create-passkey.ts | 78 +++++++----------- .../passkey/create-registration-options.ts | 35 ++++---- .../server/passkey/create-signin-options.ts | 31 +++---- .../captable/server/passkey/delete-passkey.ts | 32 +++---- apps/captable/server/passkey/find-passkeys.ts | 26 ++---- .../captable/server/passkey/update-passkey.ts | 36 ++++---- .../procedures/update-profile.ts | 2 +- bun.lockb | Bin 306384 -> 311336 bytes notes.md | 4 + package.json | 2 + packages/db/schema/passkeys.ts | 3 +- packages/db/utils.ts | 2 + 15 files changed, 126 insertions(+), 138 deletions(-) create mode 100644 notes.md diff --git a/apps/captable/components/member/member-profile.tsx b/apps/captable/components/member/member-profile.tsx index da228f8df..010481378 100644 --- a/apps/captable/components/member/member-profile.tsx +++ b/apps/captable/components/member/member-profile.tsx @@ -7,7 +7,7 @@ import { Avatar, AvatarImage } from "@/components/ui/avatar"; import { Button } from "@/components/ui/button"; import { Form, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -import { PayloadType } from "@/lib/constants"; +import { PayloadType } from "@/lib/types"; import type { RootPayload } from "@/lib/types"; import { compareFormDataWithInitial, diff --git a/apps/captable/jobs/member-inivite-email.ts b/apps/captable/jobs/member-inivite-email.ts index 8801881a8..edbed6a44 100644 --- a/apps/captable/jobs/member-inivite-email.ts +++ b/apps/captable/jobs/member-inivite-email.ts @@ -1,7 +1,7 @@ import MemberInviteEmail from "@/emails/MemberInviteEmail"; import { env } from "@/env"; import { BaseJob } from "@/jobs/base"; -import { constants } from "@/lib/constants"; +import { META } from "@/lib/constants/meta"; import { sendMail } from "@/server/mailer"; import { renderAsync } from "@react-email/components"; import type { Job } from "pg-boss"; @@ -38,7 +38,7 @@ export const sendMemberInviteEmail = async ( await sendMail({ to: email, - subject: `Join ${company.name} on ${constants.title}`, + subject: `Join ${company.name} on ${META.title}`, html: await renderAsync( MemberInviteEmail({ inviteLink, diff --git a/apps/captable/package.json b/apps/captable/package.json index cf9e59ab0..e6da10345 100644 --- a/apps/captable/package.json +++ b/apps/captable/package.json @@ -20,8 +20,8 @@ "@radix-ui/react-label": "^2.1.7", "@radix-ui/react-slot": "^1.2.3", "@remixicon/react": "^4.6.0", - "@simplewebauthn/browser": "^13.1.0", - "@simplewebauthn/server": "^13.1.1", + "@simplewebauthn/browser": "^10.0.0", + "@simplewebauthn/server": "^10.0.0", "@t3-oss/env-nextjs": "^0.13.4", "@tailwindcss/typography": "^0.5.16", "@tanstack/react-query": "^5.76.1", @@ -49,6 +49,7 @@ "@types/node": "^22.15.3", "@types/react": "19.1.0", "@types/react-dom": "19.1.1", - "typescript": "5.8.2" + "typescript": "5.8.2", + "@simplewebauthn/types": "^10.0.0" } } diff --git a/apps/captable/server/passkey/create-passkey.ts b/apps/captable/server/passkey/create-passkey.ts index 6a71c2298..6da74dab7 100644 --- a/apps/captable/server/passkey/create-passkey.ts +++ b/apps/captable/server/passkey/create-passkey.ts @@ -1,11 +1,13 @@ import { MAXIMUM_PASSKEYS } from "@/lib/constants/passkey"; import { getAuthenticatorOptions } from "@/lib/authenticator"; -import { CredentialDeviceTypeEnum } from "@/prisma/enums"; -import { db } from "@/server/db"; +import { db } from "@captable/db"; import type { PasskeyAudit } from "@/trpc/routers/passkey-router/schema"; import { verifyRegistrationResponse } from "@simplewebauthn/server"; import type { RegistrationResponseJSON } from "@simplewebauthn/types"; -import { Audit } from "../audit"; +import { Audit } from "@/server/audit"; +import { eq, count, desc, sql } from "@captable/db/utils"; +import { passkeys, passkeyVerificationTokens } from "@captable/db/schema"; +import type { Passkey } from "@captable/db/schema/passkeys"; type CreatePasskeyOptions = { userId: string; @@ -20,45 +22,24 @@ export const createPasskey = async ({ verificationResponse, auditMetaData, }: CreatePasskeyOptions) => { - const { _count, name } = await db.user.findFirstOrThrow({ - where: { - id: userId, - }, - include: { - _count: { - select: { - passkeys: true, - }, - }, - }, - }); + const passKey = await db.select({ name: passkeys.name, count: count() }).from(passkeys).where(eq(passkeys.userId, userId)); - if (_count.passkeys >= MAXIMUM_PASSKEYS) { + if (passKey.length >= MAXIMUM_PASSKEYS) { throw new Error("TOO_MANY_PASSKEYS"); } - const verificationToken = await db.verificationToken.findFirst({ - where: { - userId, - identifier: "PASSKEY_CHALLENGE", - }, - orderBy: { - createdAt: "desc", - }, + const verificationToken = await db.query.passkeyVerificationTokens.findFirst({ + orderBy: desc(passkeyVerificationTokens.createdAt), + where: eq(passkeyVerificationTokens.id, userId), }); if (!verificationToken) { throw new Error("Challenge token not found"); } - await db.verificationToken.deleteMany({ - where: { - userId, - identifier: "PASSKEY_CHALLENGE", - }, - }); + await db.delete(passkeyVerificationTokens).where(eq(passkeyVerificationTokens.userId, userId)); - if (verificationToken.expires < new Date()) { + if (verificationToken.expiresAt < new Date()) { throw new Error("Challenge token expired"); } @@ -84,22 +65,25 @@ export const createPasskey = async ({ credentialBackedUp, } = verification.registrationInfo; - await db.$transaction(async (tx) => { - const passkey = await tx.passkey.create({ - data: { - userId, - name: passkeyName, - credentialId: Buffer.from(credentialID), - credentialPublicKey: Buffer.from(credentialPublicKey), - counter, - credentialDeviceType: - credentialDeviceType === "singleDevice" - ? CredentialDeviceTypeEnum.SINGLE_DEVICE - : CredentialDeviceTypeEnum.MULTI_DEVICE, - credentialBackedUp, - transports: verificationResponse.response.transports, - }, - }); + await db.transaction(async (tx) => { + // Generate a random ID for the passkey + const passkeyId = crypto.randomUUID(); + + const passkeyRecords = await tx.insert(passkeys).values({ + id: passkeyId, + userId: userId, + name: passkeyName, + credentialId: Buffer.from(credentialID).toString('base64'), + credentialPublicKey: Buffer.from(credentialPublicKey).toString('base64'), + counter, + credentialDeviceType: credentialDeviceType === "singleDevice" ? "SINGLE_DEVICE" : "MULTI_DEVICE", + credentialBackedUp, + transports: verificationResponse.response.transports || [], + createdAt: new Date(), + updatedAt: new Date() + }).returning(); + + const passkey = passkeyRecords[0] as Passkey; const { requestIp, userAgent, companyId } = auditMetaData; diff --git a/apps/captable/server/passkey/create-registration-options.ts b/apps/captable/server/passkey/create-registration-options.ts index cb537b2ab..758f8d167 100644 --- a/apps/captable/server/passkey/create-registration-options.ts +++ b/apps/captable/server/passkey/create-registration-options.ts @@ -1,11 +1,13 @@ import { PASSKEY_TIMEOUT } from "@/lib/constants/passkey"; import { getAuthenticatorOptions } from "@/lib/authenticator"; -import { db } from "@/server/db"; +import { db } from "@captable/db"; import type { PasskeyAudit } from "@/trpc/routers/passkey-router/schema"; import { generateRegistrationOptions } from "@simplewebauthn/server"; import { isoUint8Array } from "@simplewebauthn/server/helpers"; import type { AuthenticatorTransportFuture } from "@simplewebauthn/types"; -import { Audit } from "../audit"; +import { Audit } from "@/server/audit"; +import { eq } from "@captable/db/utils"; +import { users, passkeyVerificationTokens } from "@captable/db/schema"; type CreatePasskeyRegistrationOptions = { userId: string; @@ -16,17 +18,17 @@ export const createPasskeyRegistrationOptions = async ({ userId, auditMetaData, }: CreatePasskeyRegistrationOptions) => { - const user = await db.user.findFirstOrThrow({ - where: { - id: userId, - }, - select: { - name: true, - email: true, + const user = await db.query.users.findFirst({ + where: eq(users.id, userId), + with: { passkeys: true, }, }); + if (!user) { + throw new Error("User not found"); + } + const { passkeys } = user; const { rpName, rpId: rpID } = getAuthenticatorOptions(); const options = await generateRegistrationOptions({ @@ -38,8 +40,7 @@ export const createPasskeyRegistrationOptions = async ({ timeout: PASSKEY_TIMEOUT, attestationType: "none", excludeCredentials: passkeys.map((passkey) => ({ - id: passkey.credentialId.toString("utf8"), - // eslint-disable-next-line @typescript-eslint/consistent-type-assertions + id: passkey.credentialId.toString(), transports: passkey.transports as AuthenticatorTransportFuture[], })), }); @@ -62,13 +63,11 @@ export const createPasskeyRegistrationOptions = async ({ ); }); - await db.verificationToken.create({ - data: { - userId, - token: options.challenge, - expires: new Date(new Date().getTime() + 2 * 60000), // 2 min expiry - identifier: "PASSKEY_CHALLENGE", - }, + await db.insert(passkeyVerificationTokens).values({ + id: userId, + token: options.challenge, + expiresAt: new Date(new Date().getTime() + 2 * 60000), // 2 min expiry + createdAt: new Date(), }); return options; diff --git a/apps/captable/server/passkey/create-signin-options.ts b/apps/captable/server/passkey/create-signin-options.ts index d76987a75..98ee52fb0 100644 --- a/apps/captable/server/passkey/create-signin-options.ts +++ b/apps/captable/server/passkey/create-signin-options.ts @@ -1,5 +1,6 @@ import { getAuthenticatorOptions } from "@/lib/authenticator"; -import { db } from "@/server/db"; +import { db } from "@captable/db"; +import { passkeyVerificationTokens } from "@captable/db/schema"; import { generateAuthenticationOptions } from "@simplewebauthn/server"; type CreatePasskeySigninOptions = { @@ -19,22 +20,24 @@ export const createPasskeySigninOptions = async ({ const { challenge } = options; - await db.passkeyVerificationToken.upsert({ - where: { + const expiryDate = new Date(new Date().getTime() + 2 * 60000); // 2 min expiry + + // Use insert with onConflictDoUpdate for a cleaner upsert operation + await db.insert(passkeyVerificationTokens) + .values({ id: sessionId, - }, - update: { token: challenge, - expiresAt: new Date(new Date().getTime() + 2 * 60000), // 2 min expiry + expiresAt: expiryDate, createdAt: new Date(), - }, - create: { - id: sessionId, - token: challenge, - expiresAt: new Date(new Date().getTime() + 2 * 60000), // 2 min expiry - createdAt: new Date(), - }, - }); + }) + .onConflictDoUpdate({ + target: passkeyVerificationTokens.id, + set: { + token: challenge, + expiresAt: expiryDate, + createdAt: new Date(), + } + }); return options; }; diff --git a/apps/captable/server/passkey/delete-passkey.ts b/apps/captable/server/passkey/delete-passkey.ts index 5a0894292..6a4cfdb48 100644 --- a/apps/captable/server/passkey/delete-passkey.ts +++ b/apps/captable/server/passkey/delete-passkey.ts @@ -1,6 +1,8 @@ -import { db } from "@/server/db"; +import { db } from "@captable/db"; import type { PasskeyAudit } from "@/trpc/routers/passkey-router/schema"; -import { Audit } from "../audit"; +import { Audit } from "@/server/audit"; +import { eq, and } from "@captable/db/utils"; +import { passkeys } from "@captable/db/schema"; export interface DeletePasskeyOptions { userId: string; @@ -13,22 +15,24 @@ export const deletePasskey = async ({ passkeyId, auditMetaData, }: DeletePasskeyOptions) => { - const passkey = await db.passkey.findFirstOrThrow({ - where: { - id: passkeyId, - userId, + const passkey = await db.query.passkeys.findFirst({ + where: and( + eq(passkeys.id, passkeyId), + eq(passkeys.userId, userId), + ), + with: { + user: true, }, }); + if (!passkey) { + throw new Error("Passkey not found"); + } + const { requestIp, userAgent, companyId, userName } = auditMetaData; - await db.$transaction(async (tx) => { - await tx.passkey.delete({ - where: { - id: passkeyId, - userId, - }, - }); + await db.transaction(async (tx) => { + await tx.delete(passkeys).where(eq(passkeys.id, passkeyId)); await Audit.create( { @@ -42,7 +46,7 @@ export const deletePasskey = async ({ target: [{ type: "passkey", id: passkey.id }], summary: `${userName} deleted the Passkey ${passkey.name}`, }, - db, + tx, ); }); }; diff --git a/apps/captable/server/passkey/find-passkeys.ts b/apps/captable/server/passkey/find-passkeys.ts index d32cd8473..2c8b64fde 100644 --- a/apps/captable/server/passkey/find-passkeys.ts +++ b/apps/captable/server/passkey/find-passkeys.ts @@ -1,28 +1,16 @@ -import { db } from "@/server/db"; -import { type Prisma } from "@prisma/client"; +import { db } from "@captable/db"; +import { eq } from "@captable/db/utils"; +import { passkeys } from "@captable/db/schema"; export interface FindPasskeysOptions { userId: string; } export const findPasskeys = async ({ userId }: FindPasskeysOptions) => { - const whereClause: Prisma.PasskeyWhereInput = { - userId, - }; - - const data = await db.passkey.findMany({ - where: whereClause, - select: { - id: true, - userId: true, - name: true, - createdAt: true, - updatedAt: true, - lastUsedAt: true, - counter: true, - credentialDeviceType: true, - credentialBackedUp: true, - transports: true, + const data = await db.query.passkeys.findMany({ + where: eq(passkeys.userId, userId), + with: { + user: true, }, }); diff --git a/apps/captable/server/passkey/update-passkey.ts b/apps/captable/server/passkey/update-passkey.ts index a88c4be4e..9d8b66206 100644 --- a/apps/captable/server/passkey/update-passkey.ts +++ b/apps/captable/server/passkey/update-passkey.ts @@ -1,6 +1,8 @@ -import { db } from "@/server/db"; +import { db } from "@captable/db"; import type { PasskeyAudit } from "@/trpc/routers/passkey-router/schema"; -import { Audit } from "../audit"; +import { Audit } from "@/server/audit"; +import { eq } from "@captable/db/utils"; +import { passkeys } from "@captable/db/schema"; export interface UpdateAuthenticatorsOptions { userId: string; @@ -15,30 +17,28 @@ export const updatePasskey = async ({ name, auditMetaData, }: UpdateAuthenticatorsOptions) => { - const passkey = await db.passkey.findFirstOrThrow({ - where: { - id: passkeyId, - userId, + const passkey = await db.query.passkeys.findFirst({ + where: eq(passkeys.id, passkeyId), + with: { + user: true, }, }); + if (!passkey) { + throw new Error("Passkey not found"); + } + if (passkey.name === name) { return; } const { requestIp, userAgent, companyId, userName } = auditMetaData; - await db.$transaction(async (tx) => { - await tx.passkey.update({ - where: { - id: passkeyId, - userId, - }, - data: { - name, - updatedAt: new Date(), - }, - }); + await db.transaction(async (tx) => { + await tx.update(passkeys).set({ + name, + updatedAt: new Date(), + }).where(eq(passkeys.id, passkeyId)); await Audit.create( { @@ -52,7 +52,7 @@ export const updatePasskey = async ({ target: [{ type: "passkey", id: passkey.id }], summary: `${userName} updated the Passkey ${passkey.name}`, }, - db, + tx, ); }); }; diff --git a/apps/captable/trpc/routers/member-router/procedures/update-profile.ts b/apps/captable/trpc/routers/member-router/procedures/update-profile.ts index 371d22523..82fe28ee5 100644 --- a/apps/captable/trpc/routers/member-router/procedures/update-profile.ts +++ b/apps/captable/trpc/routers/member-router/procedures/update-profile.ts @@ -1,4 +1,4 @@ -import { PayloadType } from "@/lib/constants"; +import { PayloadType } from "@/lib/types"; import { Audit } from "@/server/audit"; import { withAuth } from "@/trpc/api/trpc"; import { ZodUpdateProfileMutationSchema } from "../schema"; diff --git a/bun.lockb b/bun.lockb index af4fceed5e9a14afe7813806a04b0cb8d6475137..4f0419af8ffd366a801db4242cbf6034d4e2fe57 100755 GIT binary patch delta 62860 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 eBjO$RFuo3L%Te1_7$x0YxQ9X3^kPqg31g delta 60513 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 diff --git a/notes.md b/notes.md new file mode 100644 index 000000000..f4a5e3f0d --- /dev/null +++ b/notes.md @@ -0,0 +1,4 @@ +TODO + +- [ ] Remove passkey login +- [ ] Remove stripe subscription diff --git a/package.json b/package.json index 67496431c..e517e0a92 100644 --- a/package.json +++ b/package.json @@ -30,11 +30,13 @@ "@react-email/components": "^0.0.41", "@react-pdf/renderer": "^4.3.0", "@sentry/nextjs": "^9.22.0", + "@simplewebauthn/types": "^12.0.0", "@tanstack/react-table": "^8.21.3", "autoprefixer": "^10.4.21", "lefthook": "^1.11.13", "nodemailer": "^7.0.3", "pdf-lib": "^1.17.1", + "pg-boss": "^10.2.0", "stripe": "^18.1.1" } } diff --git a/packages/db/schema/passkeys.ts b/packages/db/schema/passkeys.ts index 50b04b0d4..6af77344b 100644 --- a/packages/db/schema/passkeys.ts +++ b/packages/db/schema/passkeys.ts @@ -44,4 +44,5 @@ export const passkeys = createTable( }, ); -export const passkeySelectSchema = createSelectSchema(passkeys); +export const PassKeySchema = createSelectSchema(passkeys); +export type Passkey = typeof passkeys.$inferSelect; diff --git a/packages/db/utils.ts b/packages/db/utils.ts index c583adff4..cc2855462 100644 --- a/packages/db/utils.ts +++ b/packages/db/utils.ts @@ -18,6 +18,7 @@ import { desc, asc, sql, + count, type AnyColumn, type SQLWrapper, } from "drizzle-orm"; @@ -42,6 +43,7 @@ export { desc, // Sort in descending order asc, // Sort in ascending order sql, // Raw SQL expression + count, // Count the number of rows }; /** From a6d890ddbe2659f80d340a5b6a40760a05446cd9 Mon Sep 17 00:00:00 2001 From: Puru D Date: Wed, 21 May 2025 01:01:33 -0500 Subject: [PATCH 06/85] feat: export proper schema and their types, and reformat --- .../captable/server/passkey/create-passkey.ts | 44 ++++++++++------- .../passkey/create-registration-options.ts | 2 +- .../server/passkey/create-signin-options.ts | 7 +-- .../captable/server/passkey/delete-passkey.ts | 5 +- .../captable/server/passkey/update-passkey.ts | 11 +++-- packages/db/schema/access-tokens.ts | 3 +- packages/db/schema/accounts.ts | 4 +- packages/db/schema/audits.ts | 3 +- packages/db/schema/bank-accounts.ts | 3 +- packages/db/schema/billing.ts | 12 +++-- packages/db/schema/buckets.ts | 3 +- packages/db/schema/companies.ts | 3 +- packages/db/schema/convertible-notes.ts | 3 +- packages/db/schema/data-rooms.ts | 14 +++--- packages/db/schema/documents.ts | 6 ++- packages/db/schema/equity-plans.ts | 3 +- packages/db/schema/investments.ts | 3 +- packages/db/schema/members.ts | 6 ++- packages/db/schema/options.ts | 3 +- packages/db/schema/passkeys.ts | 2 +- packages/db/schema/safes.ts | 3 +- packages/db/schema/sessions.ts | 3 +- packages/db/schema/share-classes.ts | 3 +- packages/db/schema/shares.ts | 3 +- packages/db/schema/stakeholders.ts | 3 +- packages/db/schema/templates.ts | 9 ++-- packages/db/schema/updates.ts | 6 ++- packages/db/schema/users.ts | 3 +- packages/db/schema/verification-tokens.ts | 12 +++-- update-schema-exports.sh | 47 +++++++++++++++++++ 30 files changed, 163 insertions(+), 69 deletions(-) create mode 100755 update-schema-exports.sh diff --git a/apps/captable/server/passkey/create-passkey.ts b/apps/captable/server/passkey/create-passkey.ts index 6da74dab7..845f6fdb7 100644 --- a/apps/captable/server/passkey/create-passkey.ts +++ b/apps/captable/server/passkey/create-passkey.ts @@ -22,7 +22,10 @@ export const createPasskey = async ({ verificationResponse, auditMetaData, }: CreatePasskeyOptions) => { - const passKey = await db.select({ name: passkeys.name, count: count() }).from(passkeys).where(eq(passkeys.userId, userId)); + const passKey = await db + .select({ name: passkeys.name, count: count() }) + .from(passkeys) + .where(eq(passkeys.userId, userId)); if (passKey.length >= MAXIMUM_PASSKEYS) { throw new Error("TOO_MANY_PASSKEYS"); @@ -37,7 +40,9 @@ export const createPasskey = async ({ throw new Error("Challenge token not found"); } - await db.delete(passkeyVerificationTokens).where(eq(passkeyVerificationTokens.userId, userId)); + await db + .delete(passkeyVerificationTokens) + .where(eq(passkeyVerificationTokens.userId, userId)); if (verificationToken.expiresAt < new Date()) { throw new Error("Challenge token expired"); @@ -68,20 +73,27 @@ export const createPasskey = async ({ await db.transaction(async (tx) => { // Generate a random ID for the passkey const passkeyId = crypto.randomUUID(); - - const passkeyRecords = await tx.insert(passkeys).values({ - id: passkeyId, - userId: userId, - name: passkeyName, - credentialId: Buffer.from(credentialID).toString('base64'), - credentialPublicKey: Buffer.from(credentialPublicKey).toString('base64'), - counter, - credentialDeviceType: credentialDeviceType === "singleDevice" ? "SINGLE_DEVICE" : "MULTI_DEVICE", - credentialBackedUp, - transports: verificationResponse.response.transports || [], - createdAt: new Date(), - updatedAt: new Date() - }).returning(); + + const passkeyRecords = await tx + .insert(passkeys) + .values({ + id: passkeyId, + userId: userId, + name: passkeyName, + credentialId: Buffer.from(credentialID).toString("base64"), + credentialPublicKey: + Buffer.from(credentialPublicKey).toString("base64"), + counter, + credentialDeviceType: + credentialDeviceType === "singleDevice" + ? "SINGLE_DEVICE" + : "MULTI_DEVICE", + credentialBackedUp, + transports: verificationResponse.response.transports || [], + createdAt: new Date(), + updatedAt: new Date(), + }) + .returning(); const passkey = passkeyRecords[0] as Passkey; diff --git a/apps/captable/server/passkey/create-registration-options.ts b/apps/captable/server/passkey/create-registration-options.ts index 758f8d167..01f1a13cb 100644 --- a/apps/captable/server/passkey/create-registration-options.ts +++ b/apps/captable/server/passkey/create-registration-options.ts @@ -7,7 +7,7 @@ import { isoUint8Array } from "@simplewebauthn/server/helpers"; import type { AuthenticatorTransportFuture } from "@simplewebauthn/types"; import { Audit } from "@/server/audit"; import { eq } from "@captable/db/utils"; -import { users, passkeyVerificationTokens } from "@captable/db/schema"; +import { users, passkeyVerificationTokens } from "@captable/db/schema"; type CreatePasskeyRegistrationOptions = { userId: string; diff --git a/apps/captable/server/passkey/create-signin-options.ts b/apps/captable/server/passkey/create-signin-options.ts index 98ee52fb0..883017c0f 100644 --- a/apps/captable/server/passkey/create-signin-options.ts +++ b/apps/captable/server/passkey/create-signin-options.ts @@ -21,9 +21,10 @@ export const createPasskeySigninOptions = async ({ const { challenge } = options; const expiryDate = new Date(new Date().getTime() + 2 * 60000); // 2 min expiry - + // Use insert with onConflictDoUpdate for a cleaner upsert operation - await db.insert(passkeyVerificationTokens) + await db + .insert(passkeyVerificationTokens) .values({ id: sessionId, token: challenge, @@ -36,7 +37,7 @@ export const createPasskeySigninOptions = async ({ token: challenge, expiresAt: expiryDate, createdAt: new Date(), - } + }, }); return options; diff --git a/apps/captable/server/passkey/delete-passkey.ts b/apps/captable/server/passkey/delete-passkey.ts index 6a4cfdb48..59e18b8f6 100644 --- a/apps/captable/server/passkey/delete-passkey.ts +++ b/apps/captable/server/passkey/delete-passkey.ts @@ -16,10 +16,7 @@ export const deletePasskey = async ({ auditMetaData, }: DeletePasskeyOptions) => { const passkey = await db.query.passkeys.findFirst({ - where: and( - eq(passkeys.id, passkeyId), - eq(passkeys.userId, userId), - ), + where: and(eq(passkeys.id, passkeyId), eq(passkeys.userId, userId)), with: { user: true, }, diff --git a/apps/captable/server/passkey/update-passkey.ts b/apps/captable/server/passkey/update-passkey.ts index 9d8b66206..5ceae73b6 100644 --- a/apps/captable/server/passkey/update-passkey.ts +++ b/apps/captable/server/passkey/update-passkey.ts @@ -35,10 +35,13 @@ export const updatePasskey = async ({ const { requestIp, userAgent, companyId, userName } = auditMetaData; await db.transaction(async (tx) => { - await tx.update(passkeys).set({ - name, - updatedAt: new Date(), - }).where(eq(passkeys.id, passkeyId)); + await tx + .update(passkeys) + .set({ + name, + updatedAt: new Date(), + }) + .where(eq(passkeys.id, passkeyId)); await Audit.create( { diff --git a/packages/db/schema/access-tokens.ts b/packages/db/schema/access-tokens.ts index 123b5ba50..380ad34b7 100644 --- a/packages/db/schema/access-tokens.ts +++ b/packages/db/schema/access-tokens.ts @@ -35,4 +35,5 @@ export const accessTokens = createTable( }, ); -export const accessTokenSelectSchema = createSelectSchema(accessTokens); +export const AccessTokenSchema = createSelectSchema(accessTokens); +export type AccessToken = typeof accessTokens.$inferSelect; diff --git a/packages/db/schema/accounts.ts b/packages/db/schema/accounts.ts index 0eb5fec59..3c1dcf864 100644 --- a/packages/db/schema/accounts.ts +++ b/packages/db/schema/accounts.ts @@ -32,4 +32,6 @@ export const accounts = createTable( }, ); -export const accountSelectSchema = createSelectSchema(accounts); +export const UaccountsSchema = createSelectSchema(accounts); +export type Uaccounts = typeof accounts.$inferSelect; +export type Account = typeof accounts.$inferSelect; diff --git a/packages/db/schema/audits.ts b/packages/db/schema/audits.ts index c19435c56..a4647de36 100644 --- a/packages/db/schema/audits.ts +++ b/packages/db/schema/audits.ts @@ -26,4 +26,5 @@ export const audits = createTable( }, ); -export const auditSelectSchema = createSelectSchema(audits); +export const AuditSchema = createSelectSchema(audits); +export type Audit = typeof audits.$inferSelect; diff --git a/packages/db/schema/bank-accounts.ts b/packages/db/schema/bank-accounts.ts index 6090af44b..98b6497ef 100644 --- a/packages/db/schema/bank-accounts.ts +++ b/packages/db/schema/bank-accounts.ts @@ -41,4 +41,5 @@ export const bankAccounts = createTable( }, ); -export const bankAccountSelectSchema = createSelectSchema(bankAccounts); +export const BankAccountSchema = createSelectSchema(bankAccounts); +export type BankAccount = typeof bankAccounts.$inferSelect; diff --git a/packages/db/schema/billing.ts b/packages/db/schema/billing.ts index 7b5125728..6251fa955 100644 --- a/packages/db/schema/billing.ts +++ b/packages/db/schema/billing.ts @@ -23,7 +23,8 @@ export const billingProducts = createTable("billing_products", { metadata: jsonb("metadata"), }); -export const billingProductSelectSchema = createSelectSchema(billingProducts); +export const BillingProductSchema = createSelectSchema(billingProducts); +export type BillingProduct = typeof billingProducts.$inferSelect; export const billingPrices = createTable( "billing_prices", @@ -48,7 +49,8 @@ export const billingPrices = createTable( }, ); -export const billingPriceSelectSchema = createSelectSchema(billingPrices); +export const BillingPriceSchema = createSelectSchema(billingPrices); +export type BillingPrice = typeof billingPrices.$inferSelect; export const billingSubscriptions = createTable( "billing_subscriptions", @@ -91,8 +93,9 @@ export const billingSubscriptions = createTable( }, ); -export const billingSubscriptionSelectSchema = +export const BillingSubscriptionSchema = createSelectSchema(billingSubscriptions); +export type BillingSubscription = typeof billingSubscriptions.$inferSelect; export const billingCustomers = createTable( "billing_customers", @@ -108,4 +111,5 @@ export const billingCustomers = createTable( }, ); -export const billingCustomerSelectSchema = createSelectSchema(billingCustomers); +export const BillingCustomerSchema = createSelectSchema(billingCustomers); +export type BillingCustomer = typeof billingCustomers.$inferSelect; diff --git a/packages/db/schema/buckets.ts b/packages/db/schema/buckets.ts index a01798a8f..ddc0107aa 100644 --- a/packages/db/schema/buckets.ts +++ b/packages/db/schema/buckets.ts @@ -17,4 +17,5 @@ export const buckets = createTable("buckets", { updatedAt: timestamp("updated_at", { withTimezone: true }).notNull(), }); -export const bucketSelectSchema = createSelectSchema(buckets); +export const BucketSchema = createSelectSchema(buckets); +export type Bucket = typeof buckets.$inferSelect; diff --git a/packages/db/schema/companies.ts b/packages/db/schema/companies.ts index 9695b7d6c..375e1e817 100644 --- a/packages/db/schema/companies.ts +++ b/packages/db/schema/companies.ts @@ -39,4 +39,5 @@ export const companies = createTable( }, ); -export const companySelectSchema = createSelectSchema(companies); +export const CompanySchema = createSelectSchema(companies); +export type Company = typeof companies.$inferSelect; diff --git a/packages/db/schema/convertible-notes.ts b/packages/db/schema/convertible-notes.ts index 87456e2ba..46b88ffae 100644 --- a/packages/db/schema/convertible-notes.ts +++ b/packages/db/schema/convertible-notes.ts @@ -56,4 +56,5 @@ export const convertibleNotes = createTable( }, ); -export const convertibleNoteSelectSchema = createSelectSchema(convertibleNotes); +export const ConvertibleNoteSchema = createSelectSchema(convertibleNotes); +export type ConvertibleNote = typeof convertibleNotes.$inferSelect; diff --git a/packages/db/schema/data-rooms.ts b/packages/db/schema/data-rooms.ts index b98df1ef3..327a0dcad 100644 --- a/packages/db/schema/data-rooms.ts +++ b/packages/db/schema/data-rooms.ts @@ -38,7 +38,8 @@ export const dataRooms = createTable( }, ); -export const dataRoomSelectSchema = createSelectSchema(dataRooms); +export const DataRoomSchema = createSelectSchema(dataRooms); +export type DataRoom = typeof dataRooms.$inferSelect; export const dataRoomDocuments = createTable( "data_room_documents", @@ -67,8 +68,8 @@ export const dataRoomDocuments = createTable( }, ); -export const dataRoomDocumentSelectSchema = - createSelectSchema(dataRoomDocuments); +export const DataRoomDocumentSchema = createSelectSchema(dataRoomDocuments); +export type DataRoomDocument = typeof dataRoomDocuments.$inferSelect; export const dataRoomRecipients = createTable( "data_room_recipients", @@ -106,8 +107,8 @@ export const dataRoomRecipients = createTable( }, ); -export const dataRoomRecipientSelectSchema = - createSelectSchema(dataRoomRecipients); +export const DataRoomRecipientSchema = createSelectSchema(dataRoomRecipients); +export type DataRoomRecipient = typeof dataRoomRecipients.$inferSelect; export const updateRecipients = createTable( "update_recipients", @@ -142,4 +143,5 @@ export const updateRecipients = createTable( }, ); -export const updateRecipientSelectSchema = createSelectSchema(updateRecipients); +export const UpdateRecipientSchema = createSelectSchema(updateRecipients); +export type UpdateRecipient = typeof updateRecipients.$inferSelect; diff --git a/packages/db/schema/documents.ts b/packages/db/schema/documents.ts index 9675635fa..18158827e 100644 --- a/packages/db/schema/documents.ts +++ b/packages/db/schema/documents.ts @@ -40,7 +40,8 @@ export const documents = createTable( }, ); -export const documentSelectSchema = createSelectSchema(documents); +export const DocumentSchema = createSelectSchema(documents); +export type Document = typeof documents.$inferSelect; export const documentShares = createTable( "document_shares", @@ -74,4 +75,5 @@ export const documentShares = createTable( }, ); -export const documentShareSelectSchema = createSelectSchema(documentShares); +export const DocumentShareSchema = createSelectSchema(documentShares); +export type DocumentShare = typeof documentShares.$inferSelect; diff --git a/packages/db/schema/equity-plans.ts b/packages/db/schema/equity-plans.ts index 6c4ca09e2..e3f58d9ba 100644 --- a/packages/db/schema/equity-plans.ts +++ b/packages/db/schema/equity-plans.ts @@ -39,4 +39,5 @@ export const equityPlans = createTable( }, ); -export const equityPlanSelectSchema = createSelectSchema(equityPlans); +export const EquityPlanSchema = createSelectSchema(equityPlans); +export type EquityPlan = typeof equityPlans.$inferSelect; diff --git a/packages/db/schema/investments.ts b/packages/db/schema/investments.ts index 148d5ffc0..3c77c353a 100644 --- a/packages/db/schema/investments.ts +++ b/packages/db/schema/investments.ts @@ -32,4 +32,5 @@ export const investments = createTable( }, ); -export const investmentSelectSchema = createSelectSchema(investments); +export const InvestmentSchema = createSelectSchema(investments); +export type Investment = typeof investments.$inferSelect; diff --git a/packages/db/schema/members.ts b/packages/db/schema/members.ts index fe9095561..092b51090 100644 --- a/packages/db/schema/members.ts +++ b/packages/db/schema/members.ts @@ -48,7 +48,8 @@ export const members = createTable( }, ); -export const memberSelectSchema = createSelectSchema(members); +export const MemberSchema = createSelectSchema(members); +export type Member = typeof members.$inferSelect; export const customRoles = createTable( "custom_roles", @@ -70,4 +71,5 @@ export const customRoles = createTable( }, ); -export const customRoleSelectSchema = createSelectSchema(customRoles); +export const CustomRoleSchema = createSelectSchema(customRoles); +export type CustomRole = typeof customRoles.$inferSelect; diff --git a/packages/db/schema/options.ts b/packages/db/schema/options.ts index 9451a0777..48101837a 100644 --- a/packages/db/schema/options.ts +++ b/packages/db/schema/options.ts @@ -50,4 +50,5 @@ export const options = createTable( }, ); -export const optionSelectSchema = createSelectSchema(options); +export const OptionSchema = createSelectSchema(options); +export type Option = typeof options.$inferSelect; diff --git a/packages/db/schema/passkeys.ts b/packages/db/schema/passkeys.ts index 6af77344b..4d0de345d 100644 --- a/packages/db/schema/passkeys.ts +++ b/packages/db/schema/passkeys.ts @@ -44,5 +44,5 @@ export const passkeys = createTable( }, ); -export const PassKeySchema = createSelectSchema(passkeys); +export const PasskeySchema = createSelectSchema(passkeys); export type Passkey = typeof passkeys.$inferSelect; diff --git a/packages/db/schema/safes.ts b/packages/db/schema/safes.ts index 1cb777e16..077208af3 100644 --- a/packages/db/schema/safes.ts +++ b/packages/db/schema/safes.ts @@ -45,4 +45,5 @@ export const safes = createTable( }, ); -export const safeSelectSchema = createSelectSchema(safes); +export const SafeSchema = createSelectSchema(safes); +export type Safe = typeof safes.$inferSelect; diff --git a/packages/db/schema/sessions.ts b/packages/db/schema/sessions.ts index 7e559099b..6e43d95cf 100644 --- a/packages/db/schema/sessions.ts +++ b/packages/db/schema/sessions.ts @@ -18,4 +18,5 @@ export const sessions = createTable( }, ); -export const sessionSelectSchema = createSelectSchema(sessions); +export const SessionSchema = createSelectSchema(sessions); +export type Session = typeof sessions.$inferSelect; diff --git a/packages/db/schema/share-classes.ts b/packages/db/schema/share-classes.ts index e9e6df543..df4921969 100644 --- a/packages/db/schema/share-classes.ts +++ b/packages/db/schema/share-classes.ts @@ -68,4 +68,5 @@ export const shareClasses = createTable( }, ); -export const shareClassSelectSchema = createSelectSchema(shareClasses); +export const ShareClassSchema = createSelectSchema(shareClasses); +export type ShareClass = typeof shareClasses.$inferSelect; diff --git a/packages/db/schema/shares.ts b/packages/db/schema/shares.ts index 88921d0d4..d9f729b69 100644 --- a/packages/db/schema/shares.ts +++ b/packages/db/schema/shares.ts @@ -54,4 +54,5 @@ export const shares = createTable( }, ); -export const shareSelectSchema = createSelectSchema(shares); +export const ShareSchema = createSelectSchema(shares); +export type Share = typeof shares.$inferSelect; diff --git a/packages/db/schema/stakeholders.ts b/packages/db/schema/stakeholders.ts index ebed7e79d..8cf0d33f1 100644 --- a/packages/db/schema/stakeholders.ts +++ b/packages/db/schema/stakeholders.ts @@ -42,4 +42,5 @@ export const stakeholders = createTable( }, ); -export const stakeholderSelectSchema = createSelectSchema(stakeholders); +export const StakeholderSchema = createSelectSchema(stakeholders); +export type Stakeholder = typeof stakeholders.$inferSelect; diff --git a/packages/db/schema/templates.ts b/packages/db/schema/templates.ts index 7d63f90d1..f5d61efc3 100644 --- a/packages/db/schema/templates.ts +++ b/packages/db/schema/templates.ts @@ -46,7 +46,8 @@ export const templates = createTable( }, ); -export const templateSelectSchema = createSelectSchema(templates); +export const TemplateSchema = createSelectSchema(templates); +export type Template = typeof templates.$inferSelect; export const templateFields = createTable( "template_fields", @@ -91,7 +92,8 @@ export const templateFields = createTable( }, ); -export const templateFieldSelectSchema = createSelectSchema(templateFields); +export const TemplateFieldSchema = createSelectSchema(templateFields); +export type TemplateField = typeof templateFields.$inferSelect; export const esignRecipients = createTable( "esign_recipients", @@ -120,4 +122,5 @@ export const esignRecipients = createTable( }, ); -export const esignRecipientSelectSchema = createSelectSchema(esignRecipients); +export const EsignRecipientSchema = createSelectSchema(esignRecipients); +export type EsignRecipient = typeof esignRecipients.$inferSelect; diff --git a/packages/db/schema/updates.ts b/packages/db/schema/updates.ts index 6705d5960..a5d15cf28 100644 --- a/packages/db/schema/updates.ts +++ b/packages/db/schema/updates.ts @@ -34,7 +34,8 @@ export const updates = createTable( }, ); -export const updateSelectSchema = createSelectSchema(updates); +export const UpdateSchema = createSelectSchema(updates); +export type Update = typeof updates.$inferSelect; export const esignAudits = createTable( "esign_audits", @@ -68,4 +69,5 @@ export const esignAudits = createTable( }, ); -export const esignAuditSelectSchema = createSelectSchema(esignAudits); +export const EsignAuditSchema = createSelectSchema(esignAudits); +export type EsignAudit = typeof esignAudits.$inferSelect; diff --git a/packages/db/schema/users.ts b/packages/db/schema/users.ts index 19d8ecd3e..8489645a7 100644 --- a/packages/db/schema/users.ts +++ b/packages/db/schema/users.ts @@ -19,4 +19,5 @@ export const users = createTable( }, ); -export const userSelectSchema = createSelectSchema(users); +export const UserSchema = createSelectSchema(users); +export type User = typeof users.$inferSelect; diff --git a/packages/db/schema/verification-tokens.ts b/packages/db/schema/verification-tokens.ts index 341c9eda5..ec17a3c7e 100644 --- a/packages/db/schema/verification-tokens.ts +++ b/packages/db/schema/verification-tokens.ts @@ -34,8 +34,8 @@ export const verificationTokens = createTable( }, ); -export const verificationTokenSelectSchema = - createSelectSchema(verificationTokens); +export const VerificationTokenSchema = createSelectSchema(verificationTokens); +export type VerificationToken = typeof verificationTokens.$inferSelect; export const passkeyVerificationTokens = createTable( "passkey_verification_tokens", @@ -49,9 +49,11 @@ export const passkeyVerificationTokens = createTable( }, ); -export const passkeyVerificationTokenSelectSchema = createSelectSchema( +export const PasskeyVerificationTokenSchema = createSelectSchema( passkeyVerificationTokens, ); +export type PasskeyVerificationToken = + typeof passkeyVerificationTokens.$inferSelect; export const passwordResetTokens = createTable( "password_reset_tokens", @@ -71,5 +73,5 @@ export const passwordResetTokens = createTable( }, ); -export const passwordResetTokenSelectSchema = - createSelectSchema(passwordResetTokens); +export const PasswordResetTokenSchema = createSelectSchema(passwordResetTokens); +export type PasswordResetToken = typeof passwordResetTokens.$inferSelect; diff --git a/update-schema-exports.sh b/update-schema-exports.sh new file mode 100755 index 000000000..6923785e7 --- /dev/null +++ b/update-schema-exports.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +# Update all schema files to have consistent schema and type exports + +# Process files with multiple tables first +files_with_multiple_tables=( + "packages/db/schema/verification-tokens.ts" + "packages/db/schema/billing.ts" + "packages/db/schema/data-rooms.ts" +) + +# List of files to update +all_files=$(find packages/db/schema -type f -name "*.ts" -not -name "index.ts" -not -name "enums.ts" -not -name "table.ts" -not -name "relations.ts") + +# Process remaining files +for file in $all_files; do + # Skip already processed files with multiple tables + if [[ " ${files_with_multiple_tables[@]} " =~ " $file " ]]; then + echo "Skipping $file (already processed)" + continue + fi + + # Get the table name from the file + table_name=$(grep -o "export const [a-zA-Z0-9_]* = createTable" "$file" | head -1 | sed -E 's/export const ([a-zA-Z0-9_]*) = createTable.*/\1/') + + if [ -z "$table_name" ]; then + echo "No table found in $file, skipping" + continue + fi + + # Convert to PascalCase for type name + type_name=$(echo "$table_name" | sed -E 's/^([a-z])/\U\1/g') + + # Find current schema export line and replace it + if grep -q "export const.*createSelectSchema" "$file"; then + # Replace the existing schema export with the standardized format + sed -i '' -E "s/export const ([a-zA-Z0-9_]*)SelectSchema = createSelectSchema\($table_name\);/export const ${type_name}Schema = createSelectSchema($table_name);\nexport type $type_name = typeof $table_name.\$inferSelect;/g" "$file" + else + # Add the schema export if it doesn't exist + echo "export const ${type_name}Schema = createSelectSchema($table_name);" >> "$file" + echo "export type $type_name = typeof $table_name.\$inferSelect;" >> "$file" + fi + + echo "Updated $file" +done + +echo "All schema files updated!" \ No newline at end of file From fd64b86002df22128133d9e29f5e1c09657e2aa3 Mon Sep 17 00:00:00 2001 From: Puru D Date: Wed, 21 May 2025 02:42:16 -0500 Subject: [PATCH 07/85] feat: add few missing packages, few more to come --- apps/captable/package.json | 19 +++++++++++++++++++ bun.lockb | Bin 311336 -> 401456 bytes 2 files changed, 19 insertions(+) diff --git a/apps/captable/package.json b/apps/captable/package.json index e6da10345..fd227429f 100644 --- a/apps/captable/package.json +++ b/apps/captable/package.json @@ -12,35 +12,54 @@ "lint": "biome check" }, "dependencies": { + "@aws-sdk/client-s3": "^3.812.0", + "@aws-sdk/s3-request-presigner": "^3.812.0", "@captable/config": "*", "@captable/db": "*", "@captable/logger": "*", "@hookform/resolvers": "^5.0.1", + "@radix-ui/react-accordion": "^1.2.11", + "@radix-ui/react-avatar": "^1.1.10", + "@radix-ui/react-checkbox": "^1.3.2", "@radix-ui/react-dropdown-menu": "^2.1.15", "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-popover": "^1.1.14", + "@radix-ui/react-radio-group": "^1.3.7", + "@radix-ui/react-scroll-area": "^1.2.9", + "@radix-ui/react-select": "^2.2.5", "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-tooltip": "^1.2.7", "@remixicon/react": "^4.6.0", "@simplewebauthn/browser": "^10.0.0", "@simplewebauthn/server": "^10.0.0", + "@sindresorhus/slugify": "^2.2.1", "@t3-oss/env-nextjs": "^0.13.4", "@tailwindcss/typography": "^0.5.16", "@tanstack/react-query": "^5.76.1", + "@tremor/react": "^3.18.7", "@trpc/client": "^11.1.2", "@trpc/react-query": "^11.1.2", "@trpc/server": "^11.1.2", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "dayjs": "^1.11.13", "next": "^15.3.0", "next-auth": "^4.24.11", "next-nprogress-bar": "^2.4.7", + "papaparse": "^5.5.3", + "pushmodal": "^1.0.5", "react": "^19.1.0", "react-dom": "^19.1.0", + "react-dropzone": "^14.3.8", "react-hook-form": "^7.56.4", + "react-number-format": "^5.4.4", "sonner": "^2.0.3", "superjson": "^2.2.2", "tailwind-merge": "^3.3.0", "tailwindcss": "^3.4.3", "tailwindcss-animate": "^1.0.7", + "usehooks-ts": "^3.1.1", "zod": "^3.25.5" }, "devDependencies": { diff --git a/bun.lockb b/bun.lockb index 4f0419af8ffd366a801db4242cbf6034d4e2fe57..69446621877dd890ec2c337064f2d67bf6428c87 100755 GIT binary patch delta 82543 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 hM%7wJ Date: Wed, 21 May 2025 03:12:47 -0500 Subject: [PATCH 08/85] fix: fixing type and enum imports --- .../documents/data-rooms/[dataRoomPublicId]/page.tsx | 2 +- .../documents/data-rooms/components/data-room-files.tsx | 2 +- .../documents/data-rooms/components/dataroom-folders.tsx | 2 +- .../[publicId]/settings/bank-accounts/components/table.tsx | 2 +- apps/captable/app/[publicId]/page.tsx | 2 +- apps/captable/components/common/share-modal.tsx | 2 +- apps/captable/components/documents/data-room/explorer.tsx | 2 +- apps/captable/components/member/data.ts | 2 +- .../components/modals/investor/add-investor-form.tsx | 2 +- apps/captable/components/modals/share-dataroom-modal.tsx | 2 +- .../modals/stakeholder/single-stake-holder-form.tsx | 2 +- apps/captable/components/safe/safe-table/data.tsx | 2 +- apps/captable/components/safe/steps/safe-template.tsx | 2 +- apps/captable/components/securities/options/data.tsx | 2 +- .../securities/options/steps/general-details.tsx | 2 +- apps/captable/components/securities/shares/data.tsx | 2 +- .../components/securities/shares/steps/general-details.tsx | 2 +- apps/captable/components/security/passkey/data.tsx | 2 +- apps/captable/components/template/canavs-toolbar/index.tsx | 2 +- apps/captable/components/template/field-type-data.ts | 2 +- apps/captable/components/update/editor.tsx | 4 ++-- apps/captable/lib/rbac/access-control-utils.ts | 2 +- apps/captable/lib/rbac/access-control.ts | 2 +- apps/captable/lib/rbac/constants.ts | 2 +- apps/captable/providers/template-field-provider.tsx | 2 +- apps/captable/server/api/schema/shares.ts | 2 +- apps/captable/server/api/schema/stakeholder.ts | 2 +- .../server/passkey/create-authentication-option.ts | 2 +- apps/captable/trpc/routers/access-token/router.ts | 2 +- apps/captable/trpc/routers/billing-router/schema.ts | 2 +- apps/captable/trpc/routers/data-room-router/router.ts | 2 +- apps/captable/trpc/routers/safe/procedures/create-safe.ts | 7 ++----- apps/captable/trpc/routers/safe/schema.ts | 2 +- apps/captable/trpc/routers/securities-router/schema.ts | 4 ++-- apps/captable/trpc/routers/stakeholder-router/schema.ts | 2 +- apps/captable/trpc/routers/template-field-router/schema.ts | 2 +- .../routers/template-router/procedures/sign-template.ts | 2 +- .../trpc/routers/update/procedures/share-update.ts | 2 +- .../routers/update/procedures/toggle-update-visibility.ts | 2 +- 39 files changed, 42 insertions(+), 45 deletions(-) diff --git a/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/[dataRoomPublicId]/page.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/[dataRoomPublicId]/page.tsx index 958d421d8..0109a2ec1 100644 --- a/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/[dataRoomPublicId]/page.tsx +++ b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/[dataRoomPublicId]/page.tsx @@ -1,7 +1,7 @@ "use server"; import { api } from "@/trpc/server"; -import type { Bucket, DataRoom } from "@prisma/client"; +import type { Bucket, DataRoom } from "@captable/db/schema"; import { notFound } from "next/navigation"; import DataRoomFiles from "../components/data-room-files"; diff --git a/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-files.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-files.tsx index b61f7770d..fba06b359 100644 --- a/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-files.tsx +++ b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-files.tsx @@ -8,7 +8,7 @@ import { Card } from "@/components/ui/card"; import type { ShareContactType } from "@/schema/contacts"; import { api } from "@/trpc/react"; -import type { Bucket, DataRoom } from "@prisma/client"; +import type { Bucket, DataRoom } from "@captable/db/schema"; import { RiShareLine } from "@remixicon/react"; import { useDebounceCallback } from "usehooks-ts"; diff --git a/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/dataroom-folders.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/dataroom-folders.tsx index cb1af4ea8..057004896 100644 --- a/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/dataroom-folders.tsx +++ b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/dataroom-folders.tsx @@ -2,7 +2,7 @@ import { PageLayout } from "@/components/dashboard/page-layout"; import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; import { cn } from "@/lib/utils"; -import type { DataRoom } from "@prisma/client"; +import type { DataRoom } from "@captable/db/schema"; import { RiFolder3Fill as FolderIcon, RiMore2Fill as MoreIcon, diff --git a/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/components/table.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/components/table.tsx index d623f80f1..8f5499ce0 100644 --- a/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/components/table.tsx +++ b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/settings/bank-accounts/components/table.tsx @@ -1,4 +1,4 @@ -import type { BankAccount } from "@prisma/client"; +import type { BankAccount } from "@captable/db/schema"; const BankAccountsTable = () => { return <>Table; diff --git a/apps/captable/app/[publicId]/page.tsx b/apps/captable/app/[publicId]/page.tsx index 92e9f14e7..ea7c8f533 100644 --- a/apps/captable/app/[publicId]/page.tsx +++ b/apps/captable/app/[publicId]/page.tsx @@ -5,7 +5,7 @@ import { SharePageLayout } from "@/components/share/page-layout"; import { Avatar, AvatarImage } from "@/components/ui/avatar"; import UpdateRenderer from "@/components/update/renderer"; import { type JWTVerifyResult, decode } from "@/lib/jwt"; -import { UpdateStatusEnum } from "@/prisma/enums"; +import { UpdateStatusEnum } from "@captable/db/schema/enums"; import { db } from "@/server/db"; import { renderAsync } from "@react-email/components"; import { RiLock2Line } from "@remixicon/react"; diff --git a/apps/captable/components/common/share-modal.tsx b/apps/captable/components/common/share-modal.tsx index f765484d8..83c4f6925 100644 --- a/apps/captable/components/common/share-modal.tsx +++ b/apps/captable/components/common/share-modal.tsx @@ -7,7 +7,7 @@ import { Button } from "@/components/ui/button"; import MultipleSelector, { type Option } from "@/components/ui/multi-selector"; import type { ShareContactType } from "@/schema/contacts"; -import type { DataRoomRecipient, UpdateRecipient } from "@prisma/client"; +import type { DataRoomRecipient, UpdateRecipient } from "@captable/db/schema"; import { RiCheckLine as CheckIcon, RiDeleteBin2Line as DeleteIcon, diff --git a/apps/captable/components/documents/data-room/explorer.tsx b/apps/captable/components/documents/data-room/explorer.tsx index eb05342fb..7b973179c 100644 --- a/apps/captable/components/documents/data-room/explorer.tsx +++ b/apps/captable/components/documents/data-room/explorer.tsx @@ -1,7 +1,7 @@ import FileIcon from "@/components/common/file-icon"; import { Card } from "@/components/ui/card"; import { cn } from "@/lib/utils"; -import type { Bucket } from "@prisma/client"; +import type { Bucket } from "@captable/db/schema"; import Link from "next/link"; type DocumentExplorerProps = { diff --git a/apps/captable/components/member/data.ts b/apps/captable/components/member/data.ts index a3a8b17e3..eec2f30a5 100644 --- a/apps/captable/components/member/data.ts +++ b/apps/captable/components/member/data.ts @@ -1,4 +1,4 @@ -import { MemberStatusEnum } from "@/prisma/enums"; +import { MemberStatusEnum } from "@captable/db/schema/enums"; import { capitalize } from "lodash-es"; export const statusValues = Object.keys(MemberStatusEnum).map((item) => ({ diff --git a/apps/captable/components/modals/investor/add-investor-form.tsx b/apps/captable/components/modals/investor/add-investor-form.tsx index 795dc2ebf..13a544806 100644 --- a/apps/captable/components/modals/investor/add-investor-form.tsx +++ b/apps/captable/components/modals/investor/add-investor-form.tsx @@ -11,7 +11,7 @@ import { } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { camelCase } from "@/lib/utils"; -import { StakeholderTypeEnum } from "@/prisma/enums"; +import { StakeholderTypeEnum } from "@captable/db/schema/enums"; import { api } from "@/trpc/react"; import { ZodAddStakeholderMutationSchema } from "@/trpc/routers/stakeholder-router/schema"; import { zodResolver } from "@hookform/resolvers/zod"; diff --git a/apps/captable/components/modals/share-dataroom-modal.tsx b/apps/captable/components/modals/share-dataroom-modal.tsx index 9934bc8f2..af626dc2b 100644 --- a/apps/captable/components/modals/share-dataroom-modal.tsx +++ b/apps/captable/components/modals/share-dataroom-modal.tsx @@ -6,7 +6,7 @@ import ShareModal, { import { env } from "@/env"; import type { ShareContactType, ShareRecipientType } from "@/schema/contacts"; import { api } from "@/trpc/react"; -import type { DataRoom } from "@prisma/client"; +import type { DataRoom } from "@captable/db/schema"; import { toast } from "sonner"; type ShareDataRoomModalProps = { diff --git a/apps/captable/components/modals/stakeholder/single-stake-holder-form.tsx b/apps/captable/components/modals/stakeholder/single-stake-holder-form.tsx index f49147992..aa9710f3c 100644 --- a/apps/captable/components/modals/stakeholder/single-stake-holder-form.tsx +++ b/apps/captable/components/modals/stakeholder/single-stake-holder-form.tsx @@ -22,7 +22,7 @@ import { camelCase } from "@/lib/utils"; import { StakeholderRelationshipEnum, StakeholderTypeEnum, -} from "@/prisma/enums"; +} from "@captable/db/schema/enums"; import { api } from "@/trpc/react"; import type { RouterOutputs } from "@/trpc/shared"; import { useRouter } from "next/navigation"; diff --git a/apps/captable/components/safe/safe-table/data.tsx b/apps/captable/components/safe/safe-table/data.tsx index a3a8b17e3..eec2f30a5 100644 --- a/apps/captable/components/safe/safe-table/data.tsx +++ b/apps/captable/components/safe/safe-table/data.tsx @@ -1,4 +1,4 @@ -import { MemberStatusEnum } from "@/prisma/enums"; +import { MemberStatusEnum } from "@captable/db/schema/enums"; import { capitalize } from "lodash-es"; export const statusValues = Object.keys(MemberStatusEnum).map((item) => ({ diff --git a/apps/captable/components/safe/steps/safe-template.tsx b/apps/captable/components/safe/steps/safe-template.tsx index 551c4b3ae..96ca5e45b 100644 --- a/apps/captable/components/safe/steps/safe-template.tsx +++ b/apps/captable/components/safe/steps/safe-template.tsx @@ -21,7 +21,7 @@ import { import { StepperModalFooter, StepperPrev } from "@/components/ui/stepper"; import Uploader from "@/components/ui/uploader"; import { toTitleCase } from "@/lib/string"; -import { SafeTemplateEnum } from "@/prisma/enums"; +import { SafeTemplateEnum } from "@captable/db/schema/enums"; import { useFormValueState } from "@/providers/form-value-provider"; import { zodResolver } from "@hookform/resolvers/zod"; import { useState } from "react"; diff --git a/apps/captable/components/securities/options/data.tsx b/apps/captable/components/securities/options/data.tsx index a3a8b17e3..eec2f30a5 100644 --- a/apps/captable/components/securities/options/data.tsx +++ b/apps/captable/components/securities/options/data.tsx @@ -1,4 +1,4 @@ -import { MemberStatusEnum } from "@/prisma/enums"; +import { MemberStatusEnum } from "@captable/db/schema/enums"; import { capitalize } from "lodash-es"; export const statusValues = Object.keys(MemberStatusEnum).map((item) => ({ diff --git a/apps/captable/components/securities/options/steps/general-details.tsx b/apps/captable/components/securities/options/steps/general-details.tsx index ef0666eee..1ea2f89b8 100644 --- a/apps/captable/components/securities/options/steps/general-details.tsx +++ b/apps/captable/components/securities/options/steps/general-details.tsx @@ -24,7 +24,7 @@ import { useStepper, } from "@/components/ui/stepper"; import { toTitleCase } from "@/lib/string"; -import { OptionStatusEnum, OptionTypeEnum } from "@/prisma/enums"; +import { OptionStatusEnum, OptionTypeEnum } from "@captable/db/schema/enums"; import { useStockOptionFormValues } from "@/providers/stock-option-form-provider"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; diff --git a/apps/captable/components/securities/shares/data.tsx b/apps/captable/components/securities/shares/data.tsx index 31b00dba6..11b5e3e81 100644 --- a/apps/captable/components/securities/shares/data.tsx +++ b/apps/captable/components/securities/shares/data.tsx @@ -1,4 +1,4 @@ -import { SecuritiesStatusEnum } from "@prisma/client"; +import { SecuritiesStatusEnum } from "@captable/db/schema/enums"; import { capitalize } from "lodash-es"; export const statusValues = Object.keys(SecuritiesStatusEnum).map((item) => ({ diff --git a/apps/captable/components/securities/shares/steps/general-details.tsx b/apps/captable/components/securities/shares/steps/general-details.tsx index b03be7edb..b7b98afa9 100644 --- a/apps/captable/components/securities/shares/steps/general-details.tsx +++ b/apps/captable/components/securities/shares/steps/general-details.tsx @@ -32,7 +32,7 @@ import { TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; -import { SecuritiesStatusEnum, ShareLegendsEnum } from "@/prisma/enums"; +import { SecuritiesStatusEnum, ShareLegendsEnum } from "@captable/db/schema/enums"; import { useAddShareFormValues } from "@/providers/add-share-form-provider"; import type { RouterOutputs } from "@/trpc/shared"; import { zodResolver } from "@hookform/resolvers/zod"; diff --git a/apps/captable/components/security/passkey/data.tsx b/apps/captable/components/security/passkey/data.tsx index a3a8b17e3..eec2f30a5 100644 --- a/apps/captable/components/security/passkey/data.tsx +++ b/apps/captable/components/security/passkey/data.tsx @@ -1,4 +1,4 @@ -import { MemberStatusEnum } from "@/prisma/enums"; +import { MemberStatusEnum } from "@captable/db/schema/enums"; import { capitalize } from "lodash-es"; export const statusValues = Object.keys(MemberStatusEnum).map((item) => ({ diff --git a/apps/captable/components/template/canavs-toolbar/index.tsx b/apps/captable/components/template/canavs-toolbar/index.tsx index db5c56b8d..4171d4202 100644 --- a/apps/captable/components/template/canavs-toolbar/index.tsx +++ b/apps/captable/components/template/canavs-toolbar/index.tsx @@ -2,7 +2,7 @@ import { Button } from "@/components/ui/button"; import { COLORS } from "@/lib/constants/esign"; -import type { FieldTypes } from "@/prisma/enums"; +import type { FieldTypes } from "@captable/db/schema/enums"; import * as Toolbar from "@radix-ui/react-toolbar"; import { FieldTypeData } from "../field-type-data"; diff --git a/apps/captable/components/template/field-type-data.ts b/apps/captable/components/template/field-type-data.ts index 58ad5f62d..b02a38d7a 100644 --- a/apps/captable/components/template/field-type-data.ts +++ b/apps/captable/components/template/field-type-data.ts @@ -1,4 +1,4 @@ -import { type FieldTypes } from "@/prisma/enums"; +import { type FieldTypes } from "@captable/db/schema/enums"; import { RiCalendar2Line, RiListCheck3, diff --git a/apps/captable/components/update/editor.tsx b/apps/captable/components/update/editor.tsx index cebde7310..a2606f5e6 100644 --- a/apps/captable/components/update/editor.tsx +++ b/apps/captable/components/update/editor.tsx @@ -8,7 +8,7 @@ import { Card } from "@/components/ui/card"; import { DropdownButton } from "@/components/ui/dropdown-button"; import { api } from "@/trpc/react"; import type { Block, PartialBlock } from "@blocknote/core"; -import type { Update } from "@prisma/client"; +import type { Update } from "@captable/db/schema"; import { RiArrowDownSLine } from "@remixicon/react"; import Link from "next/link"; import { useRouter } from "next/navigation"; @@ -18,7 +18,7 @@ import { toast } from "sonner"; import "@/styles/editor.css"; import { BlockNoteView, useCreateBlockNote } from "@blocknote/react"; import "@blocknote/react/style.css"; -import { UpdateStatusEnum } from "@/prisma/enums"; +import { UpdateStatusEnum } from "@captable/db/schema/enums"; import { pushModal } from "../modals"; import { ChangeUpdateVisibilityAlertDialog } from "./change-update-visibility-alert-dialog"; diff --git a/apps/captable/lib/rbac/access-control-utils.ts b/apps/captable/lib/rbac/access-control-utils.ts index 43d4b5010..b2f1b11ed 100644 --- a/apps/captable/lib/rbac/access-control-utils.ts +++ b/apps/captable/lib/rbac/access-control-utils.ts @@ -1,5 +1,5 @@ import { ADMIN_ROLE_ID } from "@/lib/rbac/constants"; -import type { Roles } from "@/prisma/enums"; +import type { Roles } from "@captable/db/schema/enums"; import { invariant } from "../error"; interface getRoleIdOption { diff --git a/apps/captable/lib/rbac/access-control.ts b/apps/captable/lib/rbac/access-control.ts index b0698c0c7..e93c29183 100644 --- a/apps/captable/lib/rbac/access-control.ts +++ b/apps/captable/lib/rbac/access-control.ts @@ -5,7 +5,7 @@ import { ADMIN_ROLE_ID, DEFAULT_PERMISSION, } from "@/lib/rbac/constants"; -import { Roles } from "@/prisma/enums"; +import { Roles } from "@captable/db/schema/enums"; import { checkMembership, withServerComponentSession } from "@/server/auth"; import { type TPrismaOrTransaction, db } from "@/server/db"; import type { Session } from "next-auth"; diff --git a/apps/captable/lib/rbac/constants.ts b/apps/captable/lib/rbac/constants.ts index 67fcdfcbf..1fae368fc 100644 --- a/apps/captable/lib/rbac/constants.ts +++ b/apps/captable/lib/rbac/constants.ts @@ -1,5 +1,5 @@ import type { TPermission } from "@/lib/rbac/schema"; -import type { Roles } from "@/prisma/enums"; +import type { Roles } from "@captable/db/schema/enums"; import type { TActions } from "./actions"; import { SUBJECTS } from "./subjects"; diff --git a/apps/captable/providers/template-field-provider.tsx b/apps/captable/providers/template-field-provider.tsx index 3ba63f7b4..1a2af7408 100644 --- a/apps/captable/providers/template-field-provider.tsx +++ b/apps/captable/providers/template-field-provider.tsx @@ -2,7 +2,7 @@ import { Form } from "@/components/ui/form"; import { COLORS } from "@/lib/constants/esign"; -import { FieldTypes, TemplateStatus } from "@/prisma/enums"; +import { FieldTypes, TemplateStatus } from "@captable/db/schema/enums"; import { type RouterOutputs } from "@/trpc/shared"; import { zodResolver } from "@hookform/resolvers/zod"; import { type ReactNode } from "react"; diff --git a/apps/captable/server/api/schema/shares.ts b/apps/captable/server/api/schema/shares.ts index a8401eef6..31670d530 100644 --- a/apps/captable/server/api/schema/shares.ts +++ b/apps/captable/server/api/schema/shares.ts @@ -1,4 +1,4 @@ -import { SecuritiesStatusEnum, ShareLegendsEnum } from "@/prisma/enums"; +import { SecuritiesStatusEnum, ShareLegendsEnum } from "@captable/db/schema/enums"; import { z } from "@hono/zod-openapi"; const ShareLegendsArr = Object.values(ShareLegendsEnum) as [ diff --git a/apps/captable/server/api/schema/stakeholder.ts b/apps/captable/server/api/schema/stakeholder.ts index 854ff7470..11e1599ac 100644 --- a/apps/captable/server/api/schema/stakeholder.ts +++ b/apps/captable/server/api/schema/stakeholder.ts @@ -1,7 +1,7 @@ import { StakeholderRelationshipEnum, StakeholderTypeEnum, -} from "@/prisma/enums"; +} from "@captable/db/schema/enums"; import { z } from "@hono/zod-openapi"; const StakeholderTypeArray = Object.values(StakeholderTypeEnum) as [ diff --git a/apps/captable/server/passkey/create-authentication-option.ts b/apps/captable/server/passkey/create-authentication-option.ts index e2a56039d..d04e055a5 100644 --- a/apps/captable/server/passkey/create-authentication-option.ts +++ b/apps/captable/server/passkey/create-authentication-option.ts @@ -1,7 +1,7 @@ import { getAuthenticatorOptions } from "@/lib/authenticator"; import { db } from "@/server/db"; import type { PasskeyAudit } from "@/trpc/routers/passkey-router/schema"; -import type { Passkey } from "@prisma/client"; +import type { Passkey } from "@captable/db/schema"; import { generateAuthenticationOptions } from "@simplewebauthn/server"; import type { AuthenticatorTransportFuture } from "@simplewebauthn/types"; import { Audit } from "../audit"; diff --git a/apps/captable/trpc/routers/access-token/router.ts b/apps/captable/trpc/routers/access-token/router.ts index adc33320e..67f0632c6 100644 --- a/apps/captable/trpc/routers/access-token/router.ts +++ b/apps/captable/trpc/routers/access-token/router.ts @@ -1,5 +1,5 @@ import { createSecureHash, initializeAccessToken } from "@/lib/crypto"; -import { AccessTokenType } from "@/prisma/enums"; +import { AccessTokenType } from "@captable/db/schema/enums"; import { Audit } from "@/server/audit"; import { createTRPCRouter, withAccessControl } from "@/trpc/api/trpc"; diff --git a/apps/captable/trpc/routers/billing-router/schema.ts b/apps/captable/trpc/routers/billing-router/schema.ts index c9eb94a25..59bef9e8a 100644 --- a/apps/captable/trpc/routers/billing-router/schema.ts +++ b/apps/captable/trpc/routers/billing-router/schema.ts @@ -1,4 +1,4 @@ -import { PricingType } from "@/prisma/enums"; +import { PricingType } from "@captable/db/schema/enums"; import { z } from "zod"; export const ZodCheckoutMutationSchema = z.object({ diff --git a/apps/captable/trpc/routers/data-room-router/router.ts b/apps/captable/trpc/routers/data-room-router/router.ts index 9e67218de..edcc0eaf5 100644 --- a/apps/captable/trpc/routers/data-room-router/router.ts +++ b/apps/captable/trpc/routers/data-room-router/router.ts @@ -9,7 +9,7 @@ import { ShareRecipientSchema } from "@/schema/contacts"; import { Audit } from "@/server/audit"; import { checkMembership } from "@/server/auth"; import { createTRPCRouter, withAuth } from "@/trpc/api/trpc"; -import type { DataRoom } from "@prisma/client"; +import type { DataRoom } from "@captable/db/schema"; import { z } from "zod"; import { DataRoomSchema } from "./schema"; diff --git a/apps/captable/trpc/routers/safe/procedures/create-safe.ts b/apps/captable/trpc/routers/safe/procedures/create-safe.ts index 5682eedd7..0c296551d 100644 --- a/apps/captable/trpc/routers/safe/procedures/create-safe.ts +++ b/apps/captable/trpc/routers/safe/procedures/create-safe.ts @@ -7,11 +7,10 @@ import { TAG } from "@/lib/tags"; import { Audit } from "@/server/audit"; import { checkMembership } from "@/server/auth"; import { withAuth } from "@/trpc/api/trpc"; -import type { Prisma } from "@prisma/client"; import { createBucketHandler } from "../../bucket-router/procedures/create-bucket"; import { createTemplateHandler } from "../../template-router/procedures/create-template"; import { ZodCreateSafeMutationSchema } from "../schema"; - +import type { Safe } from "@captable/db/schema"; export const createSafeProcedure = withAuth .input(ZodCreateSafeMutationSchema) .mutation(async ({ ctx, input }) => { @@ -96,9 +95,7 @@ export const createSafeProcedure = withAuth }, }); - type SafeCreateBody = Prisma.Args["data"]; - - let safeData: null | SafeCreateBody; + let safeData: Safe; if (inputRest.safeTemplate === "CUSTOM") { const { document, ...rest } = inputRest; diff --git a/apps/captable/trpc/routers/safe/schema.ts b/apps/captable/trpc/routers/safe/schema.ts index b7a5a145b..7d1f09db3 100644 --- a/apps/captable/trpc/routers/safe/schema.ts +++ b/apps/captable/trpc/routers/safe/schema.ts @@ -1,4 +1,4 @@ -import { SafeTemplateEnum } from "@/prisma/enums"; +import { SafeTemplateEnum } from "@captable/db/schema/enums"; import { z } from "zod"; import { ZodTemplateFieldRecipientSchema } from "../template-router/schema"; diff --git a/apps/captable/trpc/routers/securities-router/schema.ts b/apps/captable/trpc/routers/securities-router/schema.ts index 0bc188601..d408b0939 100644 --- a/apps/captable/trpc/routers/securities-router/schema.ts +++ b/apps/captable/trpc/routers/securities-router/schema.ts @@ -1,9 +1,9 @@ import { OptionStatusEnum, OptionTypeEnum, + SecuritiesStatusEnum, ShareLegendsEnum, -} from "@/prisma/enums"; -import { SecuritiesStatusEnum } from "@prisma/client"; +} from "@captable/db/schema/enums"; import { z } from "zod"; // OPTIONS diff --git a/apps/captable/trpc/routers/stakeholder-router/schema.ts b/apps/captable/trpc/routers/stakeholder-router/schema.ts index c1f1d596e..2865ad288 100644 --- a/apps/captable/trpc/routers/stakeholder-router/schema.ts +++ b/apps/captable/trpc/routers/stakeholder-router/schema.ts @@ -1,7 +1,7 @@ import { StakeholderRelationshipEnum, StakeholderTypeEnum, -} from "@/prisma/enums"; +} from "@captable/db/schema/enums"; import { z } from "zod"; export const ZodAddStakeholderMutationSchema = z.object({ diff --git a/apps/captable/trpc/routers/template-field-router/schema.ts b/apps/captable/trpc/routers/template-field-router/schema.ts index db84a96dc..12b9b534e 100644 --- a/apps/captable/trpc/routers/template-field-router/schema.ts +++ b/apps/captable/trpc/routers/template-field-router/schema.ts @@ -1,6 +1,6 @@ import { z } from "zod"; -import { FieldTypes, TemplateStatus } from "@/prisma/enums"; +import { FieldTypes, TemplateStatus } from "@captable/db/schema/enums"; const TemplateFieldMetaType = z.object({ options: z diff --git a/apps/captable/trpc/routers/template-router/procedures/sign-template.ts b/apps/captable/trpc/routers/template-router/procedures/sign-template.ts index fa64cc34b..7b2fba319 100644 --- a/apps/captable/trpc/routers/template-router/procedures/sign-template.ts +++ b/apps/captable/trpc/routers/template-router/procedures/sign-template.ts @@ -3,7 +3,7 @@ import { dayjsExt } from "@/lib/common/dayjs"; import { EsignNotificationEmailJob } from "@/jobs/esign-email"; import { EsignPdfJob } from "@/jobs/esign-pdf"; -import type { TemplateStatus } from "@/prisma/enums"; +import type { TemplateStatus } from "@captable/db/schema/enums"; import { EsignAudit } from "@/server/audit"; import { type CompleteEsignDocumentsOptionsType, diff --git a/apps/captable/trpc/routers/update/procedures/share-update.ts b/apps/captable/trpc/routers/update/procedures/share-update.ts index ad9349ed3..20f6353fe 100644 --- a/apps/captable/trpc/routers/update/procedures/share-update.ts +++ b/apps/captable/trpc/routers/update/procedures/share-update.ts @@ -4,7 +4,7 @@ import { type UpdateSharePayloadType, } from "@/jobs/share-update-email"; import { encode } from "@/lib/jwt"; -import { UpdateStatusEnum } from "@/prisma/enums"; +import { UpdateStatusEnum } from "@captable/db/schema/enums"; import { ShareRecipientSchema } from "@/schema/contacts"; import { Audit } from "@/server/audit"; import { checkMembership } from "@/server/auth"; diff --git a/apps/captable/trpc/routers/update/procedures/toggle-update-visibility.ts b/apps/captable/trpc/routers/update/procedures/toggle-update-visibility.ts index d1c252c01..6a0cc2a85 100644 --- a/apps/captable/trpc/routers/update/procedures/toggle-update-visibility.ts +++ b/apps/captable/trpc/routers/update/procedures/toggle-update-visibility.ts @@ -1,4 +1,4 @@ -import { UpdateStatusEnum } from "@/prisma/enums"; +import { UpdateStatusEnum } from "@captable/db/schema/enums"; import { Audit } from "@/server/audit"; import { checkMembership } from "@/server/auth"; import { withAuth } from "@/trpc/api/trpc"; From be9089e68acebc1caecabdaaec72524803b1c07b Mon Sep 17 00:00:00 2001 From: Puru D Date: Wed, 21 May 2025 03:13:37 -0500 Subject: [PATCH 09/85] chore: reformat --- .gitignore | 1 + .../components/data-room-uploader.tsx | 2 +- .../app/verify-member/[token]/page.tsx | 2 +- .../shares/steps/general-details.tsx | 5 ++++- apps/captable/package.json | 7 ++++--- apps/captable/server/api/schema/shares.ts | 5 ++++- apps/captable/trpc/api/trpc.ts | 2 +- bun.lockb | Bin 401456 -> 401928 bytes notes.md | 4 ---- 9 files changed, 16 insertions(+), 12 deletions(-) delete mode 100644 notes.md diff --git a/.gitignore b/.gitignore index 089f8b79c..a519e5c42 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ yarn-error.log* packages/prisma/* git-new +notes.md diff --git a/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-uploader.tsx b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-uploader.tsx index 46e4e5bd5..2a4b23d62 100644 --- a/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-uploader.tsx +++ b/apps/captable/app/(authenticated)/(dashboard)/[publicId]/documents/data-rooms/components/data-room-uploader.tsx @@ -4,7 +4,7 @@ import Modal from "@/components/common/modal"; import Uploader, { type UploadReturn } from "@/components/ui/uploader"; import { TAG } from "@/lib/tags"; import { api } from "@/trpc/react"; -import type { DataRoom } from "@prisma/client"; +import type { DataRoom } from "@captable/db/schema"; import { useRouter } from "next/navigation"; import { useState } from "react"; diff --git a/apps/captable/app/verify-member/[token]/page.tsx b/apps/captable/app/verify-member/[token]/page.tsx index 1d464cad6..c68b3c307 100644 --- a/apps/captable/app/verify-member/[token]/page.tsx +++ b/apps/captable/app/verify-member/[token]/page.tsx @@ -1,7 +1,7 @@ import { VerifyMemberForm } from "@/components/member/verify-member-form"; import { authOptions } from "@/server/auth"; import { checkVerificationToken } from "@/server/member"; -import { type Metadata } from "next"; +import type { Metadata } from "next"; import { getServerSession } from "next-auth"; import { redirect } from "next/navigation"; diff --git a/apps/captable/components/securities/shares/steps/general-details.tsx b/apps/captable/components/securities/shares/steps/general-details.tsx index b7b98afa9..f91099dd8 100644 --- a/apps/captable/components/securities/shares/steps/general-details.tsx +++ b/apps/captable/components/securities/shares/steps/general-details.tsx @@ -32,7 +32,10 @@ import { TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; -import { SecuritiesStatusEnum, ShareLegendsEnum } from "@captable/db/schema/enums"; +import { + SecuritiesStatusEnum, + ShareLegendsEnum, +} from "@captable/db/schema/enums"; import { useAddShareFormValues } from "@/providers/add-share-form-provider"; import type { RouterOutputs } from "@/trpc/shared"; import { zodResolver } from "@hookform/resolvers/zod"; diff --git a/apps/captable/package.json b/apps/captable/package.json index fd227429f..528d86dba 100644 --- a/apps/captable/package.json +++ b/apps/captable/package.json @@ -37,9 +37,10 @@ "@tailwindcss/typography": "^0.5.16", "@tanstack/react-query": "^5.76.1", "@tremor/react": "^3.18.7", - "@trpc/client": "^11.1.2", - "@trpc/react-query": "^11.1.2", - "@trpc/server": "^11.1.2", + "@trpc/client": "^10.43.6", + "@trpc/next": "^10.45.2", + "@trpc/react-query": "^10.43.6", + "@trpc/server": "^10.43.6", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", diff --git a/apps/captable/server/api/schema/shares.ts b/apps/captable/server/api/schema/shares.ts index 31670d530..ea0cc5c17 100644 --- a/apps/captable/server/api/schema/shares.ts +++ b/apps/captable/server/api/schema/shares.ts @@ -1,4 +1,7 @@ -import { SecuritiesStatusEnum, ShareLegendsEnum } from "@captable/db/schema/enums"; +import { + SecuritiesStatusEnum, + ShareLegendsEnum, +} from "@captable/db/schema/enums"; import { z } from "@hono/zod-openapi"; const ShareLegendsArr = Object.values(ShareLegendsEnum) as [ diff --git a/apps/captable/trpc/api/trpc.ts b/apps/captable/trpc/api/trpc.ts index 2c2a0ec95..587fec815 100644 --- a/apps/captable/trpc/api/trpc.ts +++ b/apps/captable/trpc/api/trpc.ts @@ -22,7 +22,7 @@ import { getServerAuthSession } from "@/server/auth"; import { db } from "@/server/db"; import * as Sentry from "@sentry/nextjs"; -interface Meta { +export interface Meta { policies: addPolicyOption; } diff --git a/bun.lockb b/bun.lockb index 69446621877dd890ec2c337064f2d67bf6428c87..91c1acd017d5ff146af91bbeb08a9a56f4751baa 100755 GIT binary patch delta 39422 zcmeIb33yG{`!>Ay8OSlu5)p)&N>UMV5)l#e6!Sa>kpwX%NRTGc0afF{GS6epQzHmc zRaDJX%u|cBw562L@ZR^{YbT-F-|zjt|NDK{cYQsVC--{p^{nYxi5OLhZ8;=_g;*9E`^_cGrN>Ewc55V zW_Q8(yBicGuc9RM-l!-Af#;wX1s;|B^G%9U5_A8-ng4e01l3zt=&Iou1Ej6b$ZFDyDdbSTT;FZH`S6{Rq2 z!-fp&$4b>sQj`+VD*@Sv`#@IG4al-%cI*6LAnQ0FS?BFQ*4?s4B6QZ}Gw3B1<^6=- zGxd!AQ-aElTZQfMd*E~WZX1xrHr}rn7ZK$#COjlsi5fO^Xy`~qS%P>reL9d$PL%0- z9@OpI0rP^70ndDDrRvQ~|4LCRK|gXxQQU!Rf#rZhzfhE7iV~k-g+XZ$r-3fO-9TsH z3LyP616Tw&3g`+v_>G=HH|R{~3uMMmk0?rc;A0fbin@b`KN4<8-EmB>V3BY227d&- zkTMuGL7+GcUm=1u?*g3(&m$pQ6d4g6js8-G$(Hp3vO-h7(;eSY^7~fk>DHalJyJ}f z-$~tLn;nTo+r-y}HJeuh$ZjhOV^;oG7@b>6GY{;;Yy&NNo zRgT}5rdxrHj))9ZfFUDChQyAzq&sUa;^{Q-p&?PB%6VCxZzOKKtdHVk=&b%GAe%k& zir%{~fq9{0sz=8T4^=*u`pD3b{?Q&0@livD4G4(}SCmpn$l;I&$mud5Bs$b%;Lxay zv%3FgT-W_t<%aIR;=rP?vjFMe8aH+RDeUN%SRi{j|1CY=d&q~qnkw}&w^>fSlCT8? zBO*XBqv()+{X+T;2@OXETF1SW@H9G#85@gO_aF3vTL4+{dO&($KkS&V>s_4>897+< zz!m89$XTE*9)a~R_0hR(LInN;#UT+fN5FmyWOW>ToU(2#r=I!k*RJnOnCT51pkNYk3rO8}vaswn!Km!!F0- zG%|#se5cAr{G1e(dzy&YaICF9#bW8)y2&l|~DM{ZSf*=vcRQT;|m3>ly_%%k%jz!FGT zQlcvHXPeG{59Ijy3dk7%7R~5?e^DEwKWSgQJkdOebCcNn#q1BmNtS zJ0-4=_&XXvr`;-~Y7LBs&I%0!YHNbgG9x3SK%?eH#zqUO713L0RHy`Ww$v!tXrbXD z+0q2VbB4#XhHykMK;|1*IbP4Oa%DY1DIj;Yz$*IO ziHaUMbX26Gw1tOQp)1w(mL3CAkMU5I_kcT~b2iKda&_I}saM3in%q>2$QoV+GX6M_E7x`)UA(=fo}mEJbF;zILqB<|N(Eq4 zE#2-qkm)>p^wIxzSH>HCIT#sKg<%UID^eE7X<`DhrqkZn3pfsBpWX)2)f<6q@n|3` z+6Gt|=mTT}3P}Ces=D1VU?uQV{WTB9C#(U%8h<3QACMK;6`)tBT|K?PVDKE2-auwN zBv5a8Fpw3P1ADDP_4SI(2Xau30M9OJC*x}XnSUWow_wk%x}!mvxka6px&PUEW3N?% zcBFYNo2Wi=#3l#Y%57AXdN4LS66@M+^Pn|>W^t%1?AGhhT01fu`m2GC*gb)^f}0hk zGh%Z&QtR1m!=TmDQU>+6+g3trt)&bKu-hI%tE0uGwz8|$9LakFZ9TRqN)R}!BPh^r zTLi5Uv|O5Y6B_o!go2L59==Xn6{Ri|)xnGhL#qMJb6nYF$wY&;NbX1cH1my)wOIAhuN*?q1AH)^zgTq`I1?r^!K-RM5vx4Gr-?E z3!xT{%*Fod14qVJf!0<@iqg>$hnQsuHKVodcZBFQm9LXja%oZbpwYWlZIJow(}#(o4U<@C%+jXyTawg}uBF}f6j~j` zq4(?B)jAHpqk-1JDT?ChNNMG7o6nGzYY;qe1R4jQSsPP%_vsR+4|NRW1$K44Blg=sTfT$(050HA!|k@Q(Dbp#iLwtGYi)8Q zHn3Y?K&#_OY2dF;b|fDUv<2V_a}Z+nv3MU^Urpn5Z1%OH^oEAkqtbx}3H3~~6K47A<^*V_^BU0ur& znF$)2aWc?W@~EQp%PKw=S|e&AwWR86f!0bZ&~{9B02;*M39TNTY%TXK>>ZhP{cQsf zYNqAGDYX$=d#!?)Bi7u<=>QB+TM$AVFPPflc2zi%&ji{ofa7$>dW0rhztg)0gQ10; ztI*j%s{j||$UNzS&}6qv z_jQ88(SwzwzulVa6z5q$e}A>EBjbFaEfPBWUva2i?dozz?1ezvd2p<#lOwf_-D)`v z3r9**f158tOcf3feXG=S;C@o=*VIE|+ z)x4muO&Hj%?6whE8i&@_Z0)4omI*CDOUFT2=X*UJ7LP4Xk(tN*Do6Psj2$XT>E#yPKtPXDE}VFNLUQ2VW;BY_Ua~0SBP50DT=ZUos3; z7($^TN?U>n2#wtdw>P!hc1lgJ$uC*SSoV9D^(-;{FjB*%hK@dji3^RR7`Y6#+bmb~ zk)Xk- zb0}pXrqNAfW~i&}>Zgv_JAvv!NAjIOYlT}FCytam{_0SN-w%Pdi_n{*Ow^#B-RgN; zQT!co!~Csd5ejrB#so(7Fj+Q*KqbhK{`( zsIGM+-wm|A`axf`uw29Mt$)-#ZE>V7wAk(+!Z?S)5BE$iOQ$d*BWdF(W;-`AHgr5|pp_T)3wjF{-uc2lG z?AAO#BX>vUPyW_62sP9~vy6~>!4dl)&{p(;-hc2xYhNcQOpY}GnazX7>4I^OSq<}t zfws;M6{ROQ3{@j1JXstCXY8P{A){4LKL=bS&-xi5b3s_-j z1!_6XY$XmpsSS@%I}ucayQNUyGL)e0JiJUp`0Zd;b6r3Txrg&r$P7cSA( zFoc2~DaZY7I}y?+Q_xAf`lloLQJ^*AcMgq|NB*|02}+7 z+5xRIG;t=}RKqd6u9MC7!tg&&2pyntE5fJ?v#T>5vCjh4(~jh4@wT{^#)RjB^cA#P zutUoZ*sXs+tLw2Is~r*36)(EDFO3v#41@wb^X^*U)2+16ZY+A^rlcVuJ)TF-#1 z;|K`wH|2fh82h50t?w(n!FrNq(71Lfn%lmYahRoTFlb(5UC`px)^=MvXl#P+sOiu+ zUG!DqnAG%hp&9pb7^g4d0nlndgQIrYZIRGCp<(63;rlu?I#KIGMwpKrSzGqgol?^3e z==Fq#)rALc@{Y{<{?>01s>zV;PlT##CBoKb$9*Yo=g1Z7R~$6G({Ki{Zi9xafENDN zdkEnOk7IpBtBQ3sWv;(ERb;4Yplx3+qv)V6cJ+yfHL3BY8o9*_lUh&xLim|sQv!E? zxG`W`X=7IhiDZ!0?s-(DjYu)8{?_#f2J68;vV#rtX0bD}gVzvjsoPe`hivuWi0t5= z?4UV+mO-oR;GFE>_3U8f0$H}h5p1gGo1_Kdmb#W~vT;Gi$2qC5)yA5cZ5eK7@p=(` z+89@q(71ePy>Id>EMC~udbaU}brvHF%j5|Wn+Hw^!d;?9A}$Y{@CkxV^x$y>o9V%# zMY9aLASl_T2)5DI&2+Cx+i)SV4fS_a-BG_6_mY!|kQz9$h zaR^G=LkP-zbC=9w+aM^bvk*a9om&XX>Qr;ivW-Ge+8)SebK|a2C8R8EWlO}H_HNzIBQR67?m0R>H^_c1Xh;^=o@I0 zp>e!JYiYN3aZ_mCEU5Vs;Mpb%MgBK{K))gvON^>mrVO#oTko4S=R+hkeK9Qy$r6rTYjP z7Xv+)ThR3NoVoZ^P_^AwkDCdtt7ge1#q^$0VOn;CChLNu%qnQUu*AGvXt(|etuGs? z_7oY;7@V6bs!D*!bjINP3BgbiS48!<#o=}xM>iUP%Y?(wI%yHs9=KiCmFZ18DvKA+ zYCWq3H}3rPR6P-teh;-`f3_G=z|XoAM!#X4q9lIqiK` zG8jdvAo^*>bX)~5ePz~N+y`2=`*%Rg?qD-+0yfA>*BF{UUXY9RJhTDYIP&$@yIMQx z*``6`aY@fTKW-Ba%+fxGmX(9;S7_V?^gB}lK6~+&Z z5h)drAiz)W_-THsGE9%nM6i<{Y+omfO+~Pe&X&Wy$4GqyEJctTrPdtl4QOGyO_RC| zvIy%Y1p8~|*6X-w7^Mfp>v1#D#%B_O97eiNGNI86dX^J$d$Nm`rR_R`-LoQm>$5pb zZ~YpJc zL@>b~X+WgDPwGS~^i-)68GnccUXePH`ZY7YOy&mxg$eEeX>%8USin6h5*hqS>N%0rL;RurFEXCU;3KL3 zJ?iEEqaibXjEsoC%M6KZ!BdIPWc+g=d-zYOX9D>ll2`Gk2(T!SddYbFWkxPQ+Lo4B zR`TvZ_FyF-Jycy{O(5-kfb6QeK;~0VVtt?udUGJ{S^@bX(yld-={!0iz_@PwBasPu zO1`h;i54-nhg#B$W}#5&kbyFqSO9u7kok|6JkcUD12EEPK2FmAJIH1y%5+5LGePP^ zx@RJg#ZHzyk#?T}+02<1j5PXVfixiIfxZgJdT$3Z!44Up6UpzCJdye?spmxUUrPS3 zh>=EvBxyio&G!Mxr%2o{@c@vYe?q1^DD840^F0ino;wbtXHIaW@pIxIkcOvZf-};N z$c!!m>B{Rs7JNhEO`sF>`#`4uN#X+_2hy)Ve&QKm&7R1JXFw*%kOo9%{6gwP7N{Z- z)8)b+W@wXo0U*;CV&vZ-vnqyoAig4%2}%K3kgH5cWJYdMCo;YakYlDYkOjXl(F4d2 zk#?Sv_mX^0WCeV{bNnfOS^)Q4q#=83Ot@O&S|CS8ip=1D9OM5_WsH33x&1Q#oJh|c1kbq?e@Pnrzl8D1|A~Ux z^2@SeM7H=Uko+~t6P-A1f0Pk-fn1OuY7sd60GaTa#0(%acp>p6kc03Qkdxkw#ME;E zX_p(w^frlkfwU_m^&&uR*(xQ8(m-ZVR_g8&D*!n-D@(m9kapF9+?r|uS)dP)c78w> z><>iUlprAOngh8Ub^+49E3i2O-4Nh%H9$s$0{J20GF({9WKz$%LkXAru+#Xm77z1PhV|(W_vq|@FZcev+{5JLwD|XO4^F^` zmwoidUoZ2tXz*C*Xz=gl-oKZ7|6cC>d%34A3pp?Qc>MbJa_=vfi~nBk{d>9h@8zC; zk@N56-v5J_d-DgXKb)_B@Taq_iv|}>Jip|AbJvwO@|TMFAhOnzWf#6V^5LbA74UwM?G=WA`5E)8?PDxczkGyD+yQ{o6LP7Mvhb{7ugFEqN9`-8R4ck!mZx zTs-^ghqhC(R|b4I`Fp$Nho$!dD!8>AaQK|-)LWk&e(&=mu6rxj$-BP1CGYJE-=$pG z*Qa{4&w@}(RpwLRP39XP{~%esW@b*%}RxIfn;)6g~C9 z?#b%c#oeo^+1dglk0)-4FvI!#2Dch z2;zRAseo7#XlkLxigXh5>cb+qJ}kzG`Sn3G3j&czB2F|90`Z*0rXUdUB7?-b1|WJh z0FfxxHvrMKA&C49L3|{-H3Z?*2t*2rPlT-zh}|S28-bW8l1YR&2I1Bi#AFfC7=&{Z z5GP1X5iU(Y93>Ig1jJNvj6_UR5FSlIOc$|DK~!l5;u?vWqG~e`X(XmL1K|*tNK9%D zBA_{lIbw2i5WX!yJR~86UkecTNi1#wV!lWxF|Q?v;Fcg3iuo-;G;0MSlf+`tycLM& zBsR4Iu~cM`SQiYUS1^d>Vtp`(uB}1jZw+Fl=++v9QyUN|BvuPs8xXrmM79C3RwR=M zZwtb$Er|6ZqAdvLb|6lW*dScmfjCMct{sR?;uwjT_8>gkgV-Ws+k>dm0mL;D+eFn4 zAks)o?EqqjxI|)7M-TxWLF^KfJA&}-gyHZ@M+}D~;nxYo{Z6o0+zA%RBAvv%&LDz2 zgV-zPcLvd{3y4e-DWZ875YI_$>H^|`$RM$LbDsJKL8(kKuCqd*iFlShH@9S!0kiIT!^G>H2o7LNwuBGO6B8v`e|8e?i@ay5%b zn@uf+TZAdEXchyz%rUTY6U}2__ngG07!YMe28ngCAbQ1ua2M-iO4+5k_aJG7RiJvqVRY?RS`jWU!)SM370rPbuohAA&wC|h5Ltq4@4}XhB!m; z5>?{?HAN!9TU;X45?%=aA2Asqd=pW*hY6^hUHBz}xKCnnA_zZ`4nnOXf+hg`#e70t z@rV#0ntueSCzcZeMFye1X!kK7NUSF`5b7s@hN2sxk=RCPENq_wnuriWQ;|$)CJIjk zG#3$s79y3f~SJ$A?8m7(QF!sOcK3B^JyTSlh`y3 zL?4ksV%>BQy{3Z*5$mUe=sE*L{uvGd95JySGIY2~;Vq||JR~tj_z4jANh}s1VnsTMdGkO7&jT?|%%2CM*?bV0 zB;rK#`5>N?*fbwRyvQK2ZUKm13qT}_^$S3BT?iuoLJ%K`ZVN#;Edr53;uB$81Y$Rd z$VDI~iewVui$S<81~FMgEC%7c1jGpvQ-sSB5JySGEdeoA93v646oki85Yt8MQV>;^ zfw)Furl`6ML>h^y%Ro59B@&aCg9um-Vvd-+9E9%*5D!TR;kN?BeG-dTfS51RNz7Xb zB6uZ;g<}3n5Y1MB$Rx2?G+zbcIf+fHKr9s*B-X74(Q7q`8wzVL3lZadkVy#Ff5xx$D+d2^IMZ`J~&g(&(AhAKXtOs$FMBI81o5V2^ zF<*f2_yWWh5&H#*DjPstBe6|X-2ftu#MBKSc8E(PCT#=}uo1*AF?k~h-%TJMl1LJM zn?T$rv3L`RWRXr{-ewTNSP0df*ulV*NziZ`iOlL}ultyHZaq$o<>q@aDK z$`<@s!jg3V8`CoN%Ppn^v+*aNszoH+H#JkOyYM@R{4}?l$(kCy6nP$+8mN7ef*+b( zP1Zh6DzbZY-Bi-bc-z33;UOdOBlXrvGoP5uv*vCwd5L{xa#cs>J4{9>yR3rhU%Bkq zcZEio^32%AuV)k`ZNKQY)m*RftJnI6+$cox2DEOGt@FN9A4!hRVbfP~W5lhk=A!X2 zGK$}gjg(QblH(U^VXC z*RAsyi_Zj+xD9ps2oY=&zrU*w;pbz?@oQV-3++!NR}h@>oX4k<<6|{l*#LYdO0F=% z-6S_ja(qb7_?CAvIMgIwdo*SsTZ+#VozxyG36mTf#tIgPgiCIkfqw})j2<_CFy~1f;3zsIZtqjl3Ode55P^3+&anC0QZsP)=Q30RemfvJ~vEH*Mxi` zxeaFdjgmLWPbJ9*ifLF2GEs7yB!>s&l}VD@EVLlB8WA zxLM#d|MQ7w)}}thAq|ry7X)s$8iJcEIX)pxyG9TpxfIDY1~*S~ z`}wFc4VysbOY(p;Yzl6Hq7WmSivt-6dx{#N8TPdCBoXZf4j9@}A_5N)FG~E0rX7Omg_KBOjI3KHo~N zJ+xWmxH27=WCw)jO2hAjdlFXX6Edn3qCSW4b5e4h5gsDVPf4x|xD15(IW4)a2y?06 z$9U?X8^T;F_&F=>@c6&N6@Z^}I@eq20fn=ZpYzfXKh01$JNdaFxn2lw!+Oro_mb<4 za4yMRlw2Qhg(R0I3hzc6FUhD7M3t3MmnGK^+|Lkxu7G27f5K9u8?Fxt}FB z0$gLsJ&@c;a7`umP;yb=noI7Ncu7WstRu-^B{vFOJ<0thxzXVGq!B-lBsT`(N|Jjl zxfpQoOOB6vu+p&*J_g0l6UoJog_2K_PbE1H93RNy=MTw^NBE-To=Gka+&RhdX96tb zLkORa%9K$bfomtZSCab} zTzkpAmfR=c{N)3VPmQhm?)g5K^13H1D)ien2MDvqJ+D%88Poee)<^{(C z)(ps4=}-Q0f=OmVjK^imOKujppW)+yzzRASuQ;Im0x}%SaBixD0tz2ymx9$dnB$<>f{OTppCliJ5i6iz`W@Mk4tmP2qsqkX(3w*ne| z!mE91Np2-H`iu_sk=!bTxd8H08ythHA#0JARr8Z}YY^t5Nc%cE*Hl>xg{vYz{?c$A z!dw+;$ltlJ4(lPeBo`n#rvozKX;I*mxxC1?-`ul!AcjMIND!m}q#>lSn7Q9vw0J87 zgCVUUZ6IwS)y3-l<|FEiq=*CNVX8ZyC+B6w6$rnWT?$zSSq@nNX(#fhnoBm}6$P&# zx!r$WX5Wz!(12P*j z2g38hc#-*)**}Pnk%dDdAcG)-Av_-pg@i)5j&bqkI>~jBi#M-lc>OXLB1GIFb4lFD zm~+Tn*2-h`%%ok1%m-94>9DzN{CPC}0_1zhMMxTi&v*0Tb#BLe96tgw2*Ry65;7Dr z48mQIn^`Y}dqes_>Oi!2wYbJ}P3Ick2*MwQbcXbT^oH;$ zBd+D%R&PZqi9i8JK?r|8a|Q{{LC!-KLKZ`oK$b$5L6(cB-;uX!2v5@~5Kcs%)Oks;F=^Woa}PD1k9w?uaD5&R z;hN0fIfOv^Lb#;z`D!ksTsFB(-h|!@b?F3o0vV1ns-ZdjC65c_PjH!#-yr#5V3Vy+^9VmHz`@xcX=M?jwV4kDVz|F3~HQFESk4kO$hxCrk0 z0rvboQALPA_LE=}2Aq%h^^hP)Lr5dY9qbI;*@7Va$x1k+AA|=yo+xi{Eb|zd2pJ3M zj{;f(10lW;FUWh4au7F2DM)A7lmJ>GMIrT}*MZm&&JW2%_&FpA;tlx&@;l@Pq#)!H zce^N{fX!spbvPg1Htnn5msI}iC5k^-3mX$RSkxbl#$kS>sPNG)PzWe9(Ikq1}~@&e%y3oZkCqJG^Vogu8hhbVl~Tv@a_X>QbbH;j@Ydmwuu z`ydIBSO_cko0MF@F(@<%G81wadJ5Wp9BsZVQcs%8deW5pH@9YP#p@Bp(>O;DkMBJG z*WjeVXZP>gmYknqS5UuUP1$WfhT51Sj1Ymm#3 zOOT6@?;#f;=OAYxCm;wvsnDIjwpb0ATWkq{$I1j4f+4#+gfRLB&_XOL(U4!nlp zWDuV~K81V)NrWUo;vwT8aggzlv5*+Z7|1BdXh2m4GoQ`i zH$gU~iV{5ND)id`|r_(y$D+BpBEb(i+mzq~ubXB5+i+yMfcu5fOCP zT)85h_nkDMX(LE;NPWn0$hVMVV%rUKQ9Sgp{s*&n@iSnU@o9*W`6=<}2Xj%EqoA5V zmjqrG*DlkV|l@<`zhfQtB%wN zm;GRnL>e(N48n{DK#YQkp%BA9Cr>V?Jqsph*s#JQAj2R-A>@ZZ2J<_DoQ9DyGACzb zG8}P6;+*k@2gtDyLyyu5&^?p0_4IC5!+7(`C?EzAjARC5AO;UNWo1fN4u;SZMyBHs zX1cKuwv??j@-VtC797*Dn~ZduWTW-OBE#_a{L+ze+Y<_MEx88R+jtKY|x zq@#>NnF$Ta(U_GmIO>M?$>mHpQQ8@{YzQl0$8Rd31)0`rL5s!I8G+R zW+uWjAcigTFeZv42R}PUc#aHn*hO-z&P9O3g^7tmhN;h!;rSAcf^ueVa2yIupToTh zzl$Fyc?=D0B+w&9ns_Fl!oD;rK;3X-&J1(9+(>7n$(iZfaYkX}bK1?}TD1-&JunVJ z1I|pgz%XQg8H0<3z3nZ-&Zr1yY|iwoG~;#ylOSJ0c0sm7Hgc_Ep&Wo5L^;5dLU=(bMpU#9*F-RS$qr+7-Q&NU1{|HE;Lr}dv@=C=zn^J z{l*oMnR2ih3ke4$-I%k`9+LYz*Y8FAOdN3T|Be7YSJlg6^J8%1=0fSneHEVf#c^R+K+F0wv%k6VouR}~t z&sv`NihdZL?6$b5F`{y7OR%f)qOqgpuZ}-c?0In(QOgqzz}7OIc1y(i))sF(P<0KO ztMPuU&7q<|=G3$9F!zQv9z!@P3b%pzIZ=&pS2S*eRJ}!P8%s6U$c?zyf*re^p6)!*#&Xfscq5!w;Hrw_KPp_xq-Tq}QWM3tw#aXWI8Im~0y|n<#H+TJ zQtB!^R*oVzi(o>sNNfj#BVr-I)p&JXY40Mw6;Hpn82Q1`tmcp66z!girR^;x#OrpJ zc6cDKU3*KgP6guu)rajZiFm$pSO-g(Ysc+4exl}62F%{J@A9!5$OzeZqGAKYqYg-= z)yUiR9_;W9X~Kzo!RNd0`n9S_t?B9I$p9)UCtIH@b|ZKBzMqUl}oU%kvlG!oTV|d$ma|1g0byyZE`Q z#ieOys0E-7=yvF?i?ZF|?Z(2do24-x?~aFNeZ3!d!NiClOL1%D0o=?J zw+3Ye$=ZGcTN>H66TdQbPy7S`sUt+2?iPPMcRZ!LrJA)xDlSm9lohlf%+G_$3p`%x zxA%q>7y1yuq{O`_F>E3-dMwVwqkYz|#G>A4pSuX^0oGUaAaoOtXfsNvp95xyh=9_b==lBExx6yMgz;$ka!NPnHgTCu4o43CI*eJtMMx4w8m zQ9*I4uf;pdB1cpnBbBU>*xJidUD^W*_qK$|{NJ|J3;0Xvdj0+;@*fJ84O0)|Ip(Z3 zWmn{l`oHBvS>!=6H3aQ`D%OT%WsucmE!%f{ql?(k59x-A_yJfguJp6Gx#}-A#6VBU zowT=fns^Q{Hn8jVpYGWxP zPDfkHw=v#{IHT#aopDFYL>E%!2Bo~c4`s*P`$Dgr$CfYL+tr;ESct2OmoKLCIk7(6 zQqB9`8GQ==eHKGQWB3$?l6dUNrNH*R7Z(zbdRknyDn3>t%d!ldzoRlG| zMZl?f&WXMe7H3nbb7E|SrKY+^Y>Kcf^f6wpI5}~1OtS@be}s>@l4AZEuU}j{`C(|K zkSa}O4A$6hMBE@OM8lu0PRrjj4>GA<Q5=*l+br(F|pyNQs2UJ{1=u zu~E(xd52m8*OF8wtm=cW) zQpM_MJ=-VImR7Fye$WpALo@uI2M=oRs*R-DJOs25Jw{<9b%#MQ^yRWMdxoDWFm#$6 zYFK)ni|H^Z`qxw6P_cKE#oy$5S3DnOX=JK)SJWGAadv8WS3g6DLZdC!4c64~u2?e~ z)jKO*jz;yah+70*b6s#xyD^$DE}+!?!q3yaP&m#KoFco#2V-ETgDc;*$-OtxKX=-m z+Dlu@O2RH##KF$hcs*x@AzLFNmG5~}sHq);@g3DRX7oTD2b6w|jChQ3d3rGKxB+#> z!w$zmx}#Y7+!#yE(#HEjFMPLm_t_s4=E#h^YUl>VMOduGO(eu%kKQlbVzFQEjIo64 zVQ-U`iEi^IW%2S+9ti)j=o#H6i&*&2=LY?xU~+#b>QBO<;-5|oBN8#T?GMEt<1D@9 z&YrbNo)&8SU$;(e2o@`+IoxBi( z3o00AoBwnub4~hHKkB*`>hS#I?JFl`S4cl<;5g$o1%7+$)OJg>`xK)_9^T}sO`hT2 z-6c6sZ}PnILIj{oT#YxxZVHZ`{F~2_YpenWCw!7F*k^B^sNOsnWx43B`sFB1T%BNP zBKtebFaN38f79MKPNF!lX~!AokT4bQi7#K_j_UNJ_D_+@HV z?X&v&jjk~c(lSr!eZwDbj>b2R%~{U)PlM#2XW+X|?*G+%eAfy7jZyq|d*7O9@*<&= z@c0Z)l-_$Iga6$Y{#S!tZ*Nu$Wi8|scys-Eqkr`amp2aiZ#D4kLHFip`|pQ`9BXfM zy{qv~n5V7k)Lz@k zv|BmTMer5X3CD!{Y%D^?8=6l|U;E_z>HQC2?hXH-MK^_;!{Sogc%}2UmF^vq zYPnq1Ha=}mhB&b58?TA}chJ*MT33gAxtGyVMO(WOiN9&_p(kZBP!L_9>rOfn0-A>J6m zon~9YOnG05{j;$lYOQoBZM=%NQ(EoxA>XX)RYmRXhZGezRp(k3y2=+wCzP1oEnn2c=TX@eJ0oM%2ByD&eiaZH%}bzxIcrtfBL29I3#s7 z-jf}aIC=Dw;ZqK2PSbASY!h1qsykiW0eBei&A!yXz{ZbG_S{XpseKG%d z_x@T%eAry$P1+l#EdO*u{%5>|kq5YM#Tg_Ocjw`xq=kdw>#_?_>-(a^0?R^E6^r<7 zfn}%KJ8AVoi&^zK@i0x z2InwwZ4n$b9tON!RlaS>Cz<jJs`zVNetXm5N%@mTU;ynw?Ra*n}KvKY#(xj|qKxPS3sabVaQyo?aN~Dqf<* zm_osQ#H030{Il~ekxTr!n6m^H&akkCwHSOOZ?#)Y%ToZJt;i*6EWyQE4_LUs;5z;A*_1yLf@- z-TQ}MtOGmTJZ6Wz7O$6JRahZ{m%`3?#rD0q(T|r0{;}7>Mbp=_W({2VCc*$uT`Z)X z@y6^L4HooC%2m*mZI>xd!JxMB?(RvJjp2O?*NMqCFy8*{RJdNX-RkV`vSVu7M44r1 zwek9G=NB)$+J9R+G~1%LXtxZN7%5U$Sc-}dmsxVT8ZZBTzep8tb;_OP*~SaRQW*Of zZxwg=Kd3Nh>Viqx2FClxkN%NRcKoVNj_jE4#X}^mZM^@xeZAAwO1l+an{8mcIXr*K zM(Im7k3NzeQ!<%+zUT?4HvT<~9OTtPXdjW@4vXcEzDWMJh**>-4j zp_N$o-_>1udGB(V99K5uEs0nYZi{{ zd}~kpe%ThA#SLVxYQwu|c|E^(4GcY|f=zg?LVm`p>}$9B?#tz~c8<-?@3072g*C0U zm;-P%-isb~eDT-0u5ZU1-sE>lN@o$W4do6HnX3TfMf`UFA-q-tHj0@S0ja`$Gj8iH z*@P9dy{PtuVOOFIwlTcgU0XaZFKqMM;ex4OXfs;dVueuGXsJi61B@1UwAn?pUSlcc zYP=S{IvM1@ZntuCaZ0{aeiRj?whA;O-Pg3W5F=qQUB!0 z>}|~_fA&dsjE9@3zXb!kiMWv>>uoCTCOWRgJ-2lH-y^8TvbC1hi2rph2Ib#pWW2_H zQ;*1y@OFaV(#Ye3Y+G9~eZA2{Z}>@TX{tD|4l9|aNzxl0)tr$tfs4uHCg$!(rBX%E zdP^tt@4_Q-cyF-WZPxe<}6%uw~H*?RI0Kl^ey^c&)HPD zvZ#9$YI{+TS!*uU4nc1gnRB4Km;x({ja#!E?2Ms%D+!5n3@3dqbQaqVTS~p1v*zZk zDJ0wUW&wK7Ihz8jh*sMztxCJ%**b2(Uu~Z^b4`^cw@s@2R#EY;DmJn?!Q#Yr_}pk+ zKcUin9|>20>l!4lfaDv!TE`zryZ50sxocpg;;G3tFsS`249dbFpn7ylG_N6<0wjY*l6)H3!WyHrvf&L5XAlG#pSpd z@fFN(i!CrOZNhJf+)(C&w1T^5%vzh7y%v?NCid;bs^$%gl5CLY#K+Cr=USu9JMDa_ z_oGh>7`U_AU$>n-y64{Ba$;hb4Mt2=#GGy3V`+Ym&wiFkv0ls;0lQGyzgc^bbh{V< z1N=8yURVNMuOcJ%Nmzv|6J}PvRXDqdC*lC?dpcdRCvIpMtb|TH2g*!GZJym*MQ;s;!GzgX)dZ zA4KmI6>?>CK#{Qcso&tcb2s0h2l?`++jb1Gi0D3iilBgL5$sKIRU zGobVi*p+}?hR5nV5i=swVaIO_a3+vL85co;`}D;nYqoH4#ckE%yRrZL{Yt7YT&^+r z>EC-O;aY5wpATlcS7h|lkV$dG!dD2Kmy}3Hb<@eqByNHf^vCqi#`YQSl zEzMcAH`Z6pxxsHNg;~3ezA72*(d#IeDxGw3{re40PwXmcs(cJM;l;FyKZQoPY=ir_ zA7dD77asewyrr#rS)0~RqAb?{-I1WMG*+~;kbHV@pQ~8iqIqd|c zlVaK-OD$txd#k*^>@4E^S`4q8nX;)`Zhv2HmdTrSdLu#YzxVc3y!nu;MVmG2+(Rzc z#BB|uAK>%W-(cH&%O7$d&TdQ2l8j;c)+YJa{`=cTWo^-aSAd*vV&75pRiOZ}{{kj_ z4ZNO_OKk77lL=*P7n@}7A?-xoV;CwU#G?yn@mcS6JWr!s}M`_qNS8m+syo zrZSb>yS4L?aqi9XM>{e7G;CxFX{vXE>D~Ku>A&B2-`ZZ^*ielk-q<#M{(js1Put}` z?0NcThgU0eOLP7I_r|3!hHnjB*I=BTc>Cn{sPws8Lepn!Yom5YEm-`DMd?j@7j=jT zIE7K7EmdLozt0XpGlr1s#`^lkKVVjX>1t*#eAWNfW!Sq0ApVEGcMQBY$LPP~j~6Td z-#$3W@%NYI7gufaD)8+k>AzSG|J!x&%`x`hEQk6!_z!D~JhRFnEq9GKj;`{`N?gDA z*KPQX^%d7Y|7osyixQVCwenWskE`*yf5jqNmdRC047+5hEaqLZ^u;f?GA>y@XgX=9 z{+0cePUBW}*-*~K0i6#)CYJ0};B~QD*Ox*s1pTmIpALbe>s)lcs^|D^*<4!AdFqbx ztyj)V9DHncPMUbxQhI|Kj~XQ{`ovnglGxwDT1lMVXtj#l8?3InTH~?BCaP_;?#+(P z&xeyf@c4k>;id6Oc{f>K4A0|KPA|o|oG4f(mpcyUN{8Ir`yczFV}WSp@|Rb>iAwG( pO%9e5Ez0CtlIJ(67joBsUi$X;UH{+rUDtQ@yzk>)&%K`Yta;cwdv{O!(tX=O z_gP*Qmo2}&XvUI`XD0rdd~j01Qr&8v9OBfmc#GtZ?xkJbHe=MI<;Alp{OwKbRNT^P z+xAg=a>stZQBiUzN?iL*ijo_c3Ozq?zvO@3tSD~K`$R{FMfXvZE6^D~9;g9Fhei#g z&#$59fxZuz3%FIH=Qc%gfj%U%-)P#c2G9JWd+OLWZXpO71Z`IoSKutEPmve{WJXb8 z!@|R=D@xbTjEt@VS&*7L6eTBc0+1DG=1}t%S06e`=5>obu*=9SCL(MQ^WQ1;?{_Ln zUf6~Y9Ne3Qs*>xI%+_zekzHhT)sYdQF-r8{L4(4EDastgv+9$9tnx^i zuI)j?z6me~_(9<5r_v##de;vtN;&BJjwnh=;1Xa7+HFvj0*VqF_XiA%fH(?658xJ{ zJ8(Xb?K1_K4>$nm3EX|uaL@`m(|G~u_`xwnDFsZ2KNi#tyc_Vm)Z{CDm)r` z9%XG}0|iGg`z& z;s>XU7F+F@kiS)Iby%}{<$&zAfCSyMZ~NV?xJ_9ulV1 zcjPVT7JL4j5&IR8GoWv1Ojy-^gQ9mrXOlF)W;E3;U;*f7fcb$3fQ)}|-Qc%DXVq%} z*>T5j7=Bm6Pd@15ZW{U}AoJ-D1Ron$<_E)3Ola@kp}hx&m6nd*PIv}=K*#2~RPeTu zu?>g4 z(C9(l{i79S$cW)FkprWZ(f17prxDM=g7WM5xzyJI*+O%HEXc+ znnL*_pZugK#ld_JWX^v+G)Bj5AcyHmiOE3b*cnBq-L6N*>{|@vteprf3>*ezlla4q zH7X@>tD~e_aW#*lzMEUD^{J6(ERfAQJIV0j|IA1e3!Sxi44rv3LM`cYNaUcw2rA`& zH%8f?zZuP56uJxICrRBII?H+&I@5m#%ndvO#5gJyw+R7eya>pFGz-XPX$GXDiH;X; z#bZDC!)WZtK|_Z}4htJL@K3`!1W0!+CB{SzVX2glUm5nzfb^34FQa&zuYJQ}lm@Wp zq}Z9=u(LyFuI4)J1)Za#tbq>Up11a7Mb(G?NFXQe03dzz0_qbgB6Q#Y9ujR5A3GcAt^qkhzLvO0;u?t#U_J#CY=R!Zswgo;;uh3^?YKCPs@Jd%bQY)* zkVDO^nc)bVGtx0bv*4y*vjTVX8Z|cybQXHSSR^nrHfv}$ky%r->130|nKdz6z$~!Y z5@w5hD;_1>6-MZu5r zH0;8G>^kovMoXwgRekQ9fzE|uHFVCYbm&|V_7zcM^(I>_i5$gMeMJ}tq+wg>@YiC7 zgHK>r7`%scXh*y!^h+fT`(r>>WMV19E(v-u=n23gz}2OVjE6&Kfn1Bk8htFvs7eVC z#o>?E&8uRx z$Rr?jpQ@@-1~@1d1gAqQAlKObUPeKFu4L4xDtH#4_u!GyoSu20v&o-VHZuMWSQ2_F zkOkffWC4YYp919a6$NCIM^!icwFR=}Vp}1CO|-^GRZ0WBY8ZwKfJ~SU2M$_92@720GrSSSRVLGMWY6(KKYk*4W#{r3Okw=o0oq_y7%&_>ODt%N}yI~lcEG5%E^&f*RFjE ztuZvKBkxMP?OSLq9j*=i)S8a?&jU5v7B0z3TsBAEdA`}9)PN$|jIva7#MO1y7JzA~ zCr+H^>kOq16eq{o7Iw9yBXw_})@G}s)CXsCva6dcTR-HLTBcES~76vZ`WM68_BJXL}(qMHPF*io1YPf zDr({`K{isEDV5q4WsXtf-!{(jmTgzVs*9BsPWRn-x6C{Sy= z3$ftP0S)ciG-y?HKZ%3wwiD0-9KqfEYz21HM_M00TQh_L9IgR=wrL18bGR<`Q-5%1 zM*?jPk`<-BBf;O#HV>huwASt;#CC&se_!W48I|p1w|xYyfg>TwPdg}iXT2#Wr5IM( z9cQ1}wf)f8FWK~lwSI1BHfpwd(9js2{hS3t9buK(JrBV!V`tq<<-LYaXZE!g28}+m z>)HybVT>W}DztitvpLQN*tN=E7$Zi}N6cVo^r`7xw^?dP*W9i>fK~@_7yxzcYBfjD z@jzSXK1K0zq_yzVW-_FEZG$}aLE|`d;?UC6{YFZQ?zJg24jqi*26pumM`~)Ib_g7Y zg~gHB1f6@p81xv^3+?JMNBoIE&2rEf%efqRBkbA`XvXkk9X^A`QX_Q(yX_ZfbsT98 z{M1-S>eqpq&k;rGk63*;+O9$CZxQM}ZeZ%NT36AE0$~qy_kCzF%SW z)?H)D*``5j=}7DBr(STRrUhyxjvB>K(Imc(pi_a`1u*nV#%`-|O!`4JwbOx`>v2Wt zoe?`2T0`by+ksFEJ-^ooalWG}9G$7C7@OBt=mc#s!fjmUYA#=ZFN&j58Eqf zbvQIN``5-u!L*LBs|k+Ovw_;z;5gN>BB8Q>Kx0p$eRumh;?D)z5>8?jak!rLQ%^ax zZvwTZX@(Dsk+XJfBQ)7#d+pjoso5NPyW6#ZQ%1u6F<%CjKQmpv$4L;Qb9YR zo!3I^>~QVwr~QSH9}?%#2Y2nW#-PzP^&?08cY*31N9uQhT9tEI?9^~a{KY`+0l0=p zi(%T$u72RqE(Kb?`Nq-gQh?_8R#BQG3gfvxS^yfCB7Gg!s+>194x|B@+9|uX2b#Zb z$(`VtjKfl~)vndJV8+qsP-uov&b4jOSQMkbokI+DK?k5eF{=?Aifn98t!StX?rzBxq=f-q6|`aY%Ov8b=hy7uw}D zG$TJuN3G`fW*j$~XlS)zna^>yk6qp52)Y@l{Q!=>uxa$MYqhQ_N)R-xk%@L~Gc;dl z*ebf&wL8!0=KeeJG{&t`?`=+8aF-j0%x7~;4=SUdrXRG-G`rF~U%+D5skUu$XJ3=gx zv3uXAgVf z+CZxZFKF8+yOs#85j4ed7X4N5u2DZ-Q#(51(*xBNj@0x(+ZDuMGfel>^4>Fg5vvK> ze-gCTNRM^l8O}1)xOr-2(ha{ZTwg3N(;dxz4A2_gHzqflFVt?E2n{Z=RqR2C%L2{- z;daZD`;KN00yMuL73D*aF8W&W5j3_MO4iqI`wChkNALqbo67@O>7igVq|S1r{uHR4 zg3kUk#&gb}jP!=LcF;HrG4e67VgE2t%llAKx`WdX7q%#9%^YbD{WO=K&BAfUHiXtv zx1u&Xt7f|at*ImUl%H1N5mLhnV;e`4v(P$bq$&T4(PGAiFcMl@JxwY?EU(UM*&iF@ z6iu?su64`M&Ia3UUqkD}wb@qciJ}BM(!Tc71|ww5rZ%VSYO+In5@;*)t3EcK_-O+W zGD^)AGzA()0oG>7n`ARPV46p zHM=9|X{^@%H)AE%xJhX>emCdB*%iLLp~B&294B@|s|yVcA82=eBID!%6sOzj&&@3? zF&u*n8Yio<3|xfPSkIV;q+&0OX4H>N&V!(_iA88%c~1TkjL`)=5afDkG%iM7xLs}G zNc}xfo$k<{$7;TRn3JB1(s*b!^gI#|*lpXP)pZ2l^wS)KNiI)MI=U+y17zw&T8w&{`Wg;i}+1H1=<1PE}P^??P;Ym+V>;v;f3oZ8_@e45hlRu>Mz}v3I!@)W+Qq zx-qte0l2rsM9^^JPJ+g28wbwo(74E9LBSw&!+ob(`iVLiAzz1UeLve|gsL;7B_qVM zx>2bo(AfI$ilxlgs>;5@F~l|y8m<7E``K0^gwuO>Kidt20v&1d{M4o*$f5>nBeR)V zx9Mb8w~ADY8f$rwO*C^-1Jp1P?*yB(s0jB6bZRTRT2^RQHPBYjMO9h}SF7r0>x*Ep z5!`MBoz=S5OtN{7jQIHoHaARfAsA!?tK`fG4$lnk&kSaF%`j-48C;MV{2?<~IhU$5 zG5ik845nlTmE0KyO%QA(5}ei7HeN8IO&i&rH{q@p7m|$bw>-@wnz^U}njLq87^82G z>NJt+f`<4LWJ8hWf`+J<54~Xory$tW2%bVv8sy8L!FENkg<-H3L7D6)1e+ObtpXXz z#vmx29Y#`gmjha+mz&U77Oel+0V|g<^P}Zh zXk4%n2kmr5T;3DD&LvHk*r2pupcyV{7*Gn0myz9KXvV6~xL=@k&xmVLT2(q5+G$^B zC`Nr~n7d3yNpR-r35|;iW-ZP<$5qc4+9e~!tC_cI)hnK4K)Z^OVsQd{uSsBFr2u*el z4#2)2pduNTOQ6++hGR&QT{{P@s~*Qjs3PKvVL*3-Za@oyVc|%ka_!w-htIY=Fis!?=(2 z92!ezXflA3c4XugYmJTgQ9{?6_ zyEu^#{W-&~Dj|AjS?=3~OBqnUzN!*x43h;2_7tvVR6omeUt<6S)mD|kM(iF0I~YON zIvMOZ1bZ6n6$GPPg05>r^=`OVe2(sIah+mt3f%!L z1WW=lexr;hTA^>1`n!Z1z*#VzYxzlXO-jbw(yTEAgDP%Zk}xcTw_0W_wxcMC#v5ok;s1fTZp? z;qO%}*Ij8qWbnS!vm&XV@DJ@D%6KA!zexRmjBwJV zAW(ze6iB<~K>mod3kEV>dmy7a^B;+{ui8yU^pp`q2K(S2wnSga>nI-jW60zJ9SxfP zhs$UpgQKOM73pS-KO5Hy$uWI;ZWhD7Q!fNYq#k|(-AUj}3a zHUsH!i;T~TMTA z?#+Vw?22jrOg z5y&5r1$!j?sPzjq;hmpM6SJaJlo3^AL{?QHU8ls?LkE%3ls|7iQ}&?0*s5qKOVq|K-OrI#3?{_(WgNEh_1jz zKsrv6`fgx;=&3;bUpa+;asV#@xwAb2<^=u$WXo7FFk)Gf>Bue}`T`3;Zz1j8g)DGq8J`td!EVw| zcNtHl|B!5Q{)fm2A|rZ8JuB*cCi&1TNc-N<*`xy`|1M-pMj@U!7|3)(VkI$5CL}T< zTIxjVF%pMMp2z}?k~kJf$Kz!@kvjc*0vAgDZH&!IaFj2V371P;3FP3}BOUx-#@PQY z$GTs(T#77sR%FZU1@FQ6|E)Cm{{%Vy{x>pa&Ckn<5n1E!faEVqo*2u8<%W#73FMlc z4kZ5zkO`kidMESj&H`k5tHf+T+U1bCYj(6hGb$(vHy|Ar zmUjR= zw4O4e7mz<9FCOLtnc*UdOM!H-OzJCv_`i~be{3S82@Y1!ls!;smICDRa2QB8Ur9U; zWI0brJq^h6pOtuC#(xK-pNl}IzasG(koG@F{f@+RHY^?g2!i+%kPaS7{gE_$BK4<0 zHq=WX{;#NLEjqSI)PRi74P*iGNxqQOJtP*9d)8Bt9})BrLAKOk4^CO|q4 z29^Ux1DU}HAnnEjS@4e}a=haI%2fQrbO}JF+adK7AoD$11_2%s&j2~*&P#(UKsx-M znCxF!UH9+hAshVP%fo*!5C6S9G}eZHFAx8{JpA|a@ZZbBe=iUJy*&J1xjMsn>!11k z_wo?O^nWi8aV5kv`oEWl|JN=LOJH36?d4(ei+<|uZ|l|hAiDF=oqcP2=K8cs?O?4Y{kn_3G`tjm^bx>Czt%r`FC zT@;`65H~q^yo5gs4 zi#z`6V`;7q6}1B_orG_I#Z@c`01++jlSn5K90+2#SP%$eejtcfBu0v$dLWwCv*Z$6 z>RFnpqs0pn&+EY=q&_Uhilq7=*4GE&+5p6O(WL>1&J959BM~dK4?#G82qNl35EDcS zi9IBWHU#mph-?TVq9KSh5|f2TBM|P5K#Xq$VyZ|bahyce#vtOw=*A#MH3o5&#B@=y z35W_!KqNE)ksvOSxJbgkDTtXOzA1=lO+h>)ktk{hf$$9iu_OqDL)<5kP9nG&h`C}x zGZ6Eefp|qih@j>mnl=ZqxjBdh;suH4Btlw%SR|5KfLPxGgljN}C8A3(h|a+v_K{d7 zw3Z;8TY`vc31WpvA+d)<(N-WH_h%^#k36E|d z+`EAo-wnhukxJq?iK^W}q>9nqL5%7S;wp)+Ma2*h6+%EHgn&pBmq=VB;ok$qX%XK8 z#IznD9+EgKYWD=;+Y`i+o*=#v_erFa2<`>qyjai+#Qa_$UXl1t1cicV8VX`_D2Pkq z1&QY*LVAO^B9eN8Sl=6jYab9-MVCGxI`;vwkHmGM^#$SF*OF5V>}zSE-V`Y$_Vk5C z(J)xt5|LpbBEmqVk+>r~`hjro2V#6b5cfnXiQ^=yhJ&~-Mu&qK6%OJmi3g%$1c(X| zAQB=#JQSBmTqNNi3E~kSX+?WPq8vX(q8yJ!?fxKq`@>>Me^~q~?vqF-5j+6IGqGR* zi1`CRydv?t2pR~Y=|B*h2ZDGZUXXZBA|wjLA0jCV#QG=@u7g0l5?uy?=sXC-J`k4I z7U443(or}M1`{RQzVT7 zv3?XRTt~yAsOT~pMCZ{U_K_$qv@sx@$AE|$1EQoz0il)>dB*}ui%3Elafnb>c#H#- z6GI8*MJl0!C^;TbQH&;35@!jOMa7Q*Rm22BRdI>nCA?z+ABcEDHF1;REo#RBs*6N| zkGM~$A?i;6)D#Nj)HOj0dz369~cL5}~E={shoU#1mSJn}jx^_H;m7kw|DK?gK>nbW|gF2CC6PESSNH z&R|7JbP_=ctY`u&ngF7UctPShiI7i0bQ4LRf>{442-le)LPVFDAUe+kv5!Pgq0Iu} zJPSnBED)h0g~T2bMH4~v5s`@?A`(HQkq8qWvq8Ae1~Gm%h;Wfg;y8(_4iJ%Iv;)K_ z2Z*aA28fDtKvb9mB4G}QC~=9zMH2pVK@1l0b3sg-3*sS(p`!LY5We$3ESU!)THGg* zP9j)<7%mnF5c36yS0qM?p!p!0&Ihr1K8Vrc1&QY*LKc7+E0Pv~Sib;->p~FYMVEyj zIxhsVk3_7{7J+bH1R`n?hzTNv#2ykw7lZg%L@ovqu^2=eiOIra2?+NkAjU5NF;%3J zI8LJKQV{WC^imL`mV&rSV!Eif3`B)xAQF~=ND!AuTqNPY9K=i!zZ}H0GSfatsi#6A+sgtiuh^I8y5YeB3KDJ1rgD7p^BDiOI3M8rA}X(ZMN zkM$tj*Mk_p9>hA4O5!+)s!1S{#ONdtqmn>eC9zRd+yJ7&1`r7wKx`J5NL(c0zY)Y% z5x)_{w2dGhlGrY4Zvx@F3B;03Aa;oRB+^L)Zw9eTEZ7WU{$>!bNFupMNIAZ-O-EALk-;1`ni2j(=FI zC%KO$$3LfHl&j!(q2<6rFXn__UWe1~6YFUhIWkWbq6Vx{n#29D+8 zQ!SyA`$Tel9;CPASTDA6K}a9TB}k4BFZ7k%r;>967nWWB6Ro1ml%zYze$sH37Zr6emOJX#vAl3W#VVAUPj!6C}rnf@xO+ zGEs7yB!`FHm5(L2S#q_&O_JOe$=O-|$&%z##dOGr4W>wrYYVyBkg1Z}E;+oGp-hw9 zXOhE zw?}gI!OfH$pJryE8$f1B?sLg~2rf}_c*@y$_NyVt*^>N18a4vwkla4WH3m0Fa{DFM z1l(N79gtj8aPuU0P;x=wF3WZ1kmQ=N{(NMPKR#Q{Qa6VrOYVr|T7dJEocZi^Ft{R; zNv&Pnrb2y=Gw_l@MbBh1;!-?x$rL3lftbNtSWn{elUK}Piil}AQ> zC%InWib;+SqqDT3km8cNB)n6wiCsn%nLdzZvX8%)=6%71OYW-V!ocxi5dN-7t{=h| zBzGMg{e?p=O75n#ivV{C9QPw>d>EhpVjwjo_p{`NgR3pMN9HCr0wiy$^7o509EosA$(ax1j{;X#a!;h) zXmETYiN9YZHwNMCl6xw-vEcY<6o1bo7dsBhIZ6H|$?@P$N$z*aeFTmVs`1AG&)Tu^ z_{u=B@P1?cc&NNZ{MN^+CHwUOLklA8>! zmRuKJOKu7{FUj%YEBc!X`HTVlRLM<4c!%UHR*X7^;~_ic#BdUAzQEkFO8e=E+AE`M zlH=0wRQkv!xdd=s!Sx1a7c1Z*R+CXPK`lp{^Z~knt_^T)q_o108$*4u3&Z8^%;|m+iYB7XM6n|ADw*=v_vgxXdn{@Gk zj9P{$yzHp|s!47+G`y^+|GXu)0vawd^j~%1y&o;@BcoP-A#EUSA-syTcZ1zsQY%`Vy=b~+KuGeJp+Gem>9KypBGLR=xaAh{uV zAg?er|AM@RJb^re{02D(;W2{8hP{w4Ap0N(AO|7KA$($gEQIeQ6o&9Pf#X9n{k%{N z3eN~U6BL5DLHII+{-y*l8zeh~FURmj7#;~eh0KJ^g77#nR=hakhA7YScF6<22^Z~xNi zfSQkwPk#Z~2iXrfkWCCa>eM!tk6H5>a&EH7!=R@1@aTl)fSkv_-oJ;nH45R7WKsrOZK=|4Rmu@cA`5+p^1;Q6y zPFjm20|ZV(=0WB|7C;t47C{z^$H$z)3ynZ<6ofBcabx@(hetxV_VU#NzTeOd!ljdsG;_J+^2p_o z%U^fo%a_RbGS3j?Q4Zzj`!xk1zk_=Yc>v){K;J+vK=_8zKFH?~zIV0Uia(&PKwu?g zl^B1*sl5Le7+a&E;ze}@FPZBnM4kw_u5uma(T=B49yIqOeh-9abe_p~iDxIAUUwLW zVh@1~h43AtVK9k?+(7scBn7eqvKz7;!e{liKsG}P!j22&6$sC*2cYwGenbSFbQ%!M zcPqFS@`T3|-9be2K>sDMI!gWs;ja+x3KVFi>#*m`JtZKs;eHxy`T^%7e!WoBoIGPg zVbTW@0^wPWhr`Pdo(IQ4hC_P5RbyZsh!3O+q&UPA;tnYYX#<LOz3dK^{YX<`wj11Y98BLe4-=LQ)~eAYVcXKn_C6L2^P$LSCV;PQZJ>8xRkK z`6&MfKt8da3|S9Z0VxDo0(pdZz7DVuVIK(JC~Rf@5U=QjKq^DZK>k8x8bm;j zp;BK$Mk36k(@r$-KH%q&9gwXeGFLB>KxTQD0&A}|6H0~rn(1)IC}(h&yhA!f!|9c>1`39=Eg0rCP3@CRfLWUCl@8|B{y`ZEZx?uok~yc(e#h8%(% zgdBkEhwOv!lH?0WvJCG5^3wNnV2TV=Cr^%Hrg>Y3zhXLR8ZZOX*%KuCLR7rtfdv6Q;&-JH=Xi}A$Ob#lx5R>4QUDa5YiA51gQr(0ZD}%*X`BgV&5GnpZaIO1Vc_k zn1U%!L7GFFLYhIEK#oBgL+G&qgkIAiM}_xYr{;N0HyJKO!d)kyg7owagsB1{OmV^} z@3y;6R*kvpIf`fSV$_Ha8YJ9vDqr@+0Iv zBpq@Oatm@7avSo4)M@XD?0yCw1e!iOV@;#qj==Vib`a*_$vcQ#>~0{^1LzJZ1Stsl z72FfZW5_QMA0%)BZ-J-~1@anvX~e)=Sj?(P=>O*R>J!h1elQAT=RHA;lnT6>;iEr;e`05v~P!j+|->?*~qOV(UQd z0AUMsf*eHDa9|818WIT!gLH#*g|K3jp$IcB0>XI4b%!u69N1fOp}-!HUXT!onVuZN zu}aS@BqM3W$bJwy?gKG1CiaDxPO|dkvf49aa;6OnJOna`JcRrJ-t6yBB8%Zb8JU$c zoeZY!JL1h2U>as(>cbGGf3{54+Ou`_ip3(3HKUQx8A%5tAZEsFCDSRJl1|wYrqeM9 zGu>ziYsy-hKFqEg1@7&_v|;8HCN>kYmTxC!!m$wAjsxz2Y=LZsF!K$NB*=Pk^C50r ztVED?SpiuBSq?FW)l!6)K^8+6K_)?%^+L!3NFszo=u=1nWCmn9DVkV24SJ!ZUMda?EkkT{@-l@^#4C?0do+&U10KN|7Y!cS;P1CKU*c7&C4Z` zPC3}jg@l8W&6qXQu9ACS(|?ZmSva~}e1ZUe%`S<!1r#+oCL>j;3_06r5 zEPmcz-d@!e^9xYNYaFOOxA>HmrPLnYMvVE5s4Ay-Uz;6UcVT8sbupo(b%Lk)>8amq zdVQKJ_I4T!YIs$z;pOe!4$nVZJv_rU>Tk}+J@;I+!)->I6AWs4)%3!p)*#WQl{FZT zmMx>*WZ31#T3TY?rzegIGNQ*J|Tqnn35zOWQ_-d@$b?6{5=gIimD)b?UkYiniCKAUjA0~wm1 zd~5bRb)fChs`h#C?B)H|*6-99ai|U4ju%$|o>MmC$OrT7uElQ0CnQz1(5;^RERnk{ z+%6O!5>|_mgsoy@Tck3-3)f|1=^tGukN5(qY9SRKWB6KJr-AulxmGWZ?E1pmdm#*J zptPvf&mw<2YdEqW+YYVtvq&X)3b*#w33v>0L3_kC6KV&Pu&eOwfH=Jz9%5n#YhgTy zyaX|x%|64K6osDNch2@NE~nzZk&3*%_-`2*HvA7rSb2}hQOvKijLQv zPB^+?D89p2h8;_8d6^>q>|%AtgSS+LS66Fc&!V`u%Gz`}TC44k&0hQj=jdma*-!N8 zYHehDwjXyY#m%nPf-*Rvfwdrtf3>UC!`9~j?w$)WrSBqG1df^<)F1qcYc!)oXRj-_ zD#IZs1fFPVD}1`aVNV$36_5H_-NoE)*5Y_Jcvm-TWjum=vzyhUbiG5ye+T>oFbCXy zUHF$WgA0mvaKnKOH|K>KkM2zuk0+r{e;g9mW}r@PV*3QJUZQdWpp{tG9WX$=COJi% z9S4{%9+KQ5ijM~z6(vJ3Jg$rDQ_vQJLadGPNVj(%6v1}H__)IoUd8?1||%94r8J*-uvDZsBMW{8o|+m?85q0KC7PZ^ux zRxhZ>dm`VRr%^c%b+?EO&2X4mhBr$6Ry)ev^pqZWg#T>s3*&6b*yLsW!^KQ|#++^(kV0#_;%^95w6hSo;_TzFyv3 zz|Nl&IR{v)tJ_520P7+(LR=YurP};h;=1^UVdX;cx|Ol{prt2>+yh}?er555n)h<6 zjp;A-uJB=3ED;|LMB{H1gJB1VA81{rx{In&NLB7zW2O6aXz|dAuJeZ@l@I1KdboxN zg#jM>A4@y=LCCl@+rqz@V!7KuW{d8ubV`(`>azd3oOz{K-+ zSKa+Z#-L!=z7>B(VRtdVI$85&p+SAB=e%iAD{*+@S59~jvi9uM@qTD zptv{48tiF)w({n{vKQAh8-2oXikjiS%i3x%nxMXj9E?S=g;+8e%hYaR8)E$fPspo7 zu`DjWYJBF;{21iCTix@_ow0GVUP*6`u9dtHZeRSrU$TiIBZnh0{hCoVc1s;pB9<2i21S19}5;qt#Y|_38UC7)r0Gz zO7uH@n!a81?9jr;Z-^hFt^GXv-_#%0io29O;a;by3G3mEyQVL0ZHPWG)?mw}o8q$= zYYVlEcpZZ#d5?W<+)5BW!>z&pz20ju(So)P5e^zpW?AS;GrQJ={MO4`J_F@V5S6z>8ac_VXcUa}D}bH>l=? z1^8!Ca-`KG|9_rCD~jNeRzJ&yJK~d()`ph5cf^^I=$XInh#yBWl>t8rM@ALcKC|l(v%H`-dX$ZePvg4y|#d-t5X6E|1- z@vbJ#THrmDtz&SiXgtOmVT64whKK5Js_uAIB5f=>%!rlhqQ5`f7{?jQ_dkhV2{`%u z&9TPvw0ytT)>j}+qPPcjZY8GHLUG5sTSm-$)KoGxJjMIws-j+Fw}WZ1?Po6;fUw1jN_0I z*D#|<#u+C=HFC^a_>9xXe>*gKnqOh{%+v1qq|a7O%Pg323{oeGtyBN=RJm9r;*e+_ zF6F6Go-yCu8+svqj02blUQ9VX5shkoQ+9K3O#Cl3k6mT%7@BAn;}rVl8Sl;WT1M-< zb>KBJ5`!jXbY(_s{I|+x^r1XE%UWhVAIl@;`%a&4ogJkg=|H;MDsCpA?c_L-6*U^f za`K^wnE9W>^NqeRPxjKCY;Lm^q+5Ah{hP!5e;XQqKjq$aJ@HQ_VAku3zZt+8QL^T5 z%`tiXl1Chvj+T^7Xw>}w(KL{C{YQh{sCh`yDqI_#W%BXMXF!1=~uC$gs;_EHjk(I+2w4P zt}UM4x8Ml5SYR3Z+f_m~(HoU{=QwzGTgc>Z&cb)C4;k~^{2cVm5v83zUEQIrzH8xV zi@#Zj>keEzH4|0m049mCbFd1TA9X%GbKTQ#&+O+FKhDlP2rUv@VNlEb3iS3>CEF#} z@c3Te-t?VVekeN5=jZnQvNasA05NuBkN)mA@z)%yd(FGQ8C&C|WjD*^J}{;;EO_Gx zYn=H}>ilE+eO0k~`SFO6HyWHp^SLOO`L*h*ojSR8n_K6AOp0=q7qK*WzXzjc;^bW1 z8k#8X&9#PGj=mJF=V5o$>+Vs+{F-lvi?!|#Jh~oVu;_tfB{#I&FU3+ATAscXd*NJd6!s8N0+X(cm`d#fu~%3ZdCD(Q#}%5>C1>>1n3H-@^?~LkhR%n1 zS23NS-=FbN?cxBmn&x+|>-5_Y?I_;^MpsaV2o6Pp(ZLpX$BSqJG3f6tXZsy8Xhn)UJZ{ zmgCaINt|C`^?TP{BitwD=rQg*Mf)MJVKC0q_vx7FlbcUAL3EChjbECj8iK({^7Rb2JYA5#5cPI>aXLsMpU5%X=H13vZFho3FiVOZY803dRx%}3P zOE-pZ%k=FKfy*#Y*1>?M#kii`XJ%h@rmS8%FK_hP7cwSKa8L2L?NYx?-)C*&(`B3| zuy99OTX?ep*K<_9$+Sp_-(NB&D7P}Zb-C?BGqWuut{_{C!Dq{?J~hoRaz_?zR%^$_ zKX{qygFD!0ZS$MmJ)15+Imzuvam46tQXQiyWI3vCe&oAguAr`cBEG8wgBo6#$ao+| zBreBF5hAX`uBQ2o?tAlMo~#J`ZLgKfDehNP!vmkj_lOVONnD@bt;z41F%D661+p+d z!(FYx!k)?5a$7PD_J~jzSiW`^<5pPRig6VQ&qfTDa?S)WhJoIr`Rf|WyGE`Nqkn)N?O0`iTlQa%^lzM*H%4T@ z8r-5WKUrTr@A!^4KX2PR(?TCD{OiQ@HMm%O*LX4VxaKSl(vw5Zl3FcJ?p`r_=a@`S zapKoCSp76ney!EV@~E)rz7~5`UZHNope!zCt_9dd-cx|KBJ?;QT+G}77$+tivEtV2 zR_t`HV#RiAfoxb0@z4&93t6$Bd5E42VKLED7P4Xk9VbHfBC)p^`kA$mxVjE^Ts{$h ztOK=Ll-vVr{O!fCDT2?_>#JVB@q2EZsWI`QzBcHK_?aSNaS}Gl^djP;^(d_>h8~bb zvB)^_*Lsv|wWx{`i~bv|HH?C)VnPz8yy@WAV&eN0ILItt4pDNWUO5!g2X)j-iWJ1o4=8B#Fe$W>y}SV^NC|17qz=PGMSXA8a@aA7}#$UrwAkf(|sCTYe}fPNhQC8(lWEKJ4DiHR}k*-=fNi zfX^~o-rX3RW)AwWF~*Lpz<>DGdmv+W$cnw0h0&?*mY3zlwH?+LmJ1a`m7U1)=L#a= zB+Bb7dhSHy%i4Gr#lwFk(TD-BYUloN@uD-CjTj&{!_YGn2Bl%J$-8Cjv5WUU(haI{ z`b`oyVW4ghe*lW4!md2*ehaUdXH4Vq6*BF9sVJ)LLe4JYz)3iKf46yy@w;FUR7vGq z{Ba47cU@e$wHxlFn*ACsw!`45mkZt`m|5vweOu8;I z4UJXL^1QOBatbY_PaJ)H($}@Dqf1}9GDg6gU2n|mg2hm@_b+J1Y%lwm-e#GPf`0*apzLgk%8r?bwcD(ENqUxGkk+Y)i!;XJHz|JcN8ZNNT?lV>e zeHL>xbKz6xiFGMh=FN4_SQ9*b@Sb!T_`5nf--E9Lc%?bbLpR*Qhe?wt!<<`)~^Sp<2O=p(J^u|S3~jVUaaEMNJhOm zUFAagkF)d;cfYW)94x^}`dxaW6kD`(s$7$96Oz|B#MtHcA{gfDSdR~XDqqgGYebNYlvQlF!u9``j@efR!c>17-1Cf{u$gY z#!g!3Fm}7uBIvNWVfx_smZb#d*6{u%M6RrQKg&}BwuNAGJv8?mxu(b!LoVrZ`;jhm z%|jg|QoclK-XKMZuW+&V?yUY}6A%}^(yOYUg5J#H{rSF`VTSf*0;9EyH1#tsTUxDM zUo!M^b=+d8iOX#CtAaMaaSUtZn_HW?MP{~9R=4ILd~5T1Pygwa%9`9PYR3NgzFg$o z6D?0*aC}`?wEhk&=!3e(3fkl1skma=ca1Z*hMZ!_39Q9c@LfeNFD_?}*U}D#)z36& zEzZIKe@}TpkbR@CCp-`0U?WdSSq>T*?UGZJJeQeBS{q&Uo_$sBik7$bzW0wyV{0?Z z_3kb0KesYti^8KG+=%d;6StfH-)}R<5%FCE&eIu(5Z;{lHTwR%tzq})=xdlh)}6(K zGuVpXTxHbq;xt%efeFXMXl>5I#ylE@*E9C@zO(%;-@gjElR1{;=y}huQQtXS^docD z!S(I~*}nrvzc~0`IiJXZ^B=3--%fsW?Wy_xwdbEMI&Y4Pf4KI@u_kA_JpRd%Cl}T? zPJ!~8LJYZtb@Sa-m7C0epAtS|{bg&79P=;XHBS6GU$zR*lGzFi^@_E;D0ju$8_#*h zU$K5r=cAp*b8A;Rj9uMnV+oIV=zK(Rf?J1NuM5<;HWzvx=wH?D*)DKIo$sdclNk6t zE1LY|inad6WdEtQg5^Y;6}GZs)Mi@=BXsart0uImwj5&GW?OD?bF*!Q9+7-wi|yqQ zmukiE$|!#Iiir~?vXv~{F8gPFQa7~E6{B3 Date: Thu, 22 May 2025 23:59:05 -0500 Subject: [PATCH 10/85] feat: install missing packages --- bun.lockb | Bin 401928 -> 509896 bytes package.json | 15 ++++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index 91c1acd017d5ff146af91bbeb08a9a56f4751baa..30215e4d69e960d046014bd363438fce9d47e96c 100755 GIT binary patch delta 154131 zcmeFaXLuCHwl&-{(!jJpVPrA_fkgv@0fR{f3>cFQ z7?YDo78%=Q44CKum|*a`R#%PCxv!7!d7tmzUmyKwwD#InwX15^uFyS=n0BbtvDpJI7O)sPJMe|K44^g zLKuyEgR9^bfy|!@JLCsVqMkosuOxT@q!&>Xds<;A+@P3=jD>+)45C21SzuClaA*n) zZ;^aNa8g`!T%1=QnAnhdtr$jYElR|^zh6g9Z09wh8Z2+>|D_}mw zuB4>|CwWF7!(=FEU^r4~zysZ555@wikCPZ37Zsiqos#ShPD6A9e$wLOLc{5S5lO)b z38NGxB!&!_8W9nmq$tth;o+91O_YyelnoAzf+OunNJx!MV8#__04x3m&7{G#z@osu za0?rd6v|wRatoaLOF$G!i;a$pj*U)E0qE&*@nPYf!6DJf;jzP6v4%|Sc@mK2LV@g9 z5U@8sX}_UXR^TCBrvh2vSHw#xU|4u!YA|{e8k0PdH6%oOhQuc)E3HciL-T>`Q9`6% zzf!%V=4&YL+Yx0sq9aqn<1i3P3vl+UE|Argmk4vwaVcI(8N>yf1D+5cAEV?2XGk_H zp=~x)w+EFG#ajazL2D5xbXQDxL`qbA{IKceMD}DL8k9Cz^3IYsmAr!F?m$Ff+N-jn z++85ulMO5m{7eR-21K*%X;JZU@$6tIDvQQYPelR)AR#_EB^2(+t}Gg81F~Up!Ey1? z==fA{_G2WFevbjNTn~v4tBMAPCx-^d1c!xR1E-&|fGpPu`SeIlM1}0x03ciVXLXUm z51fu}CiOLedc=m0f3#NG~bzT`fiN0KW^w7^Iz+xC2PfE(5Zj3?Lhj92K0D zV27bj^%Vt;NvjF02vmU;fDh{_N_pTZi5n%(0m92^!-4Q>T0e=cfNW4rARAB^$co>1 zii&@d_#KcP-3_!;SPg+K(j?j?#sTSpTFr!uQ<7t%L(t&R_?URi0Oc<9?nrNH5kvDm zIEP?2cmbfhmk7NS^qBf6iGzR~O0_vw3dUwHC{&L*g;nE3^;=@75FzaZZV( z_?Vc~1VtI>qbL~8wB`~^0IPsM^A;XG52Q!80qN2C5=Thv>ka?Y#a1YYRVy7;zL z;89>%@O2VrOH2WlfxaJ*u5S%w3`8V{4-bz^Np1p84<&^s$Hxp0S6a6h4QULdhicg& z&=sLk!7;<&(n%de0yYHCh?wBWQQ-8@cklp%XGC~NLU8CXrF>^GB*lUB-1<%;-x44V zE6{UjQ^J#yxmtPniD@|z$ofVCY1du|0u2O*#wW$00k3^UMH7MSNn3x>!@58Q(~&L$ z+XaXURwEx{=P5W1K0^aI))Tu53?4chRu!dEH?a=51DQV}I61{LHOU@*1{n)NF%n1v z`Cxzx$YK~KcY35~cVX~XOhf9gN}dv&5F8Q{t~^9JcH}0|4Hz388}1nvqMQfk5bOYQ zNX5V?${g_g+^OpK5(TOQX~4-RA_E(i4CJ~U3}nMP0y)+n^$|Ua0n*i_f`pyk;2f$Y z;H~Z+PT^n4MO~-1@u#tn!x%<;JlsRU%1>3ED0VZu{MxF*a67(;$=tC zfN29oMGL^oK;LPQqSOF-13458f%I7MA)=vw4HgZ20MzIId8ya~WQA*h?9qH6dpsg4 zIy4Gnh`nzlR%m4!^bE3ur1(fgcJg>|x;!3RDRCQ+uIy5;xt||19;c>~M;zE_G5yD_8AbXUF()7S^AbYGr&!LKpi4O^m zNmgE?mE@0s9D?ycHefc8Lpd}Vy8`TA4@dp%$vz}h0A3j?T)YDP<5A|^%!$Hd?) zpd1D-5B(M(d&muoo=S~Nh)Io%jvF5nUOQZ|48~c|*<&7m5`vSH=SzJCkQM!s zB3#=(RW!hvFEy2$vZCxkBo{@#i9imO2auln3do@-Izo6zKY)6o|E^GQtU8Yru5AQl z5Qd`wUF`wRg=i5tU0nyr=@dL#%x5QWG)Byxa?rB@ZGkNR-B@97H<0C>OYukJm>=_h zH4?ZYWsVoYF&fAQd;)y|U~*J+Y%JE$H={(*%|-**Gp9$=CW`$1fz_aI3ak#SF{qR)VI@o{9Jp;bWcZr!Je3de(UUIzhLfhVvIFdwio z@cu`_GY5c7Uo3Hy)bE=iJl$LJ20%MAnjp~7oix$1Z-La$1J(k@OMZQpXlQ521KC z#Mrf*D-1OSauyr~a_D@Kj~<*3=Sn zBoc}uD9{a<4;U5^Of}Bt@o{WeNK$-COthkmgyF(SKeRxs7rTM%k@N0jXz(b{gz!jZ zv(&EuvLSPTEa#2#Z0HtgC)U15xNtC#3I0Gfq&1K(t1o%fsD!BSI5Z?WEZTEuva$pQ z*i+~ITck8Ne2M75Fp2$v^x!*mf3fx^fw?EHDENVZ%lO+0vNRqUEu{NyEai)I>s0m-Yd&;TjvK}78Vjt5^bWLRhw$zzp?Cx=0$xlSdO$ajD9-KrJ9Wx&--&Q-SPABCrIo zzr==L!~Zn62L{;lL3>0C%OV5yW+2C~*S8{lCy*6y0I~!sfR_6BY?E`$04EL1kR46*n>ktczk_^F=GbQ zt4HrB1RyWma5W$vJuVu0_n7G66(Ae#+;&srq9dX)Erv%#<1DNw9Z!h#`9L=8ZIY4kWE5r^^z@(|H?#V4gs|}8G4TmlV1lFdpgE2T*r1K4L=Q%fh{iEQQD&SL`l@Hd z*p>vcA@R^N>gRqZg1KzA=&2o?Lm2>U2y6x{1^n`?J{0z}02HhQMGGLuW(6u_%W8mg zj68q^fZxa-|8!m$PP-t|hXXmr{efkGV=jsc+ktZ^zDIt>$X6&&yK66r22{Sx-4gTP z0|FPG(O1MYs|73pK1A}CKsK-lkOp5NzX!0=kD|vWiBEnI>6aw#0@C%5k)IW}zb5MW z91UTEPk@)?{J(u&ED#5PtY{UG1=E1lfJ1;4fnLCxz&$8PkF>un@-+m~bH(lmeQ|IO z#k*UgLDzv5z$g49Jmj3Fp`r1q_P7*9nU59~LWW~^MO045Qpf213&@_{1C|0N1L>K; zKvw7vWWMH-SCQ${VUIDf?14zPJ`_V$1xP#3fE+6OBlw?&Vjqc&MUcR0G3v1xLj{}_ zw0R;LQWwYuj6(%DK zFG1p5*kQ+%x55+lAPCHe{at?|?8Gk6)5SyMlewNKt-$BmHk`(L6#*MZdI zIq9fmJfL-+{T@KiS;hP;-xr*&4^IwBjgARZyj%_RtUaw71kUrqK*qvfE_y=RLm>GD zAbW5C$b1`s?7<=+hh{2}`4WN5H&F5pKz6Kw)RzOYyeiZGFtR-6|7{2~a0*BRyMWBN z3do8wW%?MI9w~V*ARE9(;_PCmIQS@M&{NK)r9hSs1=2$YfSeUE@u>;SzZJZI9g0i} z%or6MO;^$2a6B0f!|BR1JTc}ocY|&q6Ic-W#v?x)_^^OMcX4tw?mQ#n6%GL(@e*;P z9@-80I0VTlVV=C%YY)zbq@xZFMM`Q?h&>*pS7FiPwm|l%5s=fcGLStf3S`A5ARC${ z4TKjp=soHOq~YIz%-5-y(6b|+!@@_g4%!O=(gV&%y`jMg_7v`ZuBC(le;^I~T2eIV zE|7-rd5E#Z^I-kP{X955FdWDp9s;tV+ktH08i{wx81$YdL`RH5-O8uX(_WQ0;R(&d zE;1A;Ct5rm8R#0j#8@CJ!2Mrjcq6P0zBZ7qu2N0tUx2e?2f=j&*Bjosx^S)YhT*>}aJPnVu`|E(0c9aS z?RDYu_RAPCj=&ip+v8eWv;%iyBcg&+6g=38SR)a%Jj@{DpuVsrk~* z@8F!A73vxEbxsA6Kk+o^>*rY@7GitaCJ0<%zpro5Z;F?IbENJ!5C$U~iUwW=rvncH zIZJyq5)EDt&SgVGIW_RUqj0h8u4WH{JLaGMS?NBs^ zz#%RTWC%EiBqVOC+_5RgOAOJWC!AA5^@7RmDiIkYt;FD-dkV^94H zfp@U0jV)Hy-o2%)ps{BP9>OZf5S)}0JgP`58KX#NY(O8*Ns%fWq_!4A5(UnN4*;^q zPoU>m2elDHf>j`86qeB2&~u37qom}R_^{yQC@ks6n~MTFfgIy7%r(!5xa2k9blu~2 z!ljej3)dw986&|!re|~z`tIQL%thp9ObqQP>>dVZzW;j4e^P?^5ChKj>R~5g=m#Jh z@*^@Zcw&47$E~d1le+k>i9M+Tq-TyIAIJ6~I8O&tu=&yhCHzGLf|KJK@&+McIPam8 zm37dwoB>#zG2r~p>QNVA=n9ZMJPKq3wn_XP$Q~{NvH|h(G_V5=V1qvcvgcI;4f+wX z0FVu-*If*82_S>>9rVPXf%+rmbQEO9tv&R4nYI#0gYnR_M?EF_$O>u#+2ee`a=_QU zgy(+8Ga?$k3Z%U!y+uO~fqQ`O>LcuJ0%r%~f(&*&V|z>;R+tbS7td+5vablLQ9uUO zLLg^}LGsB!HXszpih2U+nN~oa4r&4EiBdq0y*rQ|I~pYH{DrR%IRv#8%~-00ef>Z| zqvH}&qm#muejX%>eGjDB6B1Lzm(+?fM2`GmVQwZko5?8~7M`N)MSgPUH(*=A^@yn^ z%B=%u^~(izNlO|j?jYlng4un=7%KYlEJTdleIN~91=5i73#fD8^vnD(kq;Y;cDt0P zeHl8$eDftbA3lVHCXGr+8Jav5dUgyS-S1;%z8g`(Z(X7VI?sR3wjRsfI0q42UdG2$b_nhZC=W)(?Y;zvhoaapEInsF^bRPHQfi&m*={#TNoD*B2 z2lUvm1QE(7(KANIH$X;OqU>=nkUTq4L|k|2nSM#aqirRhi;!igpGp?_z6LS^C!~l_ z?w%?_rV_9eC-rj(48i6=#(n`HWBxe`kPjFk=E5l;^R18u+ktZq{eXOYjx-cVJ`L%d zi?v6K{H1_g9L@om@AW8y{&3?O(9XM@=VL@gN1&jAK`=y*+#hSuZ%`9pkopiHcZycP z%D~j|!c+Z$H0);=i$Y@{^H&FQ!S_oOF_fH=6qg#SC=-f{2Hl&4NzI;Km?RXFCL8o8 z<9oq5Sw90-0Pdb58q#v2=+SuS*?^Gv5&E~F!QgaxXCN!C3FKj+G>{EefNbD>lxO-S zASe5`6VXDt_}g@0a0QUA`wSWQ{O83CgMQy=pDFS^0J3273=s?eGM3OghjIkU*8=Yi zWJBrz8B+y-Z0N!X!u};Y1dizwU`629K=yb7kS*;GtO0BdWDiP9{^lc*?*gzo^q*+L zgPXy5qdQw-9FPszKTkAh;CxYEU+5W>AuS=$@JNT~d0!wKunYzC1}zW`Sq0=!jf1`_ zaG*^02C{;(lGlJeHr%mZtQVnXtzY>s%|DcGd@_7PdP(iGilyvN6E>aybLy*^#!HE5 zj@FIp++UMk@Z!Zh30a21-*;Vi|8>-w8lfYaE)hZbKsU1RLX;=bw7JKQ$gO~wmIVh)xH8%H)y5h_XP5nB^4S6EpQEE*jZJfHxvgWV`|s-c z%}zb?eVx{M>uo(bW>a{F*)RJ$@zKVqmTW(Y;W!zkKfpN=c)fc!F^89jw zdnN0E3f-q){IYzIubUQBJ3;%dc7rX2>fATj7u;MjVp?aH-=l9oO{@B3xANxPx%NI| zzS`AvlUu&VmE)R?8TZ4P$YMvo=-B_JGWo=mxxteT`mIhHT*B}?Deu&mt$tV=m>Al= z;ESo<`?xgoOY9M|&((0`Mry?6(%X*b8FMV~?d$4M&l5*?P)7HP$eTI1@XRFzVzQ_C z?w)fmz03f^;Oh3`c~XKh{p()15$-;9{?Ud(^*o#1e%P^{eSc!HW(#JNS2MPD{UN1n z({CDAtNr!00m~BdHhGs+%?`D)H1&8ty=aOQz{u= z?fs(D3$I$&pZ=CoeMxrJtxdbM+~Im|bx`Z5OL;%4J8RkIUT?>p=@s?+gF_P=_bKuC z*N7IsoPFS%@pM~CaaOwhkFpZ0C!b#h296Q z9a&R%bj!v;yNsoay=i~aqg1)*MNj%Hoo%h54E)7CdivX+w{?k3_CDOh>j&EouM%Uw zUfg9&)ZIbfhV*NBuKV`7mzq7D_Oxu(ag`oUZ|M=`+U%Q=Z)!%pzW-IjbwjFZC8nNj z_i*UBE$zzJSaa6?y%yEDf&KYdk2`J$7Aqn5yG(Md^WFO-Y~#gM<%@r`ws1iDkIx4; z*;z5@Tvqp$1g#Q7h4p7omPS$6WE1+({cEd8WU zy*4l6UuISQ@x|gpbIb34d2j#9w+H8SE%K^Ki{JYFbYiLL>%j%=vkslCQI;_$=*PWZL9^RU_ihtsr);IPo+Ma)9Vptn@d-j^0Lu(gIQzqQ3{$NVk z9ToHB3vTgON1sdAP6hb3uALTeV&Rjv!Iz4s>|NGAsb_`HgRB!g_pSM1Rmq0YTSFtS z<|&_&y8Q6VD)xm*ZR+<(s}a%i@lP|qYEgA>>F+K_d|j;UhLWY%w7<|M^q0|N7RBw) zGab>7)e4yWcJ9g!XI4B4v2XM1z1d}=N94(@ z8iPyUoi#ITVVlveN7L3_Sg>hT{eHs?RU0*$Fl1oQyUkV}J#oM5&Lvw*U+5W~@8RGc zV|?=8TsHp4${okM78)^PY~R$37kU3!dnxW&#|^I&Dm2|bJ^EtIr-O>)>S>DRMs{8F!LwFB!`Rjia6 zlP~IJbdxW>TYk}}TUpuR+n$WfX`g7gP=Lb9ptg|-srx&R! zR*Y;rc8f8@@pPa)y`Awuf_vG=@k)dzvPw=x( ztR7gwYhu8KxJeaz^iIu~dGpNn1NMNM@z-|`IxzCa?h{?!rq*zLjs3eDY16cc~8w+PW{#+Mx~W9Dn6qo!_6P`f5u%m0S}N?bD@| zd3l`;FKt~5k9@GABa@3y+#w@XFugY8Qn z`@`|5YJ;uY>JRPI>!WD}F1if%`2Bpr^*&{*m)MBT0aFR4?fj$<)740}u%a|0!##CcpljhsfW||H~3oQfL&p_&c>;^5<+hQu7 zhkAFL)zlSIE9NlGhSXd0hx8MqF4P$t=GEL<+sv_f6~&jQ*379c4YV|Gv$_MC7SO0# zVLyvH(yS;}u%cRFAB*}8SYszMJ~eAu0XDTZZqu7V>8fRRv>0PlEo+fYJq#tSxN6zY zE$Uxj?Z6CLV6dfdTilNOFb#LsFsQUgo*G)K5Y-h4O*H?$R`pv-$l{_`TL|~*oxt*H z*it)P;ed z#)7f^@UxG_bR4XWKK}V|Ulss;9^KWEVC=JtmU+a>48qzCTJ|)H`dnr-YMK4K%(yY8 z--H)G0%KoA#+_jGbXGXZ;(iaTIhYHE$`5taVVD>_i)wB`Hghm;jW{%p;4q^eKc=>QHwqSty1nZAZrpC-mXD{1MzHshkoS{C41WzEgcrdGuLJo}GirghQ-og^zj}s%pMnY{s!wwRC`?nwHhYrVgqm1`|`LrNubEn&#_o zGhV5tr330z*RuR=YIJq61frU*7UP!cnp=R)R0z)=I%@6#R<#c#&T}-|W>G%@YYUd2 zlg;>J4K2N^%~-XTmetj!uCA>peUMgA%lysDl|(z$)oSWh2VY3)(if0==+fI9sT<~J zAa&|8NL}^ff$3hZAbwOEt)7}&cbjQweY_#Y4ZxHQDO8u5AoPQEX&$7(y7VkZ>H&uf z-DXGw_0)n0;QqQaG)FoNDM)kgZZ(y|+TK%_5+QZhrGt>V=~7Wl5g~;_3ea_%a-_c? zbN4gCOn_G9Q(W{x}+s9@c-b_metN{zMslQ|YppUUEJn%ADw5%YTag0TC z>uWO}w`jh7ZE7jZNX`x{eJe(+X|__o>~wt5YkXceRbWz9H}hA zPUuo0_0dyLLh7YUmD(}1&=xfX68r*RW`E~pXs4wI+l;@p)3SnX<{|Cz<|vYK7AxbC z_L^^q&6E$52up7}tGOd2E^>~*kzzep=RgCKh<|RI7r|&dIrWrf*{k2-5^;WlFfU(FYA*jGyj)bZ1@ z!fk4XpP2lZ+8walf!VZEHmfmj7cD))ruuaeClRxj*}-BQ-$iqav>C5<(R=}e{I&E* zoB9=2MqgCvqGh9Tul+T*D4VG-c1i>yHr=I=xRB)0H`mu-j2c8BwpuUDLktxcnQmTY zNw8}p=^7X&Aa<3&4i>cuETAO2meIj#oZClBPq3NJ zV|i?+Wh7YD%0bRUBbsaq0_#A%X&oeQZnvg;kcQ~Gj(xd6F?A^<8x5LXL+YvPhWAsH zp}KSflCPe+sXv!0<}(byQ9_qG=SZ25y6d{zkOomQwjQXZr`Xha1I3Dh!!M%lJ1}g6 zp;lA;AVrCzWV|{^OHZ{Kn+?{oQf;Q%L-b`j)oMzG*H(^TV7F+!N?&%Df%nDk@dQ7}vq z1|EX8XqY%ADf%I-Ef^;Ta<=j^gLs38X>bmV(;uT8Zc$C);`j*rSYI24YgwahYTF1A zGB|FATGWrgSO85A!sZ#FrH`?he}R&fiyrJ-rn*KVc(hZat)?xIB6P_kila(hBBWN7 zjGLk~w{ZyTD9v}A&18$#V_}@tG#U~P5@WqxA+%vuRUIlS*6$EZRxqp&Fg6O(5M6o> zsh=)&9fr3MH2-l{^${dSv54^MF(L@zB-}X-02`#|-vz0Io?nR-GZxDNrcDPhFa69t z4-$eKJ5Oe$MSVy;7?!&JxKoG|bNBrcI!kKA;&L0z7rAwts%N}d1uz(xfqZ$t8PfE7 zDRmtf$3~oP?}6piqSj1sE~p%a5HOL(m1QBAKC2yp#SLC&Fj~=1*=prP(K>hlfe{Zz zf8fpvw`ps^Si1?>j4R8XB@X?Lc;dW(`9>XFkn_) z?>j;aEw&AuG(H=lrKj6W-$U6_HxM~eUwB|@HzX`tkPM@ox?Yg51VOhHk{>1G_|cm0 zOdM)QYw3W#W3;T9Hq*{Add8Vnlgn5}f5uF!vF%tbJ;P?Y2L+a_46CvJIL&RA&G^YU z&3Bf~ls!&Ar(s>KHJ)ciE{Mw@b<+I%SdBlA*L-K&OfBu`m43T27E&|4e}SKSxq@J! zLv@AHoDOhI6#i7T>^2rP8;mk&ovfv2+KkDQwJgB1 z$(q|7o3Y&#%@^?96fJ#@O)WcBI2EIU{jM(wCdmt7#sjaLpZOuGf&Tl0Y|P zhMt;%8)--)C=f!X;xnoD*RVK4((@XBn5kvWw;BC1G&hIMv^qoTRrgtVH62aG?Qn?2 zGztv)=Ua`BXK8K=a44D0KC79t#Sy)%K6&bXENa6fzzHW4jNyqh1H%3USQ{{XNjJJ@ zYU!WYOkFcM)Hr;YW<%1S-WZQ(YQ76?>MJPP>ZP&Js1N6e#Z4^A0=7BfxDXm3@YKB zfzgs)gSrlkhituH#=G-0wOEB zy8`a&vA28##`%pkOkm=8j)E;0h^_HMdrrTfF=b@133G54~`3tbtVEUSAe7IP1TZOyYPjecF zUi1d*$cH^OPeS5|D7ZZMOI}|?Ukv*0Ls!pszu0`Amf&4VExW|&itI)3C7ARj9@*`c zX>JxXXpaxHz0O+5!i&YG*%T9LEo;OSa0SS!?{uO`OpE41{rHe;!kTGm>d+JB`8KX|3R zMRkBRU`O@mcSph4cATd%ZOW|@eieITFc`xYdljA?eG29UhOoq*dqFbnxqU5W_s>N+ zJp$)MsAljMdS2{~rWs&;w2ZY@p82Aha|BtE9VW+`Zok%mUbp}Tu9_Mud(=8a&*J^GXZR$}dI_a62 zT<{B?XfoDY)j&vo!blrTY%uI3>#fGSUueEx+0=6D#Jq>w{4MHWu$=l$pMv>o?q{r~ z3+wgA4!?ODHfUL=@Mvp;h${UErK?EmI%7DO`wE+gXgIdqF<^aIr&@lK(2KQXELfYIGT(wRs`WHefz6yKtg#=Y?wbE; ztGXVN$dUc4SALN8tO8e2#D{p+n6yPp-)U2qZE-q|0q`?ePh=I(WjbvY{=i{nk;OP= ztCqFf=DuAjX|00u$)!4So5+f&f|>1LtzZVT9M2kGfQg9Xv*kwH#nOjp9A{DAfHg-> z!J6z4=Ng@v&wP!uCem`&5%*p@75>Qrya0rME|(X+1+Bl)@z*aYEWIFz+;>xR`md+-ohLLtkgI9 z;UvfN?UzCZ_#QV6whYi@C}^u?M^_+Y1^o zEIg)Wf{C&?`l-jkMEu~Py6UlCxJ7I-DPS@d*I=l@x}Z*^A*bJ_4fj!1~psg1P zoq;L(xmSKk(2VyXUf6V8EV1s;=E0{7g1-hI#}}T5ltyeJF19_!nWCOYN*ktVnNPi3 zvoIjK6M90T8s7{|v8eOG8i1L3I988#QqY`%331F@CoD7TuG7YOdmYf%4`h9TiQ=%RE@k;Fn#<_-e!1`e@ zhPgOGEIRG9&bx*)U|f5}eT(-QOc^koc~RF~Ft%9S;amh8qFZ6w*6(mk1;Y$|>t)Us zks~S}4JKv>GoA!X*NdUSYVWh60&xR(0F03;$`v^$R$8Pj@G^riN!)9l1mjABH3@At zofjbu29rI&+96HcYdOH$f}!U)F8u-K59Y3WQoA6^iN4+hW7LQT0_84>B^#B)=Eq<; zT`=7O>#Bbb)9_Nx_Y`PH6j*Cf7reY5jJ^|{X@42dM|4JeTfka?iLsx1MNtNbobSBM zAU$(3w);LO>7bVxWN1#3+Ye$9!zk|YGK2IJNeCF9A9D}Qr~ks`^IemT#4NyyFiynHi3PCAE&Nmb9JUB7XN=7uw}p`$v*tt4Fj|}%)qE$X z0FL7kU_){xo7E%G2(PeLWq-oSS+9(P^(ojOFnx-tZ@_3;1dZQa=j35dI~b>#n;tY* zzHezYJppt!fEc)z0D8;kc4r7frz!J&M%@iJPk(16<~}G5#skG6KCW)zlwm>AA6{FFm_k0Dwn|8 zfaySo6{}AmJ^(_E< zZ}TY_LqVi@zs$|1gK-1LI*NOyAHf&^coK#0cALJ^+&0-vO06Fz!bpt(tpo77WJWGwBaD)`2kyoLhuhy$Ow%NJk)e6cE*-)!3Q(fOSBc zSW-R(lk3u5FEa?6gWFCl&h-lBGV9n^0=FH|c)2`f2nGxvgqGbU&KRvpl=pO`~% z-5D^}gfrwWi@9iVgTAV~f6x{H4VQI14G*fXwc6Q9Em%s_D9TR-W4p0&F1MIYf#I9= zc2<{q9tLg3E+6%she6-Eu>#t+7FCAdSB}TsSyt-FM_eWeoRs;loK8k z!4wQ8($GKkQ^~~Rg)3m9xq-M{YFu9QP29Rgg0+NA{f#7-o#o+;y*{d21u>Bfj?Buq z#{i@6^v4bqSWBn$L7?hLTFWK~2A?)Op4R1z@? zFSf&a3RYLQglFL<4a}zb_qUp^GMD~+VA0Cdx#K}bAS7SjcDt;rY|!!@^fBeDV&GSk z*jWcdVuWI(CwdvGXuj`SnxT?i?qe}^tO{50!IU~367}LSn140F#Md%Y!RSJ9n{rAr zv5l+M;SkL~$Z8$}sW)=HAEfQjaM(oHKLZmr@D`?qFsUE8)S;4zN5`Loak0YL1_!8T zU<@0@ky#TSuPIEb`s1PDlA#>-(5+ysK!0rP@~S30d(6jFyOsfuc29M&szH==yWEMU zfYC1YU(}KX#uy$t_RI2 zAD1&gztcXZD)r%7KDKfhRUcz~#z*}Vnh@9$kGuvo5N&~F#7nJ)j1BbIlnP0FZ@Uu` zBLR_$NH;Vx$onlkY%vW06K`_Phr}Votc$X^JZgkiWc#SK8;iM!D1zVmfzeYK9bb#f z+{WnlSs&9QXj}7PoQr1@wD6pdy1I$5g?!m~^Pp*tM|WG)E|Tf*A*!E(aTba98*YOM zFL9Zu)J)VS&Y}ImxT)ypNteuKsOf@_%K_kw3qGdjNX2`L9j$6Di)gWU=$8nF2UB=8 z1Xj%c*%8^ml;B9V$^-bteCKQbEg6M%0mVwDeVFS99lg3$Hysbfh zs!@bzdY6E<7^Ry&>Lh4s4XZXz`j^3Yi-~UxGvTOq&R+3p>{PIv$aFEaM-1G;jBhVC zIeoZX@^?TC-1cz^0Q%kbQI~aa#(m*c7MI)5ovV#$CTC)5u&-@v8pE^iJ{Dl zu(-H&Lg~9cCf`m5z66MQp9#&0yFM;nol)|hk2<@vLBC(XT8H_39gMRZ^8(+v)bJH+ z5KhkU@H#L)HPM;NBVV-ozK@H=5BBc+m=gWqFYVNQtGXHzM*?%-&tl5c1@^h;sJ$U^ zqtow+r7*nT*t*qdMGzD73l%L>R%G{gTy1V zzILnMf%VQQQ@y8Xn6MBA#&|;ams-@Xa~K}ln)3HD@Ex5KR<$oAadr$mZE;!F3#0m* zkEuX!eY}6Os=XkIR`D#m0t|72uR7fOh%RBiU~HqocwY*?hv6G3uwH^8T5AW1@zl3z zmq|ewhG*l{Y-o8%$NhP{McvdlCpuy6cQEd|`Ztqm<9=fOgG=!}Wjq+u-k;DmLem`@ zcq9@#O8=ZWiG`^bm{`#{IE%n|Z>t|B%n!lnyPOlQ+IoP~x7;OXfN_>#wRquW9DtGh z!^g!u5Dt1dPTe-pIU%`RyawZjj4tlAnCcBegEjw~_!1Nn7b83wg417v;akKGR@FLK zGz(MR=4F;dUzJ?42g5(FeN5^Qga+>>T-pvn)vtZj1<PrMbgKHA~t zipK$WpzZ2#cg5p?#zQf;gqZeTJoR2IJuD|fBt$=vcQeG!LVWXHY!{QG&3G?fd@ojr z&B+k;UflFvd=0Uqu-iH=N1XOvJR?Na;BAO^_^O7MfOLRsJQhPy@TVM6t(_oNaSUR6 zi+KzfR}UFmTUA4X!xxW7)I5nI0XG*|0{VdQRs$~+F2@U=iH`Kb@aVNfM;1^mlO(nr zJ=GKihMSDnR^#VMj`SkP_fwK13#fjdECLl(BVvlBh{-D0JTP(d7#QVcPId0rob{`~ zIP3MZnwo#OSkDCO2gbESu=QZV2+RHUJ`HzKBSwhT0{a}E7u^Blswm1e8Y!BB>5u#1 zv0$P;<~#|;RTybt6-VVxO90~vgq01)t=6NRHkora7^i@!?=cvy2-bRxSbGKg6f8(j z<3uVj*4ZOk83HETg5B{eFmX2G?ra`s&>xQLeK1CibNG57kat4s?-vP#V@Bhkp$egd{wQ)xz{87|zAGSG)zO zy)f~5Qce~u*sUfzyUlau8n7t6Yh;C{h({opc^HrZV1xBEygZ=(05(K80cqB$PFM0- z(R8rzoSaXQOK@3U>oINSB-?oFP~^Sdv~<_7g8NNKQXZ&1Z8d;m{i= z%+{xz=_*tM^>H$`_}JlA6#+8+V}lax$nY?DyFwc5aIcE|oioMAFU&M3@gjQEIgAoL zkOo1N+EWk*3vFG^pu~z8SO<~&gx(p`L$F8(?)<%7=Tc$~rkxN&9sUSL*LemdSubZw zna@>MkHmuz#ZJ#Ys}A7-VNe6>qc_#mHx{9Lz1xo$f=4y})_*BQo zgijrb4S=rr;54CML^pge@cKn$IULdT>+jI$cwEO&((Zx`I4|qf;ee`NL?b@9v(V8G zm=7PULORDfqF=d@)!~~9y;}HAzj7n(A$awRNIr;Pu;hm@6dxKGh7T_y`xj4wi^%?` z;KK%wz=s#n;K=YqKUjPeDL$j|;YDQjarm%4J3hSr4w?QDKFmJ}A6`V-n@oa>$YxC^ z!IcYz$y^G(V7kc1Z@BgAKS5SFL+1Y{WJ71+!~C=P=#JNHeDdNmp9B|?85|_Ih;-y) zd<>2~o(7BVxFw*xh|Io}1Q(GVUO|E@H!|N!e2A;?;YD=AXCn!&{{V&K{)3GA2yPN~ zmA^yw`)hpYnB6kpe~+Smy#RZMc@Fr09iTj5}{&DPT`3C9+&^$#Y{K=m*GhL-;=^Fe7fb^y{CH z`EZw{=Z}#2b0fVNE%ii-LnY#7LoCTa+QC^}=c)M1T>6Fc^S?zV4VUReR)kZnUIEUm z`bDIObET7m<;$3dnq`C9Vas z{3akTBE`-4#l7=esRxRY$faQZ+!_8a&a!)@fxkmGWIxi02W7t8Nc~~xnRJAaK;fv& zNYvLp$uIr`($Hm@o*TKSUzd6!Bj*;7s@sy^1=5ob?bK2L(%@qtUHYr!zXO@^B@jQ# zEB^X7$ntNH&hmfBd_)dKUM5Opl38*)1u9gDZZd&LeLl&F6y2r1fW(3l3o#KFkzx_a ziL_HxVlj!uMLPa31tI9jmV1CxRYvOn4r#C~(uw6{zQ02zRgmeqk@Zy3%VYej$_zxh zn*R?bRdpnK0$EW#iS>aT<7Pl!L>g=%Igw-T1Ei`YeldRsAnkMnGToQR`1gmvi%3I( zk`q~=yX3i%`X10%2J%1FBp(jMk1`U!Siu+|?QxDXJx%gSKwd;UTQ&m%bs6}@jI)3= zkO`!Lc@jU7=?f)a0%X2rK>R2xq<*#3e<5*$)NcZEx!M8b1+?oG?1qB6JrefWR!m|`86P~+{pabp(oyu={JmW{@;Y601}?c48H)`fZt_C zBKZp-d+?{!6KU|RzWQVMh=SH^2 z2m0c`?m(9BA+e{#UJ`o)IkNp-5E9Hd0195Ykr{$zfe;`o2$T78BO4wi^+ei>mYhg2 zMq<3w6KOAzQ<4Req#{M)aG8iPWRXHZ z+AS=x2#^<%>BU{;sR4q15m}&w%-{iJ1ItKW9*7^MveZ{4!9`@bYCsyUDbs7q^xViv z-$3dc@Sj@pdan?M8p;er8f*fj%1i2r?5Pis72AMJYQtX=S+2cI?;!QLk?Ec7GJ`LW z2D<{8&>hI0_XP4HvZ7v+=f;}QkCW-+CDJZ0BJF$x)X$evKNZN(v(J(lK9)EK$ci)| zuYW@3n=A7X*>DGtvGJMI6RBSTWJ6W~S?+Tne(cH@Qn3!mD>pLZdgxj3OPNlj!A(G> zZj0P&+d zk@}|+e*v-~ze#)sEClY#)<}d(F@x*zm!AR@g@Ei?Q6MWS2INKL*p&uy7FPx`sRn*A zUrot9fy~z!$b42H?Y0E!#}>(bf%s9n;+G!(6j*V0nb1e#03Zzv0rJX?%pVFp*NHeF zdz>Ki{U^wVCz|B^hoHA;IFOt7Bx#69!&7AX3?K{6l=@jfHgJyQbAk9#KEW^MTPSf6 zkPTh}q=!~Y{VJ23|Er*&%QgUc5n1s@AXQuOiw3tz{SF{q`YjVBa_>C`&WcU|ng683 zQxZ>0#74|91(w z^=!y}Y48^y`LELOe}ZL^-yMEuks?5rFUoOX{86Byn9Se-sNM<+&q@m+7V{W8A3wq{1DbtDMrzIzHNX|)4Wcme(mw>c$ zS*BmMI|Z3=MRFn+m>ZJkM!N2{%zsBB|5hZg+(^|!sVA}_k0mFP+n-7Wk>YdwVg)aO zZ0Rd1B~t&VWSnVBnRs2kFH?Cmonk+ zkm(y`I*|?E3Z#CU#O)IKXHj|m9WwvdGX3kkqJCXLgL{xbR~-b>BZpV5lVgr8%GW~_*Z-6ZS7RW0% zGG+{@g=hjYUtS;^VrK2Q>=c;bCKK`jIo8F1tf-{K(m-BB8Ym<6<)uD1vck&H6RS(C zE%OmszK%en)H5jVQ#^use`F zEI=a?$qP#UFUa`&7lq_3P)HWYjno&G6%+v$1FtUg{T;GHjbwUmWXGC9uRpbJCNmIO zfkpD%NWGWT=SCW`N_}o*esAcR)Ly3l4T|rNIwAvI+8M}#zLIy51&P%AOHL#Ykl0n~ ziL?_4ECY;@`hSn`Kch537EF?u0%T02O9TIFX#ZcRfS#El?dC>$CPV6p%x9k^6+~wE zSSDmjJ&}R_iPSFya;;e=^=pAFw@%^)APs*haU+m1vKh!(vP1G+BHga+hCl;*B<=+= z;~~k90NH@kl79!J!E=&dka!8mq5MJet3c+v0c836KsM}WAoD#2@~O4*6av@k=RjtB z3*>^44_h1yMl~B9Ir6 z1(Seii!ugC!{a4>1f<6%NyLt0GWRgkdG*pB{E?dkcL-C zTm__o&m~_2Wd3!MZvfJBTY&7@E+7r_4}ud9$n;}CmOCN!XCy!C2LChRf=svqt2 zI}mj!(}5hLSwN=G1=8R=i4c`4@5xAzrznNOUYv* z#s@BzcW!A`uk~c!WKl|eMwX^(x2`~Ba=K76B+*x@tszu(H zj*K`%DaQr7!4H2=rBa%qkE2t(!QC-A&EV(HSAU(C>z8wqEV0{bh14&*^zgmZvk`AS z94{6pEzAD(Vd|XuGrP3BUbkxEw!xJLA8p*YnRQd|xK)iTrw$jLcyx23=gKC7!yh^x z$D^X~2L?Z58O4#b-_YB!CV@3|F#7qIb5;X%tvEc!Wzw4=o!itr*Jpd>8*6JcxZU{b zwah)kXBXSp{J_&CHyU0$?{o8P{h?nqIj62jfAjp+*yTQbjy{f@8d3GsxmunM|3pJ6 z`|DRney&$8_(;R>>k}f&UNWEkw9s~sPOI-v+3E9p^%ZUzUAL8XNvryBqszuRf%p^B zN^1YcLzN5jdzQ`ikB=Vj9*E~)@}3p!|jVNGrNy#=DKidE%yW2pAOqL z;%fKP@oq=$O`d(bywC2x-mEm1!7MC&x)xMkl>xEOLi zb!*1U>W2C|)vvTpi*Ntgy}?0`qItvapKNjV55Ic5UNuSjWYWF@zFUVkUG(uA$A%;f z)Tb*E0DKM4dAXjuT4Vo&whMz2N*YRBb*=XLMaI%H1%9X&Gh)`DE-PD~s{7=%NB>Li z=`U(sSU3OK64MjUejnd(i{I4x=#r_)m4um^eSxV(Gjy2joIUve17Li{H4Pbc01MRXRM((9{h^lhIm zl5l46l5573wqgBmx4C3K9a#1BmOIxx9`)Gx$n5{**`A}X%~?gx+7+-c zNo^5&f#yEnGo|D)_0ZlU#-Trf-BYzszX;s{c4OWgt3#a>wa&<~QU1H(^ZwTcCob^M z`FGRCE%>y#(Z9i{QSArEPiK{gqv^9=Ph$lZ6}j=>IqJ%Wn&^_Gt?fOEJ0XG zT=#z)%D={L_%-AJ24EhLMOK&}uCODvHnsp3kaB`k5DWNjqqMzmVE%<6Ntg44OJg6~ zYQHiaxE&=ngd?7}ZX1YO^yjx})4eJ4s`f}0RtHP}jEf(o9)u=-<|zgAx|)4M>V>V^ zF*zu0j2-#EM^XDfTgR=Co~#m;6Kaw9c8cat9WOf_TI~@}R=*btyd#J=zHo3o!08Pz z7wqt&P>k9rrIvi`@snb7G1g5XeuZ41vZ4MJ#)khpP#>~o+!u8xSuv?h3M=;$4xR|i za|%VdTBIH=zx-t9iF0OWYQDjd>kyRI*VnUKuG@lBd%;@O*oNHHi}8g3%X6{i-TMC> zXXk(SIq(>j|L=n9z+#Ja^6;(h_Rmq`(Tn32g!?H%$7arG)A!S|Jy1Iwz56$`5=bZbd(yem()fuQ^3heUNPsTNsQj z^7C%>KE)ZpUAiqe@P7{Z^?&bukhw*|n8h+`uk4Eo%1lS|7n3u;CXANS z^kKI*^YZq&M=xSKSn1sU4bRrKC9lnkpoEx!;iZD1<-g({eDXUO!N@N={&&G$#PUcg zxFhDdN~0|uxPDp0z5MUZA3xqlvh$aZIsN#xUROmqJ=)W=shP~<-oyNaytr$W&m}Z& zQhWZz1>V7hn_K`Mqm^Fu`ob>rO1Rm`^0muSk~`g6i6(6)DMCYe+7i_VR0IP(P4zYu zvJSRuOB>8u`H2?oH_8;K#v^~erynaJCbw=D!N|JHC^vkQcl5>-7Y6tDR2keZcyeEFzwgt}jv!2;# zWQm~tiWNvjbpGO>IPshOq$>aF%C*;JLSw0{22?%Z&$M_be6YCp|27M6S@d#0AIr_t zm2uw6W%b)kNtUn*8zd&_!fntSt4>!W~D(ne9#b;{E6g=V?8 zLEbz#`MTf~Zr59xWp7s8Zfcw^#ZIl{sY6_0WV8KQqrzcRSJn=W&r?H`^pO;b%m9Vk z_Qi^J!Om7AKasO7CpCOdg+SZWw<;)KXKXnr7C!+eCe=jvuMWJj!jmk z9*}y&Jo;-3v$ak7OP7@wOTR~`8|dn)EK3YJN=U~yNNne@wQy>r6MUF2Xk-f}DcbON z@gNCrE^~jyQKUfU`N{d7Xd6bJJZ9eL?Z)iAcND!W4Zj}|D%~b7>s)UZLItw-=a;Jt&bj8X*fXxBQx z$LB?Y+jSO=j=nTgb5QGd1uz(CpAnF3gQxJ)aXJ8!}RzT7fj^`jA8P;GI z88$%C4W*-Mi@CbMWunE;E?=(pmO#NTN^B3V>K*HynvXxy7OLJ*{b_si&SiOGb}=CS zT=P~Cspq@fiPSum)Eu2RaKDsMf4R|e9}I-R>;C0Zcxu=LJU=$B;v?0jXStola(`au zyXZ3!vdGjtsySREf8g}&_UCBsE#4LD2fmE;FTR(3Go~mZPs~`T#?39nxbE#R>!j{u zhi$6_&Uq4kiu;j>|Ad`gJRWPKm3D1GN+WrLO!&n*U+|Std9*))_#=Kxoe___N#2a4 zd$y5Iy#fj64f74aGZaOy@;moD+^=HIzi3}T(m#Q9p<>Wq@1_fpVW*%Hk%RM&yiDEI^6iM+V;0VD9mou2Q1+lCXj)4ueg z58?7v4yn>lBsAt*uWLM?Og~R4tM(~Nuu&GAw)DxCy_TKE6SC%;cGsLWSf$Q7YxkOy zBx@)quW`E;8OCb)0WKeS!}A9|$Or(_Z~*!kxL4x7@Na(yf_$L|f(2v*0Z~6VfVt^hpVnGQq z03Zs4BMz7$BOcTsBLPqb!I228kns_;AR`H&gW*U94#-FWJ;+D}Ebrk+1FpzO2P4SH z09+w(r=F$2oeG8b{HRP26pHL+Duhk=2#Cr8qG1ra5l9MykOS5ca7lxp8V(^3#D_!R zOowoaKmkyUfG~wXK?H;%aEw4;1_Yx>2qhpV5`xGl2&7RE%79)Jgf#>j5U2n|A7Ec4 zFhfQas6j?Gpp1s223R4Z7PKIv4xnS;s0R+nXaGIPXap>=a5Mo|WHf^jWV8S-07onE zK}H*xMn*djjDw>C1RaHF8MG{H37!;f%pUnoCOe05f}i9 zi4dj`C`g1b1db61EQDb65yA+_`3OOz2m)ymgfBoZ3Bnoz4G4?_qGSkh#SmSqhcJu40^mxA zP>n!nI)o)Kjli=C2;vzKmO)Sk1o}z{n+U7|(NAy{*1$S4)`4Uu92+1W89%`;GJXNY z&v0ylG&sOiHT101+Y- zkSd1a(h4QB7zzmr>>}py~t!l0oE!wub_Y%GMP|d6q(E@z+DX|3tSmEL3JRepk&rT;ejiI25eOX! z+y<1*5EMosI5tBN1uY01A#kk)!X41l0wMbg1m0E%;=r{Pg645a?Sb$R==DGlnSs!Nz#~A^3tov>i`7Z zc?h!zm;kOp2!!7ugbqS51JejpBOpEm!5jn)L3p+RVG{uhAUX_zei1^_FodUI9f58H zR7W6Kf%p*!E=v$j5wHe|qYyZMKqwf6U<-~Bm_oql3j{lm^94fSG6d2w2o6AR41&lC zga!m&0itmTYY5nmLvRE&2*j;IV4Q&946G&~D6BykK)@BCCm|dm;5iAw9rPfOy$*qQ z3W6taor0jd0bv#aZ@@JTf$%4U&}j%hU>bpH1jN5W@B=|#Aw2s9VH1G>AUXqqeiK5{ z41{-J9f58HRKGz80`cD09FeS6!swuAP^7Gix7?w@LYtD z2zn66{tbb52|^NZU4o!{0AUt^6u|WZ0^uJBp+6v`foTM)5fER7kO6|0Av`;Tu!%q> z5M6;le*__E1ws~BN1z)4)l~>NAbu5s%Q1vg1oD958U)V25DL~H6o6v{rVyxDhfoAi z8xR6dAT+>t=HZhKqMr~%{z0()384(sAh3o2<1Yvm!0H!-xKjuN2vh;|CIp2u2%eh| zYCsPHM+oq4L8t?+TM)9(Am;gP< zm;@}xa7+PLWK4q*WPAl&f8m$`K5&3+Vz{B@zi>mdK=1^DE(wH~6A1HQ0Rh4b5M=*B zSOAg#AXFo8fWQ)vJcaO#6hh`Hgk`V`0kr}Y&)`@EX~@;0S?Rco0s24<3YU8VJh>oB~07 z2)eWoV(=lHg9QW#=^)4wz<(A(A-|9Qe=oRU*C|S7{Q0*-7Tze-R*zc$Tq7S0W8;xZ zo4w~)Do7L2N8V;~$K*V6c}nnvc8B_#S3alk9j`t$V4v{D&NuQGD4@fp_l~+IcIf+g z)=XK2@0j#!s?cfA^VP%rd-fea8jQciUd%&1T)98*wM?>A_%Q#=uTbfLoavPde#<;2 zd#isO%LPR-Ui08!)>-;I!DTodJeSkkIB5>tc4V-8XLIA#b7BKB-!+~qdUH*^1=2jn zuIT8L;^dxy=2!!~;JhzZdEU*!c{?%0OShi@BYJFl;K&Ep0T0yh!gZiW!*yUpfB^Ui zLg+@I;W`8&K!kjU%Owc5ybwshx(Ni%%Mf@4AdmtFeh5+5ppM!qTAjVngq zq7PSYmvoo$WIr+Ynt29z8L{bAv&92P`IJiQ>wV7d6ufq;T*mS`(>TY~6Q?0f`Bh)P z&Wv5W$vW_xv7ndUx$qL*g%6E~AqU?7@8vf&Hjtu*Z-1^aVv~A1 z4H_7vw!R@6U^qRbc1c#OjHj71iZphzyqjP=k}a?H=B|EgmB4kbkB^ve@~#dW8F!bv zevosyESsJNSCg;mH(3C_`^|d4T|V-x+01P)$D3M zwSAXHj&Heku731;f_^G;K=GZZTfP4qw(t+pF7h}V|cymLE(U+x!5-fM_;v(se! z>FO@sFT%*9!v^}aaJLnh;BM<$kqW1L=@sw}ubudpFL(9!Tx;o-?TkDua!#WVoDJ8M z{I3Q~?YMCixA!kE$gn)STeFamHufNqJJZCV6aD@J#&(h8#s7D~6_7MEnkJteUEBNl znLfk@lSjYUhuPpJytqpO}LGkzi~@*+IP8JHV5yRA+eN$zXl zHTfQFGQr#GvIe{r{deGbWaGFl3C@yqb${Y^tXE$&t)HC4UKhS-c*Eq@lsuje@v7V( z;?yr|l8w(h)NwASnzo9RKbM@%N6;~RUM zPidpg%j-RLQGaCv{Au!JTeGgp0aX^5r}AyQ6@>QdbfG$_MRLKPYa*Tu7Vo*y`CRR? zOz>1+satq?#>MYz%6Z4l1V?+>1PJz%yEXV&$)$alTrqhvtbG;)K|cUC<1tm|c09(o#|W^azY#;Lt%!9GLb%44rn<3W6$ z>pZgH6v?v+LZc*4AR4Qp;SER z{DhES>)+1N?hBW~xl&Sf2%PH#g}rYu4BefdNpEk9*#JgtFwfUVNtDK*{^X5h=0axG z=c}4Z9G2;wO>dsGr01^X^3WFA^QFZ`4m@#89g22$v{}5R@xbI1AICZ!lp!wcDgImLF7X|wQhKLXdLF-DT$jD zZ;d^UMfD0V8kH6*gWiakq&M(1XfSWdGS=hoVq8}nr%1Kg+70D;uXAOKf!tzotmx~N zSxxr+tOgBhpL*ow`&W2qO)O{vH!?3d{x#L**4r>NS?(9c$m77wqo`M35Y?II{?nAu zzsY_w!W~svs9GQD`byz6{D`fztfnDf!pn6Xoxby);xR+!LQ2pvU-rjq3x7G*n}VIn z{LDZDl6UxGnT~0z?dqk=*bcm=@p1~2mz7+0a#h0flG6eUzsLOkVOEIl7Q*4HbUcdL zUC{HIx`C(M*VPzV+*LWUXMvoybF1S1@iZWaUe}5Ej)8&73{g~2Fiu+{7 zJj^b!n~u$Q+Nj>?slv{?*Z}n5rA{g0afwY@I~J{rM(tsM(%0^4gakC033 z@^#PSJ5D8)SAUF_e`I_S;Zj+|9_f>%^{;MEc&WUGcFY?^wtpz+xTbM7WdewQ z800egzSWl$Km&Eo`-9YN#e?#aHqV1D3I*C~RE5PbIZ5z2LHuwhFgA~gZR#{CmP4>o-RfGFU7l(9y)6)b)!oC7 zt`gjoo*y1KB?O^dFpu}V;pF+5>Q~nm`$-bNZ_M;x$i7xT$Zoyc&cgY=?9&JBktVlD z{iqh(%jzX&vK%YeEV^&bqlhlg=8Fk=FLkUd)w<9lJCDr^GBy@T;7N!5Knpk?|UWhP>FiqJ1tFDLhPm%AkGc* z_P4cjR%YnLbbkNv(kl#`naF1iydu;8?b0yet* z4V98R^QRr3w5@TYcNQa06f>_tV#D$^Zx^_E&fgpJ_HE-x^`vIQrri4t0;_c@^o)HU zV@|(meF~bM#+7U=%VNe%D#zVmT}G=`!<$5H_ul&%u!-bN#Y*ps2Q{)K|M%BB~Oo!hN8iMkiW(uEWRYgy*zcBwq?AM{aTvrQhtAp9@n$@7h!{%W2%l$LHXj!bnAbI&~1l(LX z%G~->>@HJZuD&gK^}q-u@xVOSi{iiN&fbq)?wfyL$IROM{%DRZ*vGQ&K1*ibx;5F{ zoM)2V&Ukh#%_2eQf`VY6k+`NY{;%)psBGs>$vYy$0S;?rv_`=z4i^IvXYjzt`+`!o9BB~FNeO9Rg=|(t7^`;=Gf#^&1aJLIp3a1Y3@$ax8w78P~UL%M{TLx)f6O zzth0|?+KM8W*)VUbLwew0=B2)MYQ8-Z)sk1LpnwCDFYm}Y1h8khaH&tAGbm)mJ%sq)k7sm5BJSn{FNHH_7h#?0$~&`kc* zBJ(tFA&-wi;kThzj(K*u-v?u?SF0z+_8;uE)*{3X7AVm)_7#3CAN)mWtPNYcbC1J9 z98Vt4=7Y`jVCR!#$oa|7k9NuoVoz<d0^QS}gUcC5M3cz$O~IDpjry4V&*o-D|D3}0Z=^CPdx)!-{`c~GMUp&J24 zbqI>UN*#iW0E7VqlmYqy1WrNtVlO!~=YB^z0blATO4jVB(c4WkG;3`+G9%`t;6y#W zw!t|)X(mUR&dGz*auC=V&NL}tg~!+_KblCBWr*ZH{@>Xb|93sAVlEWLeUVbR?voig zlZiNqC=Ttnb1}N#wzn@44&PdmX1(C?_zGJOuE9$*=ZPPkb%1JDDD%^@SbkHi+*%n_ zLA^n33K$TC*Q3ar9jjxt=Y;|!pRe6zsN~PO!nIgPS3IZA;1%+3d+g!rpW*nCk5qDw zsCIEtYL8^+u#~1kcj6rUkC7@T7#&2?;4v+tDKAFp&0r_B zc$lY7pUvkdh9AD4Bs(U9uKdy0AlsNQm6gi)nU>XDDI*B?ZAb(vtpj-8fO&V{h1j@- zRJ~b!aN3WvYw=35JtnZcjKYxmG>3Dfs9w1aD?Jc1(usCsU2@rfAY@X^j+;(}FnV zH3Dz$5xQ~jJm(WpT2uBUr)&Gzyxo;wddJ1r$$^FRfT;1R-LqyaqXtII=k1RGS`6N1 z)`Z|~raiCI{{UVGB2pqAHlfolaT_V@NjwYwv=e2Df9%dmlhtIFMB<)pm_2{@B;+tV z&>`V!CtHqR6TbD$QNN*J28_Md!rW_~8<&~RZH@Ar>O9%Jf3gdqq)OdHnjMXVZ92M} zKKyGKyOjHBEh+`Aoe>}!$z{RPe8Ka{l3e22IH6HO^~`hrSrB>?UMZmz(_?-ll_MET z8Xql>txfR*zj17Qsx`?x5Aou>HFxx3ZL~=KR{USB{gE)~pDJS2@a)hFxqqI#^H#W8 zZp2uJk*9;1H;fzeB^4_*)i08_v5V}X;m6{_pLveVkh+2Z_%3Iu`?L({#R7qtG|e<%gAytaqn4R6V|(V&v&z=2e<=@u;Fg zEi}I=JqMY-DiBcOnyg4gg)><|x@PD{J>-Ot;KU%i?&8@q?57%!G*pckbm4}*F zTmnBVroLE%O(gH=i1qJ2--BtQZk5LZmt9#OJ`-ZiD*Cv<5pX?A!b5jWk}jH)B_6MP zq}zsqm+8VdHj${@^sMF#j?7%enU!BIMxFs?o|jl5Ns1wPaj8LG-mRDA7cZwo0?t6Q z`Y*U!5^IyIvkU~$o3WndXle`80{;Yx=6Qhgyrt25VcbR^0(IuV&u1V>80N`Z1?JM> zdFwqiy*!Z6xS=vrN<4pZ<}MssYc;v_H5PR*|0V;TI8(5Hh(?s>9QU#YMa|o45r^R9 zb@g&qi}HMoJR{7!FVwa1@7%94#<}%NbI0p@Ua|@NHB>eJdU{fwuySgW7XR+@pYLOP z=-Wx$Nh+pv}RPH_lKNMxF^~UZ+HT zbNe>hQH?ujC7tYj8>>=5z_i4%y;Wsik4WFU(XGb!E&oyp(0`Q|cb+Ys)b@n6Jf3m= z@#x}%CXHOB+6&p>6v?x75OHAop%tfO;XM+v%M|SttW84$2A`&>Zm&08%KVM{%FqSp zS4*d`OY}TR_ER^#q**Y}WgdKIvO+e&Z~cEKy8Pe0y%}bnAfrg_&e@kL0q`$Pds!R% zo5VNs$TP)d{$y3>e^`z+Pi9JdwP%;nxzUSF{F@Q*LlIy0)p0A#7emrTmB}tq4}t;_ zn8&}rVQ~A)z3Er|aUbn%e>%SUG;iO2Tk zJ`Doaj4ytgpj8LS|I&t&*SHhkH9563KOv~eIZ$u>XJQV|y$AC?-tyiqF<)Oe==Hen z;6GSWT35hyt|5Ne!ruN`w8^s)q6ros`5Z!z=}h6zx!2CBe@p+Sd!>DAGU&bPT&$id z=I?e`VCEU{2dT1ms8Ny`VN*^uer``}FZ(&iCT5u}v6p0{V)*>&2Y2>}*JS9dthM|q z`QqIBf_9JDV|{Q#Ud;^JPIyYq15z=VSIXd?MvB$4evU`Q7$wR-luZ6nlJK9xj^WKf z%M`JH=}ER(UGE;upVH#vqmKfrD*rC}{?_}leBa-hZGSeqApqmH_Y^a)anN>$Sifdo zb*6`zxLotKeA0rHSBtq_P)pxEiiF?N7LUKv&p*0}ro3CzXV5(F#Cdb4Lyb`8g^Qc( zAOF28f+L^-$#dwq{8-JmMdwM})eF6i)s7xVQ}SJxq=%#FkFzRiE{oN(6&Hj$DHg6Y zoBf*KyyW#l=$G47wVbWa^}l$|>oS;k%T}0qt>?UsGCgxs8W$fba(~t3Tw$d@ZETu* z*QiEa*P25}LVaVf^!@rcI_{Zc8P6zjXUR~Q;#%y^$#B~Sx%<($+a|ER1M|#Daf!GU z({uwSK8<}BsJ%@hwUGI?>fzOaPpF-Yq3){>_wPN@TYk-0f`=ArvsG1P*{3|!QKI9fJ-p&yxl6Bw4bXE zt$q-~mGm>DbDK4>B`8in-dRbAlNTrG?Koh(3-gA(MCwI8rzFXagz$H;Y9z}0URZo2 zrx!ZH_!9pL0pC6QAS3A%8BRmX?TdIBUoQq$Xf6|*%1&Ggjt+^&d#Egdk!OpU7hxG{ zbL9A;7;ljHh4aw`r#<%7%l;%>l=6#Dbw6=rj5Ql+*XjmHq0vIyrcXaH-#DtnikD=+ z{D@jou|Z!W>@*b&AbD!(*lj#L>=E|$rWY(ljySA-o3ztr*&6&Y;@n)`(@d%{9gnk# z7-wTXu#IV7x7J!m2Vc`>zmFYjtui5k^=bwq&ki&1fW9$9O4n!Yk<|l9GCyus6MW-| z3BLx%JMKJQlLP@tjJXcf*_GL7<^sXVsw(mp*H>er9{i(@wrVS(_AFoirvFi7jeDiwy{3pMJ=Z1tv-KHY zonYzNMtaLDdm&{Qc@CI)_brL3mam)Ldl```C9r_Q*CBe1I#G`#A3I1^aGmpPg1lz` ziR@tu8b#Pmz3mxVe0TfuUs|FJzHe;rzM=H8cd!7j1kCeVy-rfHWPFTTX8fVTRu`!- z;#6Lao9HaGtKMnWkGo!fjj$5GrJ2Ft#!Sggsvz~f+Sj*l{o+^~xW_zEzo>T?BkvVv zUL^fLf)#=%9O9AqjCy;LGk-6Fug!;F6EpDX@xLC`^07Z#jN6btngBk-XpY3h9>Kj~Cur#7DResJysf8%xaRcX7?p5NAk`vwAOk zE={|MD}eDS2N`eCfRTxJ&ZV-Mj|LmJ`)(*5ym3Tfh1MvZ?0IB)QpoWna@UIuY2w^vTUaEoZs`#E~hsT zqcXkRTaYPqv|5uwo)+uxKx{65UPc-?}tOfKqmjcw6E z>~q~^-E_`h!Ix{|9E=U!NUJ)l#88}xlSQ9e~vsSM>bTjd2>Z>?OvyeVFfD%#i*4+IQf4_9(b|#H z>sFlVr0(I$Xh3F zP!-qo6y;1nUsAYw$#7ys30*by!oH+9pkV2ikiy=>^_Sy8`hlM{ zjmbSgk|fMC!rod}W&`zX(BLe{8!#=zRF#i1jL1^y=2&dZ1?xHaDkfFN723rTKMvugdY)?si%WtR@Ld#b za&5j{!N~hR=WYGJZ%^Zj*>f;;uqE<&Uh9u~zaYKHo%e*UIhM{qpUSTocDGMQ29BDfA@2FrQR+x0o;C8B z__s~*)_r)X=V2eaICKjwl5xwhswvQ>89WD6TB46PB;S{&YZ!S~IyB1B_%~ z-g2eaH_ipryfHB?^_A|ub-|KP3mV+m!B_VjitL<2h3AWSgUJFu`P2SYZ5t=>vmD4+ zxG^AGXm|gK*C6?u49qtl0x>1T;qpE6^t z-aE{^`ZsBM<8t3hDir!<>cg9P7PQ%?EDCcT)m6$v2+ zz;}9-Ca7clcj*`QgXdg7*!srJlE{@9BoZ6Y6NW?RdRl?|IaI*qtCXDdg%NLV{y!2o zgn_Lb%xi3YQ$WJ{^2O#C@wc@^*xVDwZ!_8F^{>#=cynoH7d$E5jaS7!+p82bYslTx zV2-{PoPYEccMWBhNz$S+7_o$rhn%AQzYA{m8@;#r&)Kq;t_$O-P+eMBE4t7#bhPrk z_#3;lhw61T>@EU{f#0}j&pNRx0nRCxjpJ&!yhyL7L*Jr$`)C3pqyeKm%xiajBxdca z^j-m{ePY72TPX9-9nEx;52vi(H?yB}&{7hQW>d0-B$MRzx63*?!Jj`7zZ3J}NhJyU zH6u*|0WXX^#n=+PG3%Vjxc-+63?O+}x6D5+eF_&hdn>0LO&^CdNjXI{ zzhg|06GOJXWlY*O>@2g}26p-H?tWCHiac)na$!;7Sspw*2DH`K_Wdi}K-^ z1nRx+t7oNk;c>WDbIy6jl~%`AV3`7%5bGjDX=#1SWCo`=An)iFygbEJWW zTUYZ7Nko~uSx59G-`i{wHL`M_h0&9V@$?Qo&%Na+@MeE^&Pxa?4sC=)YPt;oUPYM4 zT4yJGv`eCYb7R5>rSa;c;*UTNWtzL+(;XT6x?j=g_|E9X@=u1L$zHm^~FYCpeWq!qrPRXwlS>jl{uuhPFX7+aC0Hd63ilbt?WWei`M+?=VY0cZzUDm z&&HigU#N)IZJx{sb(l~RSSs{>WVJ|krR{2oYYFjr^8P?ypuoppw=PW+8teYuE93+R0f|R zKG&)JHOcRL5tq-3mC84bL8ubUE6tVGHy}tUX83KccfTvT|2LJ;O*j2hS}tlkN&1`I zX$xPTuB%HlNDe$u>IyZnGk7QdP$VR@k5bSxpN31c0`r%A0cPG0NA;=JgnQ{{mp@-> z-#4#rKuOd#q?c5w^-doI%;31Uwe4WD`Qf5V-Ecm8#S6daOp4=0wS{u9Er^`+-i*G~ z0K}Eyo33h49kt0L#G@OJ0!7!?V~46kx3|2sc0Kau^! z#+pQlV*pz~Y%GAyQuIC1v+jzp_XLxh2Z7JXE-=OSNY047Sk-`Uy1Ux7J;cV?Y$E1f zf0+E}>9E3l5}+AYK`=abegAd#!+C2QF}Xgl)cq`1J6OTELav7t9m-V^9Zv2~d11KS zh@VC)G2pXW`U8iS(>Rc%0B1MiT~6XBXEdWR%9eNsBQFUvkBy+^^F%@Pb_8Jz=j1SV zW7$BimP)3bE=9w87HtW+#6P*+t(R&2(AURIU92f|<4jm56RYEF(5y?(Xa^L@)7^lo zD$JAnus)JUeV&&hXLpVjW1p!TZ)1M%hQcr%m7xQ!e4Ky4xos%^3_&*DXa4Q=1nG&? z03t`5WNn=f!0^UvdulC=ycEp5iL-ehT=Na|XtVzFG3D}Jw{t>4fzgV!sVfyZZhf~# zrsMWf?W#7=%G#A2sMq=a*?$U8LT=pEY#~S`e!7>s_5_?Fd3PlmvD=dihEYQ%&~HUC--5 z89BNaMFfeCNiye0-_(sKiw6a2FwaIQ`)3BFaR+{f+4v8?-{J~y42W?DwH=h*TP1cK*jVMu6&)!xyXix9B!&6wml>FO`>mR{)zUxJUr#M)OXi{;wPzB`wcC(il-OKi~BSNVN+D#VuSG7WYe5@eoU-Ng-k5@ogOO~UdXWHXTeO@d#_DBa=24lhI%yx@GNeNvTv`~CyIYiLw8*Q*rR=Zv zhLk;`+U@9?qEg!zR`%n)bz)_z0i=zyCX#hvm%Vxr)qQ&P*0jk}fpq$r&lw-6~Q3C=_yS<#T&i9!#f ztqcuDUKVEFvWzP}ceS>bT9w$RL{oGu$!PQqTLCq(8l%fa3b?oGNf(X1;#xnT7n)43 z=Ehbo{^`f&el8ev>E{el71lMm=lGxj$+J}D>LC@wdAZj~*HCY*R(1FAse10yl)9i! z@4HQZx-{R3mnLK+pw7sD#tixp31?)}9)1I4?hU%``go-)ms2qEaxnAw=Th!2TP5{8 zpjLV1Xn9U<6r&!gZ$mbk^db7j=mBZP%43!uK_@#jtrXgeja`LJkx@Qusz}pxd`*XA z{}{D(2iQJ@d0IK13GRPbo-5mY*?9F=)6Fj7SFrhX+E@GQ%(s3o@+kLk87q}nV0@cdHvdA%Tl zF`W3?l}L7(v5?&`+f6%k$`y~5Uvr7is0?b`-8Fw4}1(%VuZK#In8hLs}P-A z&QemjfBS`zSAd!K{K=(ZC8xw}nXhDju-7iKPR&#g(e1WGeAFlSpd{y2Vyr$A|4zsi zt!T#~*Zr2WusP@qJ0B~YVj64hyss^*3k?R4yp1d6T6?#vFJ5eS`_SG0SunocX4=u% z48Q!B1DEef>4b1b!7aiKu_?SarWYyyXd9S0QQ?Q^`*m=M)AXK9ZYW~p6=CL$=05HJ z4nM8dW%K$<(gTm`nG!YEru&qdVo%kSS~z}LwN$a+++H9>t6Iq75=}b)YxkM=R+OxY zp}iBpiqfOU&jg;2V4lEKX6Y{Rb$zX$YAh{BT1unkwJo}*L?NrU4%Tb$P>D8EJZCD3 zy}{=7V=!1UCh7@;1n>Uf;@_gy{S)hDau<7yyb{d3sOB<4aXggx-mqugf=KH+qthGyn$H>y2L9(*v;8X zrkf}wx-qY9a=JfFwy6g7_C}L9ym2%`DV7^Ipp)cX0>Y(@wwa-+oJ!Bf0ta_@AJTCK}R6BX71iTC`Zu|VdfWt zTO0Oo7IUAT+!*Gv>II=%FwZ9UfJ`CO+KNZHwnTW+y4;?9a0QgM~P@& zQS$3~g{uqsv=PgG>9V0RJ0_-k{%xJpRrS?>H%c(_sxb3buWjoJGUu$t1=3Z-)a%k! zT)+xyV(H~-Z}};RwK3=3`%JCTUn@?d^TQ>8PTN_=%qSfxnTmjh1)L(6xNDqtcvEu zM49;B*Yr?+n@+1I5!rZWw;x76L_4ASX$dnyJbpD-Ua z>M-+qLN&=H5=p+c)n9v;#pv|xjhxJjAB7u}qe*y)xsO)E`kHT`E!nKmyG4NvV$A8q zj0MXi3MxbU<`zxS@exjjAs|Ty=H+c3j2_ev+I%*(Cn?g=|Ly@Ek_!2<3b1nEdcD^b zHwztJ)S{R_-tl$D@$oTh;r>?g#xgze?;8I-$xwn}fB1>k|M#KR2FyJAHu{zUe#=B^Meiu48kSfOp9 z9|@UbclU&K*xxWeKQYg&j(3&bhnVkbHeu$~%~=%OPc9?XxNWav9%AkDyRh>s_T$H% zHJNuc*o)|{wuOl{@^REUJrjwaEMD>$Z)6Y=Uq6{ zxf9~h_VOvl>a}3z`B3?n@j7#+ultQTbRR}v%67q{)Zj2RoccsQp=0KH<||H1KvYtS zenr!&MW&Bx?0=ge`n~B5w&I&6-4I5Zc>oIZVBQ|@aWxlvBxgi>cl^)vh+yV;)lTDbs|OX!zNeOO$z{Lf?}IqKf>ggzYd_uMIQrBW=R+ zd&%Nb^(Q)`WnTFN5@=ukZ@UfsrB9l0?(rF=&5SU;6#qqr){@3y!QU0^^H6lW#u~0w zo}ekKNft2Dhk5r$YhDr*6R%IuT~dyz+fLoI&acKTA1w(AJN4{S|MQjRc*|3M z^YJ*jg(0unig^kdo&!;1;YFeAxsTIm#ndrBbK8NLcRTB3$0$4bkYwk9z{N%5_J!Be zD)^K)mZYn&eb*%2|J`Z)=5FPE5AD5p&59-NEQ-N^h2ry@%H8geFF&s5M_Z2pQUjPr zdNGq=xL3vt_hE%i9LEPn{ zo-u)~(<;e((r$()k1?*?F3h~ES#&%vSEzbQZVPfRZ;Is~;0scXbv|~Ae=lk7XTg#G zUTD0ZOm`FQ^J7&{{Dwj$yN90!jVRp$-vkToI+%9J0u4x>HgDrP)fNAnIjQmIzu>14 zIikZW>hw!4FJU?GjCJnp{CdgxaP(=~TZWZ?1ttDo)VIS~??y(J3UuV_ezAq0g2%|~ z!OS~il0u#O(8x$_JYf}j6j70_rG8sRM1lHLmNbU;iR*X6;lgL$&erI4dC8pIO9BKb zp#@7_A2x!>Rs!zd59M*g0=9-Q??dnpD*x;Q*etjuJ6 zBF;Y?rN_pm=e|Gu(|EN=@L;9JXISoGKs{Q#&S^{we5&TG*xJIOci z14bj57mdf8THGf)_{>8*@OO*uTKgSmeV^;KQ4@9REg4IqxfFK0;o45`!oLDjTPpL> zDz`G;%CNgOEmo*LhS11;3yi!0%)EbN6WD6R)aG|a3MG_OtSCFaYyZ_dSw*X`Q<0v%XFJ z8+xSTyf0PL+34FzS9YP8oX_COzyFW8w~nhSYx}ql=N#-#Q0xL!6h!PU#O_A1TTyJ~ zU}GyP3%jtpb!8oS%E_5EJwtUa8Y(ffJc=l$d5%du*%qe_)+XX<@W>r6l{7zX2?;UPU!q@LzF)MRYlns<356 zq8Ul5&nr9s;qYa(CN}NUy$ zVo&98^6xL_@N=C?@}*#nl!wv}j!w5PQ=$`l+vUxexxssy4XZ4CmzW3eW(^Ff{tM&L)?|FTj=Gqxx>mC|%KIL;>?r7say3EFl z4|-O(bEQ^Hmg}Wf+MW(en5Nypm|f3Qs}2nBS^6Zy2Bs-|tjP9dJ%hW>j(xJaK)c_= z6Ma&DPV2O@UZ!!qrq|qde5}XKsOx>xjJW&Oz5lS0ek)eEB%idXQ~sJOmpyih-aY5x zJ$iKNz_>?8OBNp$=(ly}+{Ya=Wa<4|o9b^|3+SG#2~Lton%k+pLa@eQ#DdBe5UM zYOvUkW_3>NC$sV%hy83;BgB3&tE*zanw8&p>^HL-FZR1x-Nw3@REY`ZCVZ*NG>qEO zi({!-;E~=*rd+gU>N6_qhg;P*)Gbx;hUM6h894(6g`WP{d*h3I+j|5YdOjj1G`s2L zrWt$9+al`SIq1D*=9bror@R{a#wpwu`I{X2$J%Rgo?m{Sdp*1A$vqD`*FSN`h%GUdYL>n&axoQCJ>JiI=uzh*nT-V~I!>-fE)<7d>&u_iR|_^SHN zl5ReGU~-irxo1v^3P1E{tGic1^SI&1iq|~tl|Dy-@YGjlyxiTaaiYp|H>u>I3~%xL zd>j1-KFhlD+?#au$K?6Ce(A)GjkYzp8eH+r?Byq_H6J@`ZOHfhZqp+xw^~s8?DoGC zN2c9W<9xUGTi-8jb??lX)=tAq=sdjRJ0|XU)^cdmj**>8cfC02LF+w>ho9Y9xz*4F zt@k$>@XO&%^GiSSIo8a*-?+1btuJnNoj2lKgH2@yWf(haNav#W{w_K~?UCU{RrGom z7F%wg`=MzCYNX%(qSc7Um&P?7J2qP)&-Z=<-c$>II>s+w+cYXuuHM5|CY?UI;8SZ* zm$MVTt3-a*)Gb#yf6s4X=i&ADzmc)^i|sc{}Rj-0?hdk3?mzuRVB&KZVatHUA za(8SrFiEZD+udtbTHDgaCHz<|&o37$emp+v(tz88&Q_01T2%Gu!|;xj{~ldz>4dx^ zW(0V9yr~#D&uix7ra6A~FWInd#{wtDG`PRC-^wGQ6ORQnDIOY<{;yrXp8r@nO8!d{A%7oH9cm8PsYCv6!V`@(tpI+yvxg0+|pyy%g&RtpXuP+ z@RxmucnS7&gU(yW*I2jbYOnBqjar{hIP-AUhKEDWw^LdAGQ8cjk9m2Fs!=Cs{G+Qo z!ygQ2U*^l+dt=5G-_-7Fl^MSdESs$H>AzFVTjk%V@6Gdl@2z!hSY?ZK#^9voFRxp- zZvMpE?VW~~+$U# zFW1$*d34uKoy&LM{Cwy5JqNe?ziRL2>i5xo^WA&ulnk$U;uasv{&DN^uu=)zPwwm! zl4*J9mC(B}D{PjC`qigre0VBsXpvg6Pj4S8pK0!ijDu7BKDYc)-_>OkMkZ^RH`(3W z`J9HA(s_8fitnzHFkAS-`9+($jyErz(4s(8{mik04u+hLi0XHwZN%Uao4Ovm|Jwa| zsdtxWrW(F}!2D!c zdZ|kn!zy?8J6qJ!eBk+^P1oif=#erk!Q@<9o>fU#eZi{&mx^~=ljFJbFJGi}9$wer z<@_qCe@JcL@7HHlDzMYXw*E}m8 zt*kLS!!OZ$bEiBSQFv{&Q?1H%UU_h9$FKWt?D(U^?_UnIaDVzfpjRf}ivE{OK~IkL zYg6~Zi!0+NMK>QaSWW8B@alHEb3DnXjH|n3`z2tt_q0a|ybf-QoESTAd+Ff=3am}{ z*ZnflWiIV3JivV9Y=+a5+Aa6)a{n5?3%x37fur-ES2|J2Y3^lo9^SV~UlJwrJ-M~= zz~(3Cj7v7h$DF7{m+^BWo*qfsczgAnRlY9 zb~HN4w<{Gt^-^U9$TwLe=OXQHQ3ttYG-tA?OewILEvk=L4~sf3Hj72&Oo`2EQG>;1 zv#4`ovs;umUw&)OVNqAb=Cmlk)Yx1WHC}9Pi@Gf~k42SCgUxGEQP}4BoE?b?Y0|U& znS3ivEj`B8*kT%CZ8Bn9_j7HslpE<2oVc_5q#nWJ3Y}V1rO2p>E4$r%>hgBc@}n}^rA`Em+#ev5i7wtz(irNb7qsKsJ^ zEb5ckLKam&J+`n#trF{NQD(l~!R%*Io5U8es3aM&{ub3%Y*CB)1*>9)bI+Z{jQ|#- zV>gt*5h$lbDM2XRQ9g(=%pIi^!9+2aCYYJ9WeBF&vIJ9XIf9uPTi&8Zh^;_S#a1M! z9@t6*RcvK~Dz*wi&4R5;P{mfWsK;UhEvjNxY<0XB8-({_Yv6r0Y)!luTMO^S*2eqn z*gAMGwl3c1z}B;<=3?s;1+fi?LQXt-I027(!P$K7I{$;O+}fM7bS#fh_XYJGWk&2 z5s!Q*ou{EZ6Qu(Y@kDWpLYe1@(utUeax}`ELe=&%2bsGN6)%*5(<$@Si!$Aai#Lkr z43xFrC_RXbD3?WPl^>-SvB{4TITIy0U+rQJB{~IAibtcI;@e-$eetvq%0p59D1_1v zzY3$oD3t4b-HUkue)*yV#-Nn(Lm7k@ekdPAc_zvbyeNXQViwB0A}GV~LX@VnQEK_4 z*zm$1CD9y|uc8dci=rqyL|I!DWh7pR(s?dQs{oYIcoBf&HV-9vF_f`*Q4Hm%D0@U1 z$6hXuGH^ahkK!m3*vq1LEbLD`pAADqC~Dnxz3-`FmGfgR6{Ag24zw;l+Da=Q67p?CJ<#Sb0ZKXW-ZDyQMNNTs-pz1 zLz!0{WhZk(ln12nGv;=Xz_7BG27<-ZNi@n77#a?FoO|VxOzu2pczbW=l z#xM37;}?6K@i)WXU|)*8$$S=ji#^#K`xoadvA5ZeV()Mqx4_=TU$OV_SL}WKZHaw= zzhWQauh>WU+Y0*_f5kpwKZ<>dpTXE?_}Lo!96!arVE(qjzQj+lukcgsYy1qszQIqi zZ}C&?JN#^m{Tu(uOcrov{h5YJ}K?R&`ZuBCGQ2f=z5y8*iFx z$n%_}<|I~iTg0SRRkABKnN>xJO>R|>#ip>Tirug&t!lQ|R95v`Y-+0t>W)ogRg1-@ zwW?2I(^*yh9@z9&wMuLTt1|b*X0)p2V%@B2lUR4FVnxdhj8(N2o7t*<5$j=9X?kO` zSXEcCS*_}z*lbpnDHNNXAc)OD5X9!Rs+@hWxd?*T+yp^v9)i#po0lMn%|{T#dJ=>% ztd~`d7we7xV)Nr)e{2E#6I&4f24H>gPi!Il6I<9hc)mC}5YZ1O2Vslgq*#BP6k8N0 z2V(M4kyKy$4Rjja55ZQ z5huk~!b!1}angpZf|Fva;-uJW?Bob+AUj!Xb#}7YAa?R_Yz=}SwkAOkTZgyu>yoUQ@8mh?m&r#7k@o z;x!f9l6Z-2MZClY6R&C5*2GI}8{#E4gm^_^+Y&Fa?TDAy_Ewd1I<^Dx65Ek@iS0zZ zW?(xLFR@*Sm)NevYbLfE@e=3_%F6M{wr)K{)_E{|6=>%e+)JZ z|Hbyhf3f}Xe-?HC{)-)m|Ff}!@L%j;{1-a}|L0(b;=kBo_%Ajb|L0Z25 zos9otr{KTXsrbJbI}QKEM&ZBM>G;0{I|Kj4&cuJQ(fA*WRroJ92LG30XW_rt+4wJZ z4*oC0&c%PR^YCBneEeUIU4Z{$7vjIzMfkr0yBPn)F2R4Xu~wCHC3Y$Pi(Q8QVwdCp zD(njU7rPSw#je8t)!5beFLn+7i(QNVYq0C^U+jAP7rO!f*J3x~zt~OqFLpEjufuM^ zf3aKfU+gyP_WJ9w(<4e-UE3r!nUblqTg<)KbWNJnWJ+Z+MYQeG(?|XF%$$Gw{+s5d zE>bc@pLUK1jy{Fjb?@THRpgeEOjUP>IgxAjv?f#X?e&hC_u1Q4r8gr^;IDBf+wO9n zuT@SymbF$gntz&uZq&w|=5qGR6CYEqWiFE`#Xnkx200x?rLV4iO(uE1{3N$Jy~TXd zUT61K>SXlN9j>>Cn50jy?%n(KHkn?Q+`ew7d7F#tgUTjTQfYLFy;7>(RNBm6qp)|> zNwnl)9s2a`(8pxj6~v!Zm!b{qMW0I1iZxB9#M?vOF%|7)v$nSX+4Trdti6dTcDY1b zhg=D3ck7M435iJtdrWXy#^1GXub%P;e+G0^!M~bUxq5XmnbJ#_MeNOV?c1TRJ;q(7 zSHf7#?v+~j8$Gr*$TJA!$yC>tz<|;ets3YtP&ywZ7gt18ZO7`-}dxZ4q z)}g)0^v7}?vh()B+lO8m+f_qnN!;%;u=ovv@&Ux49=QE{-mD#Sxw_df*sbcPh0uh6US4z zm=a5nhe&JN(_J)MU0jk(KRYLvz4h{!7<9u-E~X^n?JgI4gM0;ajw|Nnu5)s_ID+U1 zdh)Ja!q{ad({oQo7#H^q3G7YRd}I!EaedYbkEE>!_5fRkwsKLIo|!AS;(}3Wdg1cP zq)L*G1AB+a^lKimJ@}pZVtd((k%|B3|KGW6kN9ME@s$5>n&tli3FZIg?nxJ}bVMTe zcB^W#(Ne}{`u5%NBO~ulCI_L(A{+b|+Y&J&f<2tduy5=?J+&rfLiOJW@1-?Yv_4wv ztu@&kY1eF2&?0{g*)&QQ?4z|rXydfj7flAj#4tr^t)DKJ1Z}$3`s;E`RMP^j4b&Q^ z7t;e75kG^`Ec7ok%w&8*HB2{{0__;cPq@}nlHP7tOeUMwI31cMX)Qu)so9o4U@AYu zwU&l-UagJL8s|fkt)Lc1YB3$6kJd(MEj^mMxX90FG>Jk6$fUKgTFZ!*S!?5TT{koj zt&P{3{7J_w4$Wqopv6pxS#`mQTFZ=2|1#tGY$U2BuICV#mxht{TOEh}11txeTh zHndz?n`YODe|E&&T8z>KxdNE-Xl=UIa-!wc+6=96RWRk#+DxtGM)TBKwAS*Vd1*~) zEian4O^Y#F%!im?YqPZGiB>>sv$f`hR#0nmwC0WGqqVtO%a2w_YxA^L0IjgrZ1c5P z5YbnQ3$*5g=BKrVS}TNBL~Dz*Rv67+Ym2q!i&j)?OSC3`ST8_pu@22qOp8l( zLHUDr#kICfYjSBSp|#~&3qUKWwG~>EKLJ-tYjU!Y^NIZRw$fT#r8W7>Yh{wi@yE|< zEtVu*Ru^2OwNhy1w6<1jrP0c3ZJpNSZ<(MXRW_4O%OQR!M6cjpMjHVr4CE z(giD^RngjJtyM&;sYt2>_F-VI$w8$-psfN~e zYAq10rq+JZT6MHqTHB?yAhgn5HK-IpV)pi?tA^$vKyweOjwc zI!bH%wN?i$xz-M7tu9&$tsT@_J+zcs`&Dc8(Nb&ekd^*rf;51%T0E=^Hbfi8MM2~v zT5CjlvRo+m`Aut$NnZjvX&%*D6ViWz{2bF-Q_}5q-Q!woCjKYY;t4G_M_a2e94EEb z0&ShvPHC+r+D5IN)>iG@N=1hlHUnJ^@ZrF zuG|@|g4X`jS{Jm*a;@d(n%26Ko}#tuy1i~_)3kO|m+LP6Mq$D5p24@ZCbw^Cw01{p+})erYVEGpLebu7?Vi@Sqc{C6n#BLU7FkD_-s^%7w8p)u z>4VlDYONpIN3A{5T7R_9T6?Uu0cc;f_C#v~(VlDVDVj~9J_ufG@tH0-810JIo@;Fg z+EuN+(ArS68(Mp*wP9#0wDwAC;b{Byu6wODoVS_A>w<5z7(u}aT6?Rt;b>#E_D*Xf z&^GA?|JK?_v@=?JueDKV%e3}EYopPs+K)Ph@KK9n5Uc4!@srlZqE*-0XRSq|1!?Vz z*2bZE>hs4}t&K;^uC;Gkn}Ft`Xa9H6WdBbDvldORjuVpH(=8$`KQ3CEOxmmuPqWsh zpe53pMQc;hjJGtbTAPMeN%!HZwJ0>(N+y6DehCmIe>$wyhhidKa0Xf*Lf8qL7)_3h znILmSezNIu(WGnXP-oYgLR-MD>x#{xwHVTi(Ynk2&#A>(T9m^tm)2&J{-hhst+hF5 z1NCv7M{9G@ifb*e*5;v=)LK5R%}1L-$MWN8*NFcDHj-+Oy>!8aXb<%%(_3qc&>m?m zzt$F`9oKaWph*Omz)-FE=yI`W^4-JoQ%Gw|NjJA2eL}=fTFtGO42VVC*=dQwuBhqZmcn=@oBYc9-@CClYH~0=F>brm$EMNs!kaguvR|0a2 z#9we5?!aBR2lt^7d$ch$fu_(5nnMd{39TR)T0CZ9Kvk#)fhu&rC3CGhBD{KS){LoQLeq}vsNoAYBww%%B3|V=e8CJBxuLd_aD@br5E4OR zNCHVA84TvsF_Wn)t9n_*%c@;g>9Q)9MYt@wWsxn5YFR|fqFL6+vL==_u&jAyjVo(f zZ;&OcEKv)}f=bq)vgVXErYtFC2`NiPSt81kP?mtQ;*%AgtmtF~Co48tp_KtyfXRYO z7Fe>Nk_D73m}Gq<>mgbH$a+WCH?p3Q<%=v=WO-7{#(%Q@ko5-Z3)5$=z<1y-+=GYk z7%syVxC*D>44j3vAWINgazulI7?=%npg;70q>v0`86wLLS!SdHo2)HlDUk>g!`Fly z*6;y7f(^#Q1egeuK$a9?aFIE28Lq%pkR`-*xB)le7W@Ub;SSt|dk{?BHqbVqDah20 zgsd|<<$nTb1wk0InLkH*x4WJ=3 zg2vDUjxe2WaOmVGT>!E{Q)mWhART0Y;0XW?%S(@*djzQQ;74kk_tF0w$d zl5m9tAWN2GR5}i+NpHi>g+9<1`auY!hYTQVFIj8Jg={8_g-93&<6#0!gy9ebHJ~Ou zWdP6MxjdkILE5X&@cQdw3ZjH{^l5 zAn%NM!b{qD4KLt4{9)riS${PIS#$Bxwn@H+wkgOLzBUK>X4RG;Utt;yvJPtlA@cOP!dW(X($6_6R6;QmJGJaq^m%0P6)E5EDdF$9LRdI zB2F${JFZg0l3>0J7YZ<((|&Wc4PiHCdg>YD`vNthQ|S z)s?KKWc4JgrTri)Bv}#30!S7-vcL%gS=7iPMiwornG&*4k#&izLuB1i7AkRK34$8n z4YKx-wT2Zwlm7*d!3j8-FdwHv5;Gwh6wCto>J#}(J5Pz^GkC6sAG4%&eM9oCnnsd8 zpSI|jC7-Pqg+rk`SRpaf;R+$T3V*^ixDGeqCVZz+7s|+@#tNs=euuMg91g=?fpVR& zWjW$EVPJy@7!D&~By@nz z&>ea}d8hytp%PSvOpqBoAd4%ffUG2Bm6ILhQHwk=ktZbbL`0r|`~jCh9%RXbt64A? z!l4dSg)sJIOK1hb&>Gr+Ea~JoCajPE5`rx0WC{0?=zWq?Kz=p~KqhblJ~lGRpG0WJ z&MHrS1(5Y!WjG3(U@go9`OczIFdF1b`D#IJr~`GOALN0&kPqZLrN4oEbB`@B(ib&!N#529uTt5VGj34gpXUWXSr^JWP}Y5o zn7p-MA04}KsJKD`c!c&C?!p;34?Ex&*q)I6KbOQjm=6nJAuNK$umoaZDJ+BKumV9Z?2;J6_AHl51>9&fnLn7?$91W!1jev`H&bu zsMFwu2iqAT6{LpW(2l|}kk#-BI0>iVG{{%qoq@A(9xediqiEU!TVXrwfSvFQ$oGNm zhCQ&<#T0BBM`AoofoTv0(_tozfKf0S#(*rnhrtl&4n3eJ$nv`xG>5V{BF_w3LmSoO zfF+x)3(3OZClWg|VVEZ6kXK(I>ZLk40!#Y?Ct6>$$FMK>>?>&b*kb)Rp z#$E(@RP`P{f;?sV25IFS*OmacgESPDuakQW^1Bajr7^ex7vT_0fJqPueV{K4fG*Gy zn6ah^7!6|~5{AP_=nnFXr5Y54Vo*YAlq69K%0Nv#md6IK;Vq{I^LmT-yxYEEl%1nVvly8j^r=Hr*IE0!v#1Cry&U(hn?^nyrsS8u!r;k zux;eOHP8(nkg*E89HzssY)`_DgV8VoB48MtB5x4(CiXB~g>A4K7Q!qz2kYS>gi^LQ zgg|rn9j&q4BCH^>5*i>r#kM3wf#5~>@<0yA0vX^X`V7dxzD^6hNv8k{kvl__PQej4 z2#MJpEr{x$S|o%+D3k+N z=t!B1g?aE0)}lpYcVeevC&Oyed*K4CgJul8p{$DPL2Yoy!%UEr5hj6H=0yrT zNCruuI$C=ItfaZduGNHf2 zmjt|b)cGVkil6#8FE_A z15&{U@`E>cL0)Y=vH5^XrUFn93V~6^m$aPXB~R)H=(KSbEX}qIN=}3&K&}$szjyoo zy*Y`R5Ck=#88n3^Adht9@lGv}NXTOzS#39hhR^_vM?TU<3uptaAsAX|E9vh11$Az> zjbMf$g@c@M2f_g84}G8?NPb_CJejIPVK58<$&-4<&KXYHXjiTha>a;+-XJ$7BSEet zU0n!EClcqW@H?DtQXdfz>cj4LWbh*GT$v{*g%`{VoNGr%Zswum~2y z0+H zA7GUIi}WjyGWX#s$N+AEban&&gzIn(?t;|01GnKG{o4~FK7gDcqkar8;1N96+hU)= zQ+T4ax7auE8YCL;;3Is8Z(zbpaY`JJNXY$j5=aCIz~;(-2_Z2g2g#IeDVPGJl3Wo* zm$hvgkad!TGZjd_lsC#rzU0Zab4SvTQATtr$JN$m-%rNAYK16g5|i_JzVw2#SI~81;=hQeMgy(|MwcCP?|rI1?uO-^ef~M`<#pQzO$ZW2Fm4Q?Qqm7&Bfo#iUt%j`+wV)oC&6sQe#HIml= z8bTvz3QeFH$X$O6=m2dY1mx1(23kWqXb)XL&WAm;?S{=rf8DX1D{ZDw61|`&NI^-9 zCDU#tZ6J+}fB`TN!l19-?vL#UQbzKPv|-EA>2UN2kmbx^7$nEPR1joe4Fy@}$jL@d zI[P}VTLq39im_=Oo0h74#vV5 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
sIHULKbp?43F@P&pn*+z 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 diff --git a/apps/captable/components/dashboard/navbar/mobile-drawer.tsx b/apps/captable/components/dashboard/navbar/mobile-drawer.tsx index 4185a718a..5276db97b 100644 --- a/apps/captable/components/dashboard/navbar/mobile-drawer.tsx +++ b/apps/captable/components/dashboard/navbar/mobile-drawer.tsx @@ -2,8 +2,7 @@ import { Button } from "@/components/ui/button"; import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet"; import { RiMenuLine } from "@remixicon/react"; import { SideBar } from "../sidebar"; - -import { type TGetCompanyList } from "@/server/company"; +import type { TGetCompanyList } from "@/server/company"; interface SideBarProps { publicId: string; diff --git a/apps/captable/components/dashboard/overview/activities-card.tsx b/apps/captable/components/dashboard/overview/activities-card.tsx index 65ac674ed..e9ca45a9c 100644 --- a/apps/captable/components/dashboard/overview/activities-card.tsx +++ b/apps/captable/components/dashboard/overview/activities-card.tsx @@ -16,7 +16,13 @@ type Props = { }; const ActivityCard = async ({ className, publicId }: Props) => { - const activity = await api.audit.getAudits.query({ take: 4 }); + const activity = (await api.audit.getAudits.query({ take: 4 })) as { + data: { + id: string; + summary: string; + occurredAt: string; + }[]; + }; return ( diff --git a/apps/captable/components/dashboard/page-layout/index.tsx b/apps/captable/components/dashboard/page-layout/index.tsx index 5751149ca..fa22375cd 100644 --- a/apps/captable/components/dashboard/page-layout/index.tsx +++ b/apps/captable/components/dashboard/page-layout/index.tsx @@ -1,4 +1,4 @@ -import { type ReactNode } from "react"; +import type { ReactNode } from "react"; interface PageLayoutProps { title: string; diff --git a/apps/captable/components/dashboard/sidebar/nav-link.tsx b/apps/captable/components/dashboard/sidebar/nav-link.tsx index 27bd4fab8..36cafef0d 100644 --- a/apps/captable/components/dashboard/sidebar/nav-link.tsx +++ b/apps/captable/components/dashboard/sidebar/nav-link.tsx @@ -1,5 +1,5 @@ import { cn } from "@/lib/utils"; -import { type RiHome4Line } from "@remixicon/react"; +import type { RiHome4Line } from "@remixicon/react"; import Link from "next/link"; type Icon = typeof RiHome4Line; @@ -43,6 +43,7 @@ export function NavLink({ active, href, icon, name, className }: NavLinkProps) { ) : ( diff --git a/apps/captable/components/stakeholder/stakeholder-uploader.tsx b/apps/captable/components/stakeholder/stakeholder-uploader.tsx index aafa4d023..7ed9a4e72 100644 --- a/apps/captable/components/stakeholder/stakeholder-uploader.tsx +++ b/apps/captable/components/stakeholder/stakeholder-uploader.tsx @@ -17,7 +17,7 @@ const StakeholderUploader = () => { const router = useRouter(); - const { mutateAsync, isLoading } = + const { mutateAsync, isPending } = api.stakeholder.addStakeholders.useMutation({ onSuccess: ({ success, message }) => { if (success) { @@ -96,7 +96,7 @@ const StakeholderUploader = () => { ); From b1b0e132bcf3c2032da138b3caf9eea6ae030916 Mon Sep 17 00:00:00 2001 From: Puru D Date: Fri, 23 May 2025 02:08:09 -0500 Subject: [PATCH 16/85] fix: some interesting typesafety fixes --- .../components/onboarding/company-form.tsx | 17 ++++++++++------- .../onboarding/verify-email/index.tsx | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/apps/captable/components/onboarding/company-form.tsx b/apps/captable/components/onboarding/company-form.tsx index dc0bc0c5e..e8144f8ff 100644 --- a/apps/captable/components/onboarding/company-form.tsx +++ b/apps/captable/components/onboarding/company-form.tsx @@ -23,7 +23,7 @@ import { } from "@/trpc/routers/onboarding-router/schema"; import { zodResolver } from "@hookform/resolvers/zod"; import { RiArrowRightLine } from "@remixicon/react"; -import { useForm } from "react-hook-form"; +import { useForm, type Resolver } from "react-hook-form"; import { dayjsExt } from "@/lib/common/dayjs"; import { uploadFile } from "@/lib/common/uploads"; @@ -36,8 +36,8 @@ import { useSession } from "next-auth/react"; import { useRouter } from "next/navigation"; import { useRef, useState } from "react"; import { toast } from "sonner"; -import Loading from "../common/loading"; -import { LinearCombobox } from "../ui/combobox"; +import Loading from "@/components/common/loading"; +import { LinearCombobox } from "@/components/ui/combobox"; const formSchema = ZodOnboardingMutationSchema; @@ -63,12 +63,14 @@ export const CompanyForm = ({ type, data }: CompanyFormProps) => { const fileInputRef = useRef(null); const form = useForm({ - resolver: zodResolver(formSchema), + resolver: zodResolver( + formSchema, + ) as Resolver, defaultValues: { user: { email: user?.user.email ?? "", name: user?.user.name ?? "", - title: data?.title ?? "", + title: data?.title, }, company: { city: data?.company.city ?? "", @@ -79,11 +81,12 @@ export const CompanyForm = ({ type, data }: CompanyFormProps) => { incorporationState: data?.company.incorporationState ?? "", incorporationType: data?.company.incorporationType ?? "", name: data?.company.name ?? "", - website: data?.company.website ?? "", + website: data?.company.website, state: data?.company.state ?? "", streetAddress: data?.company.streetAddress ?? "", zipcode: data?.company.zipcode ?? "", - country: data?.company.country ?? "", + country: data?.company.country ?? "US", + logo: data?.company.logo, }, }, }); diff --git a/apps/captable/components/onboarding/verify-email/index.tsx b/apps/captable/components/onboarding/verify-email/index.tsx index 68c003b5d..af02a2b75 100644 --- a/apps/captable/components/onboarding/verify-email/index.tsx +++ b/apps/captable/components/onboarding/verify-email/index.tsx @@ -42,7 +42,7 @@ const VerifyEmail = ({ token }: { token: string }) => { setLoading(false); setError("Something went wrong! Please try again."); } - }, [token, success, error]); + }, [token, success, error, mutateAsync]); useEffect(() => { void onSubmit(); From a33cdb8fdcd5f24daa4f732444d106fd0cd5cff1 Mon Sep 17 00:00:00 2001 From: Puru D Date: Fri, 23 May 2025 02:13:28 -0500 Subject: [PATCH 17/85] chore: referencing file with `@/component` --- apps/captable/components/rbac/role-table.tsx | 26 +++++++++---------- .../components/safe/safe-table/index.tsx | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/apps/captable/components/rbac/role-table.tsx b/apps/captable/components/rbac/role-table.tsx index 5c5e357d2..e03cc6dda 100644 --- a/apps/captable/components/rbac/role-table.tsx +++ b/apps/captable/components/rbac/role-table.tsx @@ -20,17 +20,17 @@ import { } from "@tanstack/react-table"; import { useRouter } from "next/navigation"; import { useState } from "react"; -import { pushModal } from "../modals"; -import { defaultInputPermissionInputs } from "../modals/role-create-update-modal"; -import { Badge } from "../ui/badge"; -import { Button } from "../ui/button"; -import { Checkbox } from "../ui/checkbox"; -import { DataTable } from "../ui/data-table/data-table"; -import { DataTableBody } from "../ui/data-table/data-table-body"; -import { SortButton } from "../ui/data-table/data-table-buttons"; -import { DataTableContent } from "../ui/data-table/data-table-content"; -import { DataTableHeader } from "../ui/data-table/data-table-header"; -import { DataTablePagination } from "../ui/data-table/data-table-pagination"; +import { pushModal } from "@/components/modals"; +import { defaultInputPermissionInputs } from "@/components/modals/role-create-update-modal"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { Checkbox } from "@/components/ui/checkbox"; +import { DataTable } from "@/components/ui/data-table/data-table"; +import { DataTableBody } from "@/components/ui/data-table/data-table-body"; +import { SortButton } from "@/components/ui/data-table/data-table-buttons"; +import { DataTableContent } from "@/components/ui/data-table/data-table-content"; +import { DataTableHeader } from "@/components/ui/data-table/data-table-header"; +import { DataTablePagination } from "@/components/ui/data-table/data-table-pagination"; import { DropdownMenu, DropdownMenuContent, @@ -38,8 +38,8 @@ import { DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, -} from "../ui/dropdown-menu"; -import { Allow } from "./allow"; +} from "@/components/ui/dropdown-menu"; +import { Allow } from "@/components/rbac/allow"; type Role = RouterOutputs["rbac"]["listRoles"]["rolesList"][number]; diff --git a/apps/captable/components/safe/safe-table/index.tsx b/apps/captable/components/safe/safe-table/index.tsx index f57ec74bb..1eaa3669c 100644 --- a/apps/captable/components/safe/safe-table/index.tsx +++ b/apps/captable/components/safe/safe-table/index.tsx @@ -40,7 +40,7 @@ import type { RouterOutputs } from "@/trpc/shared"; import { RiFileDownloadLine, RiMore2Fill } from "@remixicon/react"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; -import { SafeTableToolbar } from "./safe-table-toolbar"; +import { SafeTableToolbar } from "@/components/safe/safe-table/safe-table-toolbar"; type Safe = RouterOutputs["safe"]["getSafes"]["data"]; From bd5bf34b4a278053386b5eec1c6ae333e0cd318d Mon Sep 17 00:00:00 2001 From: Puru D Date: Fri, 23 May 2025 02:17:00 -0500 Subject: [PATCH 18/85] chore: remove unwanted imports --- apps/captable/components/safe/safe-table/index.tsx | 2 +- .../components/safe/steps/investor-details/form.tsx | 10 ---------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/apps/captable/components/safe/safe-table/index.tsx b/apps/captable/components/safe/safe-table/index.tsx index 1eaa3669c..316ca381b 100644 --- a/apps/captable/components/safe/safe-table/index.tsx +++ b/apps/captable/components/safe/safe-table/index.tsx @@ -208,7 +208,7 @@ export const columns: ColumnDef[] = [ Documents {documents?.length ? ( - documents.map((doc) => ( + documents.map((doc: NonNullable[number]) => ( Date: Fri, 23 May 2025 02:19:49 -0500 Subject: [PATCH 19/85] fix: typecheck --- apps/captable/components/safe/steps/investor-details/form.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/captable/components/safe/steps/investor-details/form.tsx b/apps/captable/components/safe/steps/investor-details/form.tsx index 6f832ec22..c6758ff18 100644 --- a/apps/captable/components/safe/steps/investor-details/form.tsx +++ b/apps/captable/components/safe/steps/investor-details/form.tsx @@ -60,7 +60,7 @@ export function InvestorDetailsForm({ stakeholders }: InvestorsDetailsProps) { setValue(data); }; - const stakeHolderOpts = stakeholders.map((sh) => { + const stakeHolderOpts = stakeholders.map((sh: TStakeholders[number]) => { let label = ""; if (sh.institutionName) { label = `${sh.institutionName} - ${sh.name}`; @@ -187,7 +187,7 @@ function StakeholderDataDisplay({ stakeholders }: StakeholderDataDisplayProps) { | string | null; - const stakeholder = stakeholders.find((item) => item.id === stakeholderId); + const stakeholder = stakeholders.find((item: TStakeholders[number]) => item.id === stakeholderId); return stakeholderId ? ( <> From 8ae2ebd8639cf0ccc122fbbf40961279077da35e Mon Sep 17 00:00:00 2001 From: Puru D Date: Fri, 23 May 2025 02:20:17 -0500 Subject: [PATCH 20/85] fix: typecheck --- apps/captable/components/safe/steps/investor-details/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/captable/components/safe/steps/investor-details/index.tsx b/apps/captable/components/safe/steps/investor-details/index.tsx index 2a952eb61..24cb6f8d9 100644 --- a/apps/captable/components/safe/steps/investor-details/index.tsx +++ b/apps/captable/components/safe/steps/investor-details/index.tsx @@ -2,7 +2,7 @@ import { api } from "@/trpc/server"; import { InvestorDetailsForm } from "./form"; -export { type TFormSchema } from "./form"; +export type { TFormSchema } from "./form"; export async function InvestorDetails() { const stakeholders = await api.stakeholder.getStakeholders.query(); From 8f1ec6ab291e5fdb96201e6510c82cb1dc16e480 Mon Sep 17 00:00:00 2001 From: Puru D Date: Fri, 23 May 2025 02:21:51 -0500 Subject: [PATCH 21/85] chore: remove un-necessary import --- apps/captable/components/safe/steps/safe-template.tsx | 7 ------- 1 file changed, 7 deletions(-) diff --git a/apps/captable/components/safe/steps/safe-template.tsx b/apps/captable/components/safe/steps/safe-template.tsx index 96ca5e45b..ea67e4131 100644 --- a/apps/captable/components/safe/steps/safe-template.tsx +++ b/apps/captable/components/safe/steps/safe-template.tsx @@ -11,13 +11,6 @@ import { FormMessage, } from "@/components/ui/form"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; import { StepperModalFooter, StepperPrev } from "@/components/ui/stepper"; import Uploader from "@/components/ui/uploader"; import { toTitleCase } from "@/lib/string"; From 4c910ee0407a16cc08bc5acf2dc798ab8ee8ac83 Mon Sep 17 00:00:00 2001 From: Puru D Date: Fri, 23 May 2025 03:10:45 -0500 Subject: [PATCH 22/85] chore: some more typesafety issues --- .../components/safe/existing-safe-modal.tsx | 8 ++++---- .../captable/components/safe/new-safe-modal.tsx | 8 ++++---- apps/captable/components/safe/safe-actions.tsx | 2 +- .../options/steps/general-details.tsx | 17 +++++------------ .../options/steps/vesting-details.tsx | 4 ++-- 5 files changed, 16 insertions(+), 23 deletions(-) diff --git a/apps/captable/components/safe/existing-safe-modal.tsx b/apps/captable/components/safe/existing-safe-modal.tsx index 784c2b080..661dcf6f4 100644 --- a/apps/captable/components/safe/existing-safe-modal.tsx +++ b/apps/captable/components/safe/existing-safe-modal.tsx @@ -4,10 +4,10 @@ import { StepperModalContent, type StepperModalProps, StepperStep, -} from "../ui/stepper"; -import { GeneralDetails } from "./steps/general-details"; -import { InvestorDetails } from "./steps/investor-details"; -import { SafeDocuments } from "./steps/safe-documents"; +} from "@/components/ui/stepper"; +import { GeneralDetails } from "@/components/safe/steps/general-details"; +import { InvestorDetails } from "@/components/safe/steps/investor-details"; +import { SafeDocuments } from "@/components/safe/steps/safe-documents"; export function ExistingSafeModal(props: Omit) { return ( diff --git a/apps/captable/components/safe/new-safe-modal.tsx b/apps/captable/components/safe/new-safe-modal.tsx index cf8f2b31a..322b9bb62 100644 --- a/apps/captable/components/safe/new-safe-modal.tsx +++ b/apps/captable/components/safe/new-safe-modal.tsx @@ -4,10 +4,10 @@ import { StepperModalContent, type StepperModalProps, StepperStep, -} from "../ui/stepper"; -import { GeneralDetails } from "./steps/general-details"; -import { InvestorDetails } from "./steps/investor-details"; -import { SafeTemplate } from "./steps/safe-template"; +} from "@/components/ui/stepper"; +import { GeneralDetails } from "@/components/safe/steps/general-details"; +import { InvestorDetails } from "@/components/safe/steps/investor-details"; +import { SafeTemplate } from "@/components/safe/steps/safe-template"; export function NewSafeModal(props: Omit) { return ( diff --git a/apps/captable/components/safe/safe-actions.tsx b/apps/captable/components/safe/safe-actions.tsx index 651c23196..db4f5288f 100644 --- a/apps/captable/components/safe/safe-actions.tsx +++ b/apps/captable/components/safe/safe-actions.tsx @@ -5,7 +5,7 @@ import { DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { RiAddFill, RiSafe2Fill, RiSafeFill } from "@remixicon/react"; -import { pushModal } from "../modals"; +import { pushModal } from "@/components/modals"; export function SafeActions() { return ( diff --git a/apps/captable/components/securities/options/steps/general-details.tsx b/apps/captable/components/securities/options/steps/general-details.tsx index 1ea2f89b8..b250f00cf 100644 --- a/apps/captable/components/securities/options/steps/general-details.tsx +++ b/apps/captable/components/securities/options/steps/general-details.tsx @@ -11,13 +11,6 @@ import { FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; import { StepperModalFooter, StepperPrev, @@ -31,17 +24,17 @@ import { useForm } from "react-hook-form"; import { NumericFormat } from "react-number-format"; import { z } from "zod"; -const STATUSES = Object.values(OptionStatusEnum).map((val) => ({ +const STATUSES = Object.values(OptionStatusEnum).map((val: string) => ({ label: toTitleCase(val), value: val, })); -const TYPES = Object.values(OptionTypeEnum); +const TYPES = Object.values(OptionTypeEnum) as [string, ...string[]]; const typesOpts = TYPES.map((type) => ({ value: type, label: type })); const formSchema = z.object({ grantId: z.string(), - type: z.nativeEnum(OptionTypeEnum), - quantity: z.coerce.number(), - status: z.nativeEnum(OptionStatusEnum), + quantity: z.coerce.number().min(0), + type: z.enum(OptionTypeEnum.enumValues as [string, ...string[]]), + status: z.enum(OptionStatusEnum.enumValues as [string, ...string[]]), }); type TFormSchema = z.infer; diff --git a/apps/captable/components/securities/options/steps/vesting-details.tsx b/apps/captable/components/securities/options/steps/vesting-details.tsx index 969d826ee..98c19f6a5 100644 --- a/apps/captable/components/securities/options/steps/vesting-details.tsx +++ b/apps/captable/components/securities/options/steps/vesting-details.tsx @@ -64,12 +64,12 @@ export const VestingDetails = (props: VestingDetailsProps) => { // label: VestingSchedule[vKey] || "", // })); - const equityPlansOpts = equityPlans?.map(({ id, name }) => ({ + const equityPlansOpts = equityPlans?.map(({ id, name }: NonNullable[number]) => ({ value: id, label: name, })); - const stakeHolderOpts = stakeholders?.map((stake) => ({ + const stakeHolderOpts = stakeholders?.map((stake: NonNullable[number]) => ({ value: stake.id, label: stake.name, })); From 339a6e6279ebde3f869bf46f51e0b4a7a0197624 Mon Sep 17 00:00:00 2001 From: Puru D Date: Fri, 23 May 2025 04:27:19 -0500 Subject: [PATCH 23/85] feat: component cleanup - checking in --- .../safe/steps/investor-details/form.tsx | 4 +- .../securities/options/option-table.tsx | 40 +++++++++--------- .../options/steps/vesting-details.tsx | 22 ++++++---- .../securities/shares/share-modal.tsx | 8 ++-- .../securities/shares/share-table-toolbar.tsx | 2 +- .../securities/shares/share-table.tsx | 4 +- .../shares/steps/contribution-details.tsx | 20 ++++----- .../shares/steps/general-details.tsx | 23 +++++----- .../components/security/SecurityList.tsx | 4 +- .../passkey/user-passkeys-data-table.tsx | 8 ++-- .../stakeholder/stakeholder-table-toolbar.tsx | 2 - .../stakeholder/stakeholder-table.tsx | 8 ++-- .../stakeholder/stakeholder-uploader.tsx | 2 +- .../template/canavs-toolbar/index.tsx | 6 +-- .../custom-select-field-renderer.tsx | 2 +- .../custom-text-field-renderer.tsx | 2 +- .../custom-field-renderer/index.tsx | 2 +- .../field-canvas/readonly-template-field.tsx | 6 ++- .../field-canvas/template-field-container.tsx | 4 +- .../template/field-canvas/template-field.tsx | 6 +-- .../components/template/pdf-canvas/index.tsx | 4 +- .../signing-fields/field-renderer.tsx | 12 +++--- .../template/signing-fields/index.tsx | 4 +- .../ui/data-table/data-table-content.tsx | 2 +- .../data-table/data-table-faceted-filter.tsx | 24 ++++++----- .../ui/data-table/data-table-header.tsx | 4 +- apps/captable/package.json | 1 + bun.lockb | Bin 509896 -> 514160 bytes 28 files changed, 118 insertions(+), 108 deletions(-) diff --git a/apps/captable/components/safe/steps/investor-details/form.tsx b/apps/captable/components/safe/steps/investor-details/form.tsx index c6758ff18..661d113b3 100644 --- a/apps/captable/components/safe/steps/investor-details/form.tsx +++ b/apps/captable/components/safe/steps/investor-details/form.tsx @@ -187,7 +187,9 @@ function StakeholderDataDisplay({ stakeholders }: StakeholderDataDisplayProps) { | string | null; - const stakeholder = stakeholders.find((item: TStakeholders[number]) => item.id === stakeholderId); + const stakeholder = stakeholders.find( + (item: TStakeholders[number]) => item.id === stakeholderId, + ); return stakeholderId ? ( <> diff --git a/apps/captable/components/securities/options/option-table.tsx b/apps/captable/components/securities/options/option-table.tsx index d27612608..b2ac2fe84 100644 --- a/apps/captable/components/securities/options/option-table.tsx +++ b/apps/captable/components/securities/options/option-table.tsx @@ -40,7 +40,7 @@ import type { RouterOutputs } from "@/trpc/shared"; import { RiFileDownloadLine, RiMore2Fill } from "@remixicon/react"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; -import { OptionTableToolbar } from "./option-table-toolbar"; +import { OptionTableToolbar } from "@/components/securities/options/option-table-toolbar"; type Option = RouterOutputs["securities"]["getOptions"]["data"]; @@ -205,24 +205,26 @@ export const columns: ColumnDef[] = [ Documents - {row?.original?.documents?.map((doc) => ( - { - await openFileOnTab(doc.bucket.key); - }} - > - - {doc.name.slice(0, 12)} -

- {doc?.uploader?.user?.name} -

-
- ))} + {row?.original?.documents?.map( + (doc: NonNullable[number]) => ( + { + await openFileOnTab(doc.bucket.key); + }} + > + + {doc.name.slice(0, 12)} +

+ {doc?.uploader?.user?.name} +

+
+ ), + )}
); diff --git a/apps/captable/components/securities/options/steps/vesting-details.tsx b/apps/captable/components/securities/options/steps/vesting-details.tsx index 98c19f6a5..9afd7f188 100644 --- a/apps/captable/components/securities/options/steps/vesting-details.tsx +++ b/apps/captable/components/securities/options/steps/vesting-details.tsx @@ -64,15 +64,19 @@ export const VestingDetails = (props: VestingDetailsProps) => { // label: VestingSchedule[vKey] || "", // })); - const equityPlansOpts = equityPlans?.map(({ id, name }: NonNullable[number]) => ({ - value: id, - label: name, - })); - - const stakeHolderOpts = stakeholders?.map((stake: NonNullable[number]) => ({ - value: stake.id, - label: stake.name, - })); + const equityPlansOpts = equityPlans?.map( + ({ id, name }: NonNullable[number]) => ({ + value: id, + label: name, + }), + ); + + const stakeHolderOpts = stakeholders?.map( + (stake: NonNullable[number]) => ({ + value: stake.id, + label: stake.name, + }), + ); return (
diff --git a/apps/captable/components/securities/shares/share-modal.tsx b/apps/captable/components/securities/shares/share-modal.tsx index cfebd90d0..d81d2a6e2 100644 --- a/apps/captable/components/securities/shares/share-modal.tsx +++ b/apps/captable/components/securities/shares/share-modal.tsx @@ -6,10 +6,10 @@ import { } from "@/components/ui/stepper"; import { AddShareFormProvider } from "@/providers/add-share-form-provider"; import { api } from "@/trpc/server"; -import { ContributionDetails } from "./steps/contribution-details"; -import { Documents } from "./steps/documents"; -import { GeneralDetails } from "./steps/general-details"; -import { RelevantDates } from "./steps/relevant-dates"; +import { ContributionDetails } from "@/components/securities/shares/steps/contribution-details"; +import { Documents } from "@/components/securities/shares/steps/documents"; +import { GeneralDetails } from "@/components/securities/shares/steps/general-details"; +import { RelevantDates } from "@/components/securities/shares/steps/relevant-dates"; async function ContributionDetailsStep() { const stakeholders = await api.stakeholder.getStakeholders.query(); diff --git a/apps/captable/components/securities/shares/share-table-toolbar.tsx b/apps/captable/components/securities/shares/share-table-toolbar.tsx index 7836bd58c..27bab871c 100644 --- a/apps/captable/components/securities/shares/share-table-toolbar.tsx +++ b/apps/captable/components/securities/shares/share-table-toolbar.tsx @@ -3,7 +3,7 @@ import { ResetButton } from "@/components/ui/data-table/data-table-buttons"; import { DataTableFacetedFilter } from "@/components/ui/data-table/data-table-faceted-filter"; import { DataTableViewOptions } from "@/components/ui/data-table/data-table-view-options"; import { Input } from "@/components/ui/input"; -import { statusValues } from "./data"; +import { statusValues } from "@/components/securities/shares/data"; export function ShareTableToolbar() { const { table } = useDataTable(); diff --git a/apps/captable/components/securities/shares/share-table.tsx b/apps/captable/components/securities/shares/share-table.tsx index 979144a2b..414527032 100644 --- a/apps/captable/components/securities/shares/share-table.tsx +++ b/apps/captable/components/securities/shares/share-table.tsx @@ -44,7 +44,7 @@ import { import { RiFileDownloadLine, RiMore2Fill } from "@remixicon/react"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; -import { ShareTableToolbar } from "./share-table-toolbar"; +import { ShareTableToolbar } from "@/components/securities/shares/share-table-toolbar"; type Share = RouterOutputs["securities"]["getShares"]["data"]; @@ -265,7 +265,7 @@ export const columns: ColumnDef[] = [ Documents - {documents?.map((doc) => ( + {documents?.map((doc: NonNullable[number]) => ( ({ - value: stakeHolder.id, - label: `${stakeHolder.company.name} - ${stakeHolder.name}`, - })); + const stakeHoldersOpts = stakeholders.map( + (stakeHolder: NonNullable[number]) => ({ + value: stakeHolder.id, + label: `${stakeHolder.company.name} - ${stakeHolder.name}`, + }), + ); return ( diff --git a/apps/captable/components/securities/shares/steps/general-details.tsx b/apps/captable/components/securities/shares/steps/general-details.tsx index f11cf29aa..76159c932 100644 --- a/apps/captable/components/securities/shares/steps/general-details.tsx +++ b/apps/captable/components/securities/shares/steps/general-details.tsx @@ -1,7 +1,6 @@ "use client"; import Tldr from "@/components/common/tldr"; import { pushModal } from "@/components/modals"; -// import { EmptySelect } from "@/components/securities/shared/EmptySelect"; import { Button } from "@/components/ui/button"; import { LinearCombobox } from "@/components/ui/combobox"; import { @@ -93,10 +92,12 @@ export const GeneralDetails = ({ shareClasses = [] }: GeneralDetailsProps) => { next(); }; - const shareClassOpts = shareClasses.map((share) => ({ - value: share.id, - label: share.name, - })); + const shareClassOpts = shareClasses.map( + (share: NonNullable[number]) => ({ + value: share.id, + label: share.name, + }), + ); // const vestingScheduleOpts = vestingSchedule.map((vs) => ({ // value: vs, @@ -364,11 +365,13 @@ export const GeneralDetails = ({ shareClasses = [] }: GeneralDetailsProps) => { - {companyLegends.map((cl) => ( - - {humanizeCompanyLegends(cl)} - - ))} + {companyLegends.map( + (cl: NonNullable[number]) => ( + + {humanizeCompanyLegends(cl)} + + ), + )} diff --git a/apps/captable/components/security/SecurityList.tsx b/apps/captable/components/security/SecurityList.tsx index 530ee11a9..1a8edce76 100644 --- a/apps/captable/components/security/SecurityList.tsx +++ b/apps/captable/components/security/SecurityList.tsx @@ -1,6 +1,6 @@ import Link from "next/link"; -import { Alert, AlertDescription, AlertTitle } from "../ui/alert"; -import { Button } from "../ui/button"; +import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; +import { Button } from "@/components/ui/button"; interface SecurityListProps { title: string; diff --git a/apps/captable/components/security/passkey/user-passkeys-data-table.tsx b/apps/captable/components/security/passkey/user-passkeys-data-table.tsx index 67ce957bc..30f089bbc 100644 --- a/apps/captable/components/security/passkey/user-passkeys-data-table.tsx +++ b/apps/captable/components/security/passkey/user-passkeys-data-table.tsx @@ -29,7 +29,7 @@ import { api } from "@/trpc/react"; import { RiMore2Fill } from "@remixicon/react"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; -import { Button } from "../../ui/button"; +import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, @@ -37,9 +37,9 @@ import { DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, -} from "../../ui/dropdown-menu"; -import { PasskeyTableToolbar } from "./passkey-table-toolbar"; -import UpdatePasskeyNameModal from "./update-passkey-name-modal"; +} from "@/components/ui/dropdown-menu"; +import { PasskeyTableToolbar } from "@/components/security/passkey/passkey-table-toolbar"; +import UpdatePasskeyNameModal from "@/components/security/passkey/update-passkey-name-modal"; type Passkey = RouterOutputs["passkey"]["find"]["data"]; diff --git a/apps/captable/components/stakeholder/stakeholder-table-toolbar.tsx b/apps/captable/components/stakeholder/stakeholder-table-toolbar.tsx index 4e57ff3e3..4a43a05b6 100644 --- a/apps/captable/components/stakeholder/stakeholder-table-toolbar.tsx +++ b/apps/captable/components/stakeholder/stakeholder-table-toolbar.tsx @@ -1,7 +1,5 @@ -import { statusValues } from "@/components/member/data"; import { useDataTable } from "@/components/ui/data-table/data-table"; import { ResetButton } from "@/components/ui/data-table/data-table-buttons"; -import { DataTableFacetedFilter } from "@/components/ui/data-table/data-table-faceted-filter"; import { DataTableViewOptions } from "@/components/ui/data-table/data-table-view-options"; import { Input } from "@/components/ui/input"; diff --git a/apps/captable/components/stakeholder/stakeholder-table.tsx b/apps/captable/components/stakeholder/stakeholder-table.tsx index 5d72cacb8..049d48769 100644 --- a/apps/captable/components/stakeholder/stakeholder-table.tsx +++ b/apps/captable/components/stakeholder/stakeholder-table.tsx @@ -25,8 +25,8 @@ import { useReactTable, } from "@tanstack/react-table"; import React from "react"; -import { Allow } from "../rbac/allow"; -import { Button } from "../ui/button"; +import { Allow } from "@/components/rbac/allow"; +import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, @@ -34,8 +34,8 @@ import { DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, -} from "../ui/dropdown-menu"; -import { StakeholderTableToolbar } from "./stakeholder-table-toolbar"; +} from "@/components/ui/dropdown-menu"; +import { StakeholderTableToolbar } from "@/components/stakeholder/stakeholder-table-toolbar"; type Stakeholder = RouterOutputs["stakeholder"]["getStakeholders"]; diff --git a/apps/captable/components/stakeholder/stakeholder-uploader.tsx b/apps/captable/components/stakeholder/stakeholder-uploader.tsx index 7ed9a4e72..d56f8501f 100644 --- a/apps/captable/components/stakeholder/stakeholder-uploader.tsx +++ b/apps/captable/components/stakeholder/stakeholder-uploader.tsx @@ -9,7 +9,7 @@ import Link from "next/link"; import { useRouter } from "next/navigation"; import { useRef, useState } from "react"; import { toast } from "sonner"; -import { popModal } from "../modals"; +import { popModal } from "@/components/modals"; const StakeholderUploader = () => { const [csvFile, setCSVFile] = useState([]); diff --git a/apps/captable/components/template/canavs-toolbar/index.tsx b/apps/captable/components/template/canavs-toolbar/index.tsx index 713bbb44e..6be52b881 100644 --- a/apps/captable/components/template/canavs-toolbar/index.tsx +++ b/apps/captable/components/template/canavs-toolbar/index.tsx @@ -4,10 +4,8 @@ import { Button } from "@/components/ui/button"; import { COLORS } from "@/lib/constants/esign"; import type { FieldTypesEnum } from "@captable/db/schema/enums"; import * as Toolbar from "@radix-ui/react-toolbar"; -import { FieldTypeData } from "../field-type-data"; - +import { FieldTypeData } from "@/components/template/field-type-data"; import { OptionalMessageModal } from "@/components/esign/optional-message-modal"; -import { pushModal } from "@/components/modals"; import { DropdownMenu, DropdownMenuContent, @@ -59,7 +57,7 @@ function RecipientList({ recipients }: RecipientListProps) { - {recipients.map((recipient) => ( + {recipients.map((recipient: Recipients[number]) => ( item.id === value)?.value || undefined + ? meta.options.find( + (item: NonNullable[number]) => item.id === value, + )?.value || undefined : undefined; return ( diff --git a/apps/captable/components/template/field-canvas/template-field-container.tsx b/apps/captable/components/template/field-canvas/template-field-container.tsx index eae37ef80..55cf848e7 100644 --- a/apps/captable/components/template/field-canvas/template-field-container.tsx +++ b/apps/captable/components/template/field-canvas/template-field-container.tsx @@ -5,7 +5,7 @@ import { } from "@/components/ui/popover"; import { COLORS } from "@/lib/constants/esign"; import { cn } from "@/lib/utils"; -import { type ComponentProps, type ReactNode } from "react"; +import type { ComponentProps, ReactNode } from "react"; interface useMeasurementProps { currentViewportHeight: number; @@ -134,7 +134,7 @@ export function TemplateFieldContainer({
+ + ) +} +``` + +### API Routes +```typescript +import { NextRequest, NextResponse } from "next/server" +import { z } from "zod" +import { auth } from "@/lib/auth" +import { db } from "@captable/db" + +const schema = z.object({ + name: z.string().min(1), + email: z.string().email() +}) + +export async function POST(request: NextRequest) { + try { + const session = await auth() + if (!session) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + const body = await request.json() + const data = schema.parse(body) + + const result = await db.insert(table).values({ + ...data, + userId: session.user.id + }).returning() + + return NextResponse.json({ success: true, data: result[0] }) + } catch (error) { + return NextResponse.json({ error: "Internal error" }, { status: 500 }) + } +} +``` + +### Forms with react-hook-form +```typescript +import { useForm } from "react-hook-form" +import { zodResolver } from "@hookform/resolvers/zod" +import { z } from "zod" +import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage } from "@/components/ui/form" + +const schema = z.object({ + name: z.string().min(1, "Required"), + email: z.string().email("Invalid email") +}) + +export function MyForm() { + const form = useForm({ + resolver: zodResolver(schema), + defaultValues: { name: "", email: "" } + }) + + const onSubmit = (data) => { + // Handle submission + } + + return ( +
+ + ( + + Name + + + + + + )} + /> + + + ) +} +``` + +## File Organization +- `app/(authenticated)/` - Protected routes +- `app/(unauthenticated)/` - Public routes +- `components/ui/` - Base components +- `components/[feature]/` - Feature components +- `lib/` - Utilities +- `trpc/` - API layer + +## Best Practices +- Use Server Components by default +- Add "use client" only when needed +- Validate inputs with Zod +- Use proper TypeScript interfaces +- Follow Tailwind utility-first approach +- Implement proper error handling +- Use `cn()` for conditional classes diff --git a/.cursor/rules/packages/config.mdc b/.cursor/rules/packages/config.mdc new file mode 100644 index 000000000..4a58b1b28 --- /dev/null +++ b/.cursor/rules/packages/config.mdc @@ -0,0 +1,98 @@ +--- +description: +globs: +alwaysApply: false +--- +# Config Package Rules + +## Tech Stack +Shared TypeScript, Biome, and tool configurations + +## TypeScript Configurations + +### Base Config +```json +// base.json +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "declaration": true, + "sourceMap": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true + } +} +``` + +### Next.js Config +```json +// nextjs.json +{ + "extends": "./base.json", + "compilerOptions": { + "lib": ["DOM", "DOM.Iterable", "ES2017"], + "jsx": "preserve", + "allowJs": true, + "noEmit": true, + "incremental": true, + "plugins": [{ "name": "next" }] + }, + "include": ["**/*.ts", "**/*.tsx", ".next/types/**/*.ts"] +} +``` + +## Biome Configuration +```json +// biome.json +{ + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 80, + "quoteStyle": "double" + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "style": { + "useImportType": "error", + "useConst": "error" + }, + "correctness": { + "noUnusedVariables": "warn" + } + } + }, + "organizeImports": { + "enabled": true + } +} +``` + +## Usage +```typescript +// In package tsconfig.json +{ + "extends": "@captable/config/nextjs.json", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["*"] + } + } +} +``` + +## Best Practices +- Extend base configurations rather than duplicating +- Use consistent formatting rules across packages +- Enable strict TypeScript settings +- Configure proper import organization +- Use environment-specific overrides when needed diff --git a/.cursor/rules/packages/db.mdc b/.cursor/rules/packages/db.mdc new file mode 100644 index 000000000..e539f479a --- /dev/null +++ b/.cursor/rules/packages/db.mdc @@ -0,0 +1,17 @@ +--- +description: +globs: +alwaysApply: true +--- +# Database Package Rules + +## Tech Stack +Drizzle ORM + PostgreSQL, Drizzle Zod, Faker.js for seeding + +## Best Practices +- Use CUID for primary keys +- Always include createdAt and updatedAt +- Define relations for type-safe joins +- Use Drizzle Zod for validation +- Use transactions for multi-table operations +- Export proper TypeScript types diff --git a/.cursor/rules/packages/email.mdc b/.cursor/rules/packages/email.mdc new file mode 100644 index 000000000..2d0f3843a --- /dev/null +++ b/.cursor/rules/packages/email.mdc @@ -0,0 +1,205 @@ +--- +description: +globs: +alwaysApply: true +--- +# Email Package Rules + +## Tech Stack +React Email for templates, Tailwind CSS for styling, SMTP for sending + +## Template Pattern with Tailwind +```tsx +import { Html, Head, Body, Container, Text, Button, Tailwind } from "@react-email/components" + +interface WelcomeEmailProps { + userName: string + companyName: string + loginUrl: string +} + +export function WelcomeEmail({ userName, companyName, loginUrl }: WelcomeEmailProps) { + return ( + + + + + + + Welcome to {companyName}! + + + + Hi {userName}, welcome to {companyName}! + Click below to access your dashboard. + + + + + + + + ) +} +``` + +## Advanced Template with Custom Config +```tsx +import { Html, Head, Body, Container, Text, Button, Tailwind } from "@react-email/components" + +const tailwindConfig = { + theme: { + extend: { + colors: { + brand: { + primary: "#3b82f6", + secondary: "#1f2937" + } + } + } + } +} + +export function InvitationEmail({ inviterName, companyName, inviteUrl }: InvitationEmailProps) { + return ( + + + + + + + You're invited to join {companyName} + + +
+ + Company: {companyName}
+ Invited by: {inviterName} +
+
+ + + + + This invitation will expire in 7 days. If you weren't expecting this invitation, + you can safely ignore this email. + +
+ +
+ + ) +} +``` + +## Responsive Email Template +```tsx +export function PasswordResetEmail({ userName, resetUrl }: PasswordResetEmailProps) { + return ( + + + + + + + Reset your password + + + + Hi {userName}, we received a request to reset your password. + + +
+ +
+ + + This link will expire in 1 hour. If you're having trouble clicking the button, + copy and paste the following URL into your browser: + + + + {resetUrl} + +
+ +
+ + ) +} +``` + +## Sending Logic +```typescript +import { render } from "@react-email/render" +import nodemailer from "nodemailer" + +const transporter = nodemailer.createTransporter({ + host: process.env.SMTP_HOST, + port: Number(process.env.SMTP_PORT), + auth: { + user: process.env.SMTP_USER, + pass: process.env.SMTP_PASS + } +}) + +export async function sendEmail({ + to, + subject, + template +}: { + to: string + subject: string + template: React.ReactElement +}) { + const html = render(template) + + await transporter.sendMail({ + from: process.env.FROM_EMAIL, + to, + subject, + html + }) +} +``` + +## Usage +```typescript +import { sendEmail } from "@captable/email" +import { WelcomeEmail } from "@captable/email/templates" + +await sendEmail({ + to: "user@example.com", + subject: "Welcome to Captable", + template: +}) +``` + +## Best Practices +- Wrap templates with `` component for CSS support +- Use responsive classes (sm:, md:, lg:) for mobile compatibility +- Stick to email-safe Tailwind classes (avoid complex layouts) +- Test across different email clients +- Use custom Tailwind config for brand colors +- Include fallback text for accessibility +- Use semantic HTML structure with proper headings + diff --git a/.cursor/rules/packages/logger.mdc b/.cursor/rules/packages/logger.mdc new file mode 100644 index 000000000..081045bbf --- /dev/null +++ b/.cursor/rules/packages/logger.mdc @@ -0,0 +1,95 @@ +--- +description: +globs: +alwaysApply: false +--- +# Logger Package Rules + +## Tech Stack +Pino for structured, high-performance logging + +## Logger Setup +```typescript +import pino from "pino" + +const logger = pino({ + level: process.env.LOG_LEVEL || "info", + redact: ["password", "token", "authorization", "*.password"], + base: { + service: "captable", + environment: process.env.NODE_ENV + }, + transport: process.env.NODE_ENV === "development" ? { + target: "pino-pretty", + options: { + colorize: true, + translateTime: "yyyy-mm-dd HH:MM:ss" + } + } : undefined +}) + +export { logger } +``` + +## Usage Patterns +```typescript +import { logger } from "@captable/logger" + +// Structured logging +logger.info({ + action: "user_login", + userId: "user-123", + email: "user@example.com" +}, "User logged in successfully") + +// Error logging +logger.error({ + error: new Error("Database connection failed"), + operation: "user_fetch", + userId: "user-123" +}, "Failed to fetch user data") + +// Child loggers for context +const userLogger = logger.child({ + userId: "user-123", + email: "user@example.com" +}) + +userLogger.info("User action performed") +``` + +## Middleware Pattern +```typescript +export function withLogging(handler: Function) { + return async (req: NextRequest, ...args: any[]) => { + const start = Date.now() + const requestLogger = logger.child({ + method: req.method, + path: req.nextUrl.pathname + }) + + try { + requestLogger.info("Request started") + const response = await handler(req, ...args) + + requestLogger.info({ + statusCode: response.status, + duration: Date.now() - start + }, "Request completed") + + return response + } catch (error) { + requestLogger.error({ error }, "Request failed") + throw error + } + } +} +``` + +## Best Practices +- Use structured logging with consistent field names +- Include correlation IDs for request tracing +- Redact sensitive information (passwords, tokens) +- Use child loggers for scoped contexts +- Log both successes and failures +- Include timing information for performance monitoring diff --git a/.cursor/rules/packages/utils.mdc b/.cursor/rules/packages/utils.mdc new file mode 100644 index 000000000..cd202f821 --- /dev/null +++ b/.cursor/rules/packages/utils.mdc @@ -0,0 +1,104 @@ +--- +description: +globs: +alwaysApply: false +--- +# Utils Package Rules + +## Tech Stack +TypeScript utilities, shared functions and constants + +## Utility Patterns + +### String Utilities +```typescript +export function slugify(input: string): string { + return input + .toLowerCase() + .trim() + .replace(/[^\w\s-]/g, "") + .replace(/[\s_-]+/g, "-") + .replace(/^-+|-+$/g, "") +} + +export function capitalize(str: string): string { + return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase() +} + +export function truncate(str: string, length: number): string { + return str.length <= length ? str : str.slice(0, length) + "..." +} +``` + +### Number Utilities +```typescript +export function formatCurrency(amount: number, currency = "USD"): string { + return new Intl.NumberFormat("en-US", { + style: "currency", + currency + }).format(amount) +} + +export function formatPercentage(num: number, decimals = 2): string { + return new Intl.NumberFormat("en-US", { + style: "percent", + minimumFractionDigits: decimals + }).format(num) +} +``` + +### Array Utilities +```typescript +export function unique(array: T[]): T[] { + return [...new Set(array)] +} + +export function groupBy( + array: T[], + key: (item: T) => K +): Record { + return array.reduce((groups, item) => { + const groupKey = key(item) + groups[groupKey] = groups[groupKey] || [] + groups[groupKey].push(item) + return groups + }, {} as Record) +} +``` + +### Validation +```typescript +export function isValidEmail(email: string): boolean { + return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email) +} + +export function isValidUrl(url: string): boolean { + try { + new URL(url) + return true + } catch { + return false + } +} +``` + +## Constants +```typescript +export const COMPANY_TYPES = [ + "C-Corp", "S-Corp", "LLC", "Partnership" +] as const + +export const USER_ROLES = [ + "owner", "admin", "member", "viewer" +] as const + +export const SECURITY_TYPES = [ + "Common Stock", "Preferred Stock", "Stock Option", "Warrant" +] as const +``` + +## Best Practices +- Write pure functions when possible +- Use proper TypeScript types +- Add JSDoc comments for complex functions +- Export all necessary types and constants From c851c24af11e4199116ad61dedd32f05c870203e Mon Sep 17 00:00:00 2001 From: Puru D Date: Mon, 26 May 2025 22:48:36 -0500 Subject: [PATCH 43/85] fix: email component imports --- .cursor/rules/packages/config.mdc | 2 +- .cursor/rules/packages/logger.mdc | 2 +- .cursor/rules/packages/utils.mdc | 2 +- apps/captable/jobs/auth-verification-email.ts | 3 +- .../captable/jobs/esign-confirmation-email.ts | 3 +- apps/captable/jobs/esign-email.ts | 3 +- apps/captable/jobs/member-inivite-email.ts | 17 +++++----- apps/captable/jobs/password-reset-email.ts | 5 +-- apps/captable/jobs/share-update-email.ts | 3 +- apps/captable/next.config.js | 5 ++- index.ts | 13 ++++++++ packages/email/index.ts | 31 +++++++++++++++---- packages/email/readme.md | 12 +------ packages/utils/tsconfig.json | 2 +- tsconfig.json | 24 ++++++++++++++ 15 files changed, 87 insertions(+), 40 deletions(-) create mode 100644 index.ts create mode 100644 tsconfig.json diff --git a/.cursor/rules/packages/config.mdc b/.cursor/rules/packages/config.mdc index 4a58b1b28..996701cc0 100644 --- a/.cursor/rules/packages/config.mdc +++ b/.cursor/rules/packages/config.mdc @@ -1,7 +1,7 @@ --- description: globs: -alwaysApply: false +alwaysApply: true --- # Config Package Rules diff --git a/.cursor/rules/packages/logger.mdc b/.cursor/rules/packages/logger.mdc index 081045bbf..9ad003188 100644 --- a/.cursor/rules/packages/logger.mdc +++ b/.cursor/rules/packages/logger.mdc @@ -1,7 +1,7 @@ --- description: globs: -alwaysApply: false +alwaysApply: true --- # Logger Package Rules diff --git a/.cursor/rules/packages/utils.mdc b/.cursor/rules/packages/utils.mdc index cd202f821..7396fda20 100644 --- a/.cursor/rules/packages/utils.mdc +++ b/.cursor/rules/packages/utils.mdc @@ -1,7 +1,7 @@ --- description: globs: -alwaysApply: false +alwaysApply: true --- # Utils Package Rules diff --git a/apps/captable/jobs/auth-verification-email.ts b/apps/captable/jobs/auth-verification-email.ts index 6f1f38964..e620d303e 100644 --- a/apps/captable/jobs/auth-verification-email.ts +++ b/apps/captable/jobs/auth-verification-email.ts @@ -10,8 +10,7 @@ export type AuthVerificationEmailPayloadType = { const sendAuthVerificationEmail = async (payload: AuthVerificationEmailPayloadType) => { // Dynamic import to avoid build-time processing - const { getAccountVerificationEmail, render } = await import("@captable/email"); - const AccountVerificationEmail = await getAccountVerificationEmail(); + const { AccountVerificationEmail, render } = await import("@captable/email"); const html = await render( AccountVerificationEmail({ diff --git a/apps/captable/jobs/esign-confirmation-email.ts b/apps/captable/jobs/esign-confirmation-email.ts index 1646f7848..5a963615b 100644 --- a/apps/captable/jobs/esign-confirmation-email.ts +++ b/apps/captable/jobs/esign-confirmation-email.ts @@ -16,8 +16,7 @@ export type EsignConfirmationEmailPayloadType = { const sendEsignConfirmationEmail = async (payload: EsignConfirmationEmailPayloadType) => { // Dynamic import to avoid build-time processing - const { getEsignConfirmationEmail, render } = await import("@captable/email"); - const EsignConfirmationEmail = await getEsignConfirmationEmail(); + const { EsignConfirmationEmail, render } = await import("@captable/email"); const html = await render( EsignConfirmationEmail({ diff --git a/apps/captable/jobs/esign-email.ts b/apps/captable/jobs/esign-email.ts index 35821c8e5..7ae3e7b8a 100644 --- a/apps/captable/jobs/esign-email.ts +++ b/apps/captable/jobs/esign-email.ts @@ -25,8 +25,7 @@ export type EsignEmailPayloadType = { const sendEsignEmail = async (payload: EsignEmailPayloadType) => { // Dynamic import to avoid build-time processing - const { getEsignEmail, render } = await import("@captable/email"); - const EsignEmail = await getEsignEmail(); + const { EsignEmail, render } = await import("@captable/email"); const html = await render( EsignEmail({ diff --git a/apps/captable/jobs/member-inivite-email.ts b/apps/captable/jobs/member-inivite-email.ts index ea26ffeca..447d86398 100644 --- a/apps/captable/jobs/member-inivite-email.ts +++ b/apps/captable/jobs/member-inivite-email.ts @@ -4,32 +4,33 @@ import { sendMail } from "@/server/mailer"; import type { Job } from "pg-boss"; export type MemberInviteEmailPayloadType = { - invitedBy: string; - companyName: string; - inviteLink: string; email: string; + inviteLink: string; + companyName: string; + invitedBy: string; }; const sendMemberInviteEmail = async (payload: MemberInviteEmailPayloadType) => { // Dynamic import to avoid build-time processing - const { getMemberInviteEmail, render } = await import("@captable/email"); - const MemberInviteEmail = await getMemberInviteEmail(); + const { MemberInviteEmail, render } = await import("@captable/email"); const html = await render( MemberInviteEmail({ - invitedBy: payload.invitedBy, - companyName: payload.companyName, inviteLink: payload.inviteLink, + companyName: payload.companyName, + invitedBy: payload.invitedBy, }), ); await sendMail({ to: [payload.email], - subject: `${payload.invitedBy} invited you to join ${payload.companyName}`, + subject: `You're invited to join ${payload.companyName}`, html, }); }; +export { sendMemberInviteEmail }; + export class MemberInviteEmailJob extends BaseJob { readonly type = "email.member-invite"; diff --git a/apps/captable/jobs/password-reset-email.ts b/apps/captable/jobs/password-reset-email.ts index 6bbc106fd..476e7fbee 100644 --- a/apps/captable/jobs/password-reset-email.ts +++ b/apps/captable/jobs/password-reset-email.ts @@ -10,8 +10,7 @@ export type PasswordResetEmailPayloadType = { const sendPasswordResetEmail = async (payload: PasswordResetEmailPayloadType) => { // Dynamic import to avoid build-time processing - const { getPasswordResetEmail, render } = await import("@captable/email"); - const PasswordResetEmail = await getPasswordResetEmail(); + const { PasswordResetEmail, render } = await import("@captable/email"); const html = await render( PasswordResetEmail({ @@ -26,6 +25,8 @@ const sendPasswordResetEmail = async (payload: PasswordResetEmailPayloadType) => }); }; +export { sendPasswordResetEmail }; + export class PasswordResetEmailJob extends BaseJob { readonly type = "email.password-reset"; diff --git a/apps/captable/jobs/share-update-email.ts b/apps/captable/jobs/share-update-email.ts index 4b135108f..1d637cd6e 100644 --- a/apps/captable/jobs/share-update-email.ts +++ b/apps/captable/jobs/share-update-email.ts @@ -14,8 +14,7 @@ export type ShareUpdateEmailPayloadType = { const sendShareUpdateEmail = async (payload: ShareUpdateEmailPayloadType) => { // Dynamic import to avoid build-time processing - const { getShareUpdateEmail, render } = await import("@captable/email"); - const ShareUpdateEmail = await getShareUpdateEmail(); + const { ShareUpdateEmail, render } = await import("@captable/email"); const html = await render( ShareUpdateEmail({ diff --git a/apps/captable/next.config.js b/apps/captable/next.config.js index 143412f3c..31ec71853 100644 --- a/apps/captable/next.config.js +++ b/apps/captable/next.config.js @@ -4,6 +4,9 @@ const nextConfig = { ignoreDuringBuilds: true, }, output: 'standalone', + experimental: { + esmExternals: 'loose', + }, webpack: (config, { isServer }) => { if (!isServer) { // For client-side builds, externalize Node.js built-ins @@ -24,7 +27,7 @@ const nextConfig = { mysql2: "commonjs mysql2", sqlite3: "commonjs sqlite3", "better-sqlite3": "commonjs better-sqlite3", - "@captable/email": "commonjs @captable/email", + "@captable/email": "module @captable/email", }); return config; diff --git a/index.ts b/index.ts new file mode 100644 index 000000000..ffac8c867 --- /dev/null +++ b/index.ts @@ -0,0 +1,13 @@ +import type { ReactElement } from "react"; + +// Export constants from utils package (treeshakable import) +export { META } from "@captable/utils/dist/lib/constants"; + +// Export all email templates and their types (DRY approach) +export * from "./templates"; + +// Dynamic import for React Email render function to avoid ES module issues +export async function render(component: ReactElement, options?: { pretty?: boolean; plainText?: boolean }) { + const { render: reactEmailRender } = await import("@react-email/components"); + return reactEmailRender(component, options); +} \ No newline at end of file diff --git a/packages/email/index.ts b/packages/email/index.ts index cf16ee90b..7e1b0bf4e 100644 --- a/packages/email/index.ts +++ b/packages/email/index.ts @@ -1,8 +1,27 @@ -// Re-export commonly used functions from react-email -export { render } from "@react-email/components"; +import type { ReactElement } from "react"; -// Export constants from utils package (treeshakable import) -export { META } from "@captable/utils/constants"; +// Export all email templates and their types explicitly +export { default as AccountVerificationEmail } from "./templates/AccountVerificationEmail.js"; +export { default as EsignConfirmationEmail } from "./templates/EsignConfirmationEmail.js"; +export { default as EsignEmail } from "./templates/EsignEmail.js"; +export { default as MagicLinkEmail } from "./templates/MagicLinkEmail.js"; +export { default as MemberInviteEmail } from "./templates/MemberInviteEmail.js"; +export { default as PasswordResetEmail } from "./templates/PasswordResetEmail.js"; +export { default as ShareDataRoomEmail } from "./templates/ShareDataRoomEmail.js"; +export { default as ShareUpdateEmail } from "./templates/ShareUpdateEmail.js"; -// Export all email templates and their types (DRY approach) -export * from "./templates"; +// Export types +export type { AccountVerificationEmailProps } from "./templates/AccountVerificationEmail.js"; +export type { EsignConfirmationEmailProps } from "./templates/EsignConfirmationEmail.js"; +export type { EsignEmailProps } from "./templates/EsignEmail.js"; +export type { MagicLinkEmailProps } from "./templates/MagicLinkEmail.js"; +export type { MemberInviteEmailProps } from "./templates/MemberInviteEmail.js"; +export type { PasswordResetEmailProps } from "./templates/PasswordResetEmail.js"; +export type { ShareDataRoomEmailProps } from "./templates/ShareDataRoomEmail.js"; +export type { ShareUpdateEmailProps } from "./templates/ShareUpdateEmail.js"; + +// Dynamic import for React Email render function to avoid ES module issues +export async function render(component: ReactElement, options?: { pretty?: boolean; plainText?: boolean }) { + const { render: reactEmailRender } = await import("@react-email/components"); + return reactEmailRender(component, options); +} diff --git a/packages/email/readme.md b/packages/email/readme.md index 6820620d0..7d24adfb2 100644 --- a/packages/email/readme.md +++ b/packages/email/readme.md @@ -25,6 +25,7 @@ This package is part of the Captable monorepo and is intended for internal use. ```typescript import { MagicLinkEmail, render } from "@captable/email"; +import { META } from "@captable/utils/constants"; ``` ### Email Templates @@ -81,17 +82,6 @@ const html = render(MagicLinkEmail({ magicLink: "..." })); const html = await render(MagicLinkEmail({ magicLink: "..." })); ``` -### Constants - -Access shared constants used across email templates: - -```typescript -import { META } from "@captable/email"; - -console.log(META.title); // "Captable, Inc." -console.log(META.url); // "https://captable.inc" -``` - ## Development ### Preview Emails diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index 2a9ffff2b..cab2b186d 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -14,7 +14,7 @@ }, "target": "ES2022", "module": "ESNext", - "moduleResolution": "node", + "moduleResolution": "bundler", "esModuleInterop": true, "allowSyntheticDefaultImports": true }, diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..12d4e2bed --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "composite": false, + "jsx": "react-jsx", + "skipLibCheck": true, + "strict": true, + "noEmit": false, + "outDir": "./dist", + "declaration": true, + "declarationMap": true, + "strictNullChecks": true, + "baseUrl": ".", + "paths": { + "@/*": ["./*"] + }, + "target": "ES2022", + "module": "CommonJS", + "moduleResolution": "bundler", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true + }, + "include": ["**/*.ts", "**/*.tsx"], + "exclude": ["node_modules", ".react-email", "dist"] +} \ No newline at end of file From 65903b053c2f1cee6139a407e25e7bdab9f0f0af Mon Sep 17 00:00:00 2001 From: Puru D Date: Mon, 26 May 2025 22:55:26 -0500 Subject: [PATCH 44/85] chore: looks like NODE_ENV=staging is not a thing --- apps/captable/env.ts | 3 ++- apps/captable/middleware.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/captable/env.ts b/apps/captable/env.ts index 830c5e39a..49146ecb9 100644 --- a/apps/captable/env.ts +++ b/apps/captable/env.ts @@ -29,8 +29,9 @@ export const env = createEnv({ "You forgot to change the default URL", ), NODE_ENV: z - .enum(["development", "test", "production", "staging"]) + .enum(["development", "test", "production"]) .default("development"), + LOGS: z .string() .default("0") diff --git a/apps/captable/middleware.ts b/apps/captable/middleware.ts index bf46c6ae5..82d338bb0 100644 --- a/apps/captable/middleware.ts +++ b/apps/captable/middleware.ts @@ -6,7 +6,7 @@ import { env } from "./env"; const log = logger.child({ module: "middleware" }); // This function can be marked `async` if using `await` inside export function middleware(request: NextRequest) { - if (env.LOGS || env.NODE_ENV === "production" || env.NODE_ENV === "staging") { + if (env.LOGS || env.NODE_ENV === "production") { const { url, method } = request; const time = new Date().toISOString(); const { device, browser, isBot } = userAgent(request); From a6abd9885668f228ef65c1eebc0189f5fe4da1a8 Mon Sep 17 00:00:00 2001 From: Puru D Date: Mon, 26 May 2025 22:56:47 -0500 Subject: [PATCH 45/85] chore: fix build warning --- apps/captable/next.config.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/apps/captable/next.config.js b/apps/captable/next.config.js index 31ec71853..fce99522a 100644 --- a/apps/captable/next.config.js +++ b/apps/captable/next.config.js @@ -4,9 +4,6 @@ const nextConfig = { ignoreDuringBuilds: true, }, output: 'standalone', - experimental: { - esmExternals: 'loose', - }, webpack: (config, { isServer }) => { if (!isServer) { // For client-side builds, externalize Node.js built-ins From 4f981fd6b66b44540b2cf46236afe2e0dfe25cb4 Mon Sep 17 00:00:00 2001 From: Puru D Date: Mon, 26 May 2025 23:02:17 -0500 Subject: [PATCH 46/85] feat: next.config.js => next.config.ts --- .../{next.config.js => next.config.ts} | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) rename apps/captable/{next.config.js => next.config.ts} (52%) diff --git a/apps/captable/next.config.js b/apps/captable/next.config.ts similarity index 52% rename from apps/captable/next.config.js rename to apps/captable/next.config.ts index fce99522a..0e0c6666c 100644 --- a/apps/captable/next.config.js +++ b/apps/captable/next.config.ts @@ -1,5 +1,6 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = { +import type { NextConfig } from 'next' + +const nextConfig: NextConfig = { eslint: { ignoreDuringBuilds: true, }, @@ -17,6 +18,21 @@ const nextConfig = { }; } + // Ignore OpenTelemetry and Sentry dynamic require warnings + config.ignoreWarnings = [ + ...(config.ignoreWarnings || []), + { + module: /node_modules\/@opentelemetry/, + message: /Critical dependency: the request of a dependency is an expression/, + }, + { + module: /node_modules\/@sentry/, + message: /Critical dependency: the request of a dependency is an expression/, + }, + // Also ignore any other dynamic require warnings from instrumentation + /Critical dependency: the request of a dependency is an expression/, + ]; + // External database drivers for both client and server builds config.externals.push({ postgres: "commonjs postgres", @@ -31,4 +47,4 @@ const nextConfig = { }, }; -export default nextConfig; +export default nextConfig; \ No newline at end of file From 0d60e907a7bc04527dc2e64e343118d297b69f73 Mon Sep 17 00:00:00 2001 From: Puru D Date: Mon, 26 May 2025 23:13:40 -0500 Subject: [PATCH 47/85] =?UTF-8?q?feat:=20build=20finally=20works=20?= =?UTF-8?q?=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/captable/package.json | 2 +- packages/email/package.json | 1 + packages/utils/package.json | 1 + turbo.jsonc | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/captable/package.json b/apps/captable/package.json index cbf7c556c..56d319832 100644 --- a/apps/captable/package.json +++ b/apps/captable/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "dev": "next dev --turbopack --port 3000", - "build": "next build", + "build": "NODE_OPTIONS='--no-deprecation' next build", "start": "next start", "check-types": "tsc --noEmit", "format": "biome format --write", diff --git a/packages/email/package.json b/packages/email/package.json index 01bb35d15..909f4dd50 100644 --- a/packages/email/package.json +++ b/packages/email/package.json @@ -1,6 +1,7 @@ { "name": "@captable/email", "version": "1.1.0", + "type": "module", "private": true, "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/utils/package.json b/packages/utils/package.json index 9ede36cec..73d5749d3 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,7 @@ { "name": "@captable/utils", "version": "1.0.0", + "type": "module", "private": true, "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/turbo.jsonc b/turbo.jsonc index 5d5bcd069..10fc4959f 100644 --- a/turbo.jsonc +++ b/turbo.jsonc @@ -6,7 +6,7 @@ "build": { "dependsOn": ["^build"], "inputs": ["$TURBO_DEFAULT$", ".env*"], - "outputs": [".next/**", "!.next/cache/**"] + "outputs": [".next/**", "!.next/cache/**", "dist/**"] }, "lint": { "dependsOn": ["^lint"] From e870d02b471177927323e33ac630d12811761d94 Mon Sep 17 00:00:00 2001 From: Puru D Date: Tue, 27 May 2025 00:23:09 -0500 Subject: [PATCH 48/85] feat: finalize email package setup and refactor --- packages/email/components/README.md | 176 ++++++++++++++++++ packages/email/components/button.tsx | 45 +++++ packages/email/components/footer.tsx | 40 ++++ packages/email/components/heading.tsx | 22 +++ packages/email/components/index.ts | 17 ++ packages/email/components/layout.tsx | 50 +++++ packages/email/components/link.tsx | 32 ++++ packages/email/components/text.tsx | 30 +++ packages/email/index.ts | 51 +++-- packages/email/readme.md | 121 +++++++++--- .../templates/AccountVerificationEmail.tsx | 62 ------ .../templates/EsignConfirmationEmail.tsx | 81 -------- packages/email/templates/EsignEmail.tsx | 119 ------------ packages/email/templates/MagicLinkEmail.tsx | 65 ------- .../email/templates/MemberInviteEmail.tsx | 88 --------- .../email/templates/PasswordResetEmail.tsx | 60 ------ .../email/templates/ShareDataRoomEmail.tsx | 93 --------- packages/email/templates/ShareUpdateEmail.tsx | 93 --------- .../templates/account-verification-email.tsx | 38 ++++ .../templates/esign-confirmation-email.tsx | 66 +++++++ packages/email/templates/esign-email.tsx | 94 ++++++++++ packages/email/templates/index.ts | 32 ++-- packages/email/templates/magic-link-email.tsx | 40 ++++ .../email/templates/member-invite-email.tsx | 60 ++++++ .../email/templates/password-reset-email.tsx | 36 ++++ .../email/templates/share-data-room-email.tsx | 71 +++++++ .../email/templates/share-update-email.tsx | 71 +++++++ packages/email/tsconfig.json | 3 +- 28 files changed, 1041 insertions(+), 715 deletions(-) create mode 100644 packages/email/components/README.md create mode 100644 packages/email/components/button.tsx create mode 100644 packages/email/components/footer.tsx create mode 100644 packages/email/components/heading.tsx create mode 100644 packages/email/components/index.ts create mode 100644 packages/email/components/layout.tsx create mode 100644 packages/email/components/link.tsx create mode 100644 packages/email/components/text.tsx delete mode 100644 packages/email/templates/AccountVerificationEmail.tsx delete mode 100644 packages/email/templates/EsignConfirmationEmail.tsx delete mode 100644 packages/email/templates/EsignEmail.tsx delete mode 100644 packages/email/templates/MagicLinkEmail.tsx delete mode 100644 packages/email/templates/MemberInviteEmail.tsx delete mode 100644 packages/email/templates/PasswordResetEmail.tsx delete mode 100644 packages/email/templates/ShareDataRoomEmail.tsx delete mode 100644 packages/email/templates/ShareUpdateEmail.tsx create mode 100644 packages/email/templates/account-verification-email.tsx create mode 100644 packages/email/templates/esign-confirmation-email.tsx create mode 100644 packages/email/templates/esign-email.tsx create mode 100644 packages/email/templates/magic-link-email.tsx create mode 100644 packages/email/templates/member-invite-email.tsx create mode 100644 packages/email/templates/password-reset-email.tsx create mode 100644 packages/email/templates/share-data-room-email.tsx create mode 100644 packages/email/templates/share-update-email.tsx diff --git a/packages/email/components/README.md b/packages/email/components/README.md new file mode 100644 index 000000000..7fb2c4eb2 --- /dev/null +++ b/packages/email/components/README.md @@ -0,0 +1,176 @@ +# Email Components + +This directory contains reusable email components built with React Email and Tailwind CSS. + +## Components + +### EmailLayout +The main layout wrapper that includes HTML structure, Tailwind wrapper, and centered logo. + +```tsx +import { EmailLayout } from "@components"; + + + {/* Email content */} + +``` + +**Props:** +- `children`: React.ReactNode - Email content +- `preview?`: string - Preview text for email clients +- `logoUrl?`: string - Logo URL (defaults to Captable logo) +- `logoAlt?`: string - Logo alt text +- `containerClassName?`: string - Custom container classes + +### EmailHeading +Styled heading component for email titles. + +```tsx +import { EmailHeading } from "@components"; + + + Welcome to Company Name + +``` + +**Props:** +- `children`: React.ReactNode +- `className?`: string - Custom classes +- `level?`: "h1" | "h2" | "h3" - Heading level + +### EmailText +Text component with predefined variants. + +```tsx +import { EmailText } from "@components"; + +Regular text content +Small text +Muted text +``` + +**Props:** +- `children`: React.ReactNode +- `className?`: string - Custom classes (overrides variant) +- `variant?`: "body" | "small" | "muted" + +### EmailButton +Styled button component with consistent appearance and robust center alignment. + +```tsx +import { EmailButton } from "@components"; + + + Click Here + +``` + +**Props:** +- `href`: string - Button link +- `children`: React.ReactNode - Button text +- `className?`: string - Custom button classes +- `sectionClassName?`: string - Custom section wrapper classes + +**Note:** Buttons are center-aligned using table-based layout for maximum compatibility across email clients. + +### EmailLink +Link component with different style variants. + +```tsx +import { EmailLink } from "@components"; + + + Regular link + + + https://very-long-url.com/that/needs/to/break + + + Footer link + +``` + +**Props:** +- `href`: string - Link URL +- `children`: React.ReactNode - Link text +- `className?`: string - Custom classes (overrides variant) +- `variant?`: "primary" | "muted" | "breakable" + +### EmailFooter +Footer component with divider and customizable content. + +```tsx +import { EmailFooter } from "@components"; + +// Default footer with company link + + +// Custom text footer + + +// Custom link footer + +``` + +**Props:** +- `showDivider?`: boolean - Show horizontal divider (default: true) +- `customText?`: string - Custom footer text +- `customLink?`: string - Custom footer link URL +- `customLinkText?`: string - Custom footer link text + +## Usage Example + +```tsx +import { + EmailLayout, + EmailHeading, + EmailText, + EmailButton, + EmailLink, + EmailFooter, +} from "../components"; + +export const WelcomeEmail = ({ userName, loginUrl }) => ( + + + Welcome, {userName}! + + + + Thank you for joining our platform. Click below to get started. + + + + Get Started + + + + Or copy this link: + {loginUrl} + + + + + +); +``` + +## Features + +- **Consistent Styling**: All components use consistent Tailwind classes +- **Centered Logo**: EmailLayout automatically includes a centered logo +- **Centered Buttons**: All buttons are center-aligned using table-based layout for email client compatibility +- **Responsive Design**: Components work across different email clients +- **TypeScript Support**: Full type safety with TypeScript interfaces +- **Customizable**: Override default styles with custom classes +- **Accessible**: Proper semantic HTML and alt text support \ No newline at end of file diff --git a/packages/email/components/button.tsx b/packages/email/components/button.tsx new file mode 100644 index 000000000..207ef151f --- /dev/null +++ b/packages/email/components/button.tsx @@ -0,0 +1,45 @@ +import { Button as ReactEmailButton, Section } from "@react-email/components"; +import type * as React from "react"; + +export interface ButtonProps { + href: string; + children: React.ReactNode; + className?: string; + sectionClassName?: string; +} + +export const Button = ({ + href, + children, + className = "rounded bg-black px-5 py-3 text-center text-[12px] font-semibold text-white no-underline", + sectionClassName = "mb-[32px] mt-[32px]", +}: ButtonProps) => { + return ( +
+ + + + + + +
+ + {children} + +
+
+ ); +}; + +export default Button; \ No newline at end of file diff --git a/packages/email/components/footer.tsx b/packages/email/components/footer.tsx new file mode 100644 index 000000000..5a8801c1e --- /dev/null +++ b/packages/email/components/footer.tsx @@ -0,0 +1,40 @@ +import { Hr } from "@react-email/components"; +import { META } from "@captable/utils/constants"; +import { Link } from "./link"; +import { Text } from "./text"; + +export interface FooterProps { + showDivider?: boolean; + customText?: string; + customLink?: string; + customLinkText?: string; +} + +export const Footer = ({ + showDivider = true, + customText, + customLink, + customLinkText, +}: FooterProps) => { + return ( + <> + {showDivider && ( +
+ )} + {customText ? ( + + {customText} + + ) : ( + + {customLinkText || META.title} + + )} + + ); +}; + +export default Footer; \ No newline at end of file diff --git a/packages/email/components/heading.tsx b/packages/email/components/heading.tsx new file mode 100644 index 000000000..fe8ac8f33 --- /dev/null +++ b/packages/email/components/heading.tsx @@ -0,0 +1,22 @@ +import { Heading as ReactEmailHeading } from "@react-email/components"; +import type * as React from "react"; + +export interface HeadingProps { + children: React.ReactNode; + className?: string; + level?: "h1" | "h2" | "h3"; +} + +export const Heading = ({ + children, + className = "mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black", + level = "h1", +}: HeadingProps) => { + return ( + + {children} + + ); +}; + +export default Heading; \ No newline at end of file diff --git a/packages/email/components/index.ts b/packages/email/components/index.ts new file mode 100644 index 000000000..e6be39e94 --- /dev/null +++ b/packages/email/components/index.ts @@ -0,0 +1,17 @@ +export { Layout } from "./layout"; +export type { LayoutProps } from "./layout"; + +export { Button } from "./button"; +export type { ButtonProps } from "./button"; + +export { Heading } from "./heading"; +export type { HeadingProps } from "./heading"; + +export { Text } from "./text"; +export type { TextProps } from "./text"; + +export { Link } from "./link"; +export type { LinkProps } from "./link"; + +export { Footer } from "./footer"; +export type { FooterProps } from "./footer"; diff --git a/packages/email/components/layout.tsx b/packages/email/components/layout.tsx new file mode 100644 index 000000000..9c76fafbd --- /dev/null +++ b/packages/email/components/layout.tsx @@ -0,0 +1,50 @@ +import { + Body, + Container, + Head, + Html as ReactEmailHtml, + Img, + Preview, + Tailwind, +} from "@react-email/components"; +import type * as React from "react"; + +export interface LayoutProps { + children: React.ReactNode; + preview?: string; + logoUrl?: string; + logoAlt?: string; + containerClassName?: string; +} + +export const Layout = ({ + children, + preview, + logoUrl = "https://cdn.captableinc.com/logo/100.png", // Default logo URL + logoAlt = "Captable Logo", + containerClassName = "mx-auto my-[40px] max-w-[465px] border-separate rounded border border-solid border-neutral-200 p-[20px]", +}: LayoutProps) => { + return ( + + + {preview && {preview}} + + + + {/* Centered Logo */} +
+ {logoAlt} +
+ {children} +
+ +
+
+ ); +}; + +export default Layout; \ No newline at end of file diff --git a/packages/email/components/link.tsx b/packages/email/components/link.tsx new file mode 100644 index 000000000..160b526dc --- /dev/null +++ b/packages/email/components/link.tsx @@ -0,0 +1,32 @@ +import { Link as ReactEmailLink } from "@react-email/components"; +import type * as React from "react"; + +export interface LinkProps { + href: string; + children: React.ReactNode; + className?: string; + variant?: "primary" | "muted" | "breakable"; +} + +const variantClasses = { + primary: "text-blue-600 no-underline", + muted: "text-sm !text-gray-400 no-underline", + breakable: "break-all text-blue-600 no-underline", +}; + +export const Link = ({ + href, + children, + className, + variant = "primary", +}: LinkProps) => { + const baseClassName = className || variantClasses[variant]; + + return ( + + {children} + + ); +}; + +export default Link; \ No newline at end of file diff --git a/packages/email/components/text.tsx b/packages/email/components/text.tsx new file mode 100644 index 000000000..7b99bc2e9 --- /dev/null +++ b/packages/email/components/text.tsx @@ -0,0 +1,30 @@ +import { Text as ReactEmailText } from "@react-email/components"; +import type * as React from "react"; + +export interface TextProps { + children: React.ReactNode; + className?: string; + variant?: "body" | "small" | "muted"; +} + +const variantClasses = { + body: "text-[14px] leading-[24px] text-black", + small: "text-[12px] leading-[24px] text-black", + muted: "text-[12px] leading-[24px] text-[#666666]", +}; + +export const Text = ({ + children, + className, + variant = "body", +}: TextProps) => { + const baseClassName = className || variantClasses[variant]; + + return ( + + {children} + + ); +}; + +export default Text; \ No newline at end of file diff --git a/packages/email/index.ts b/packages/email/index.ts index 7e1b0bf4e..d1d425d4e 100644 --- a/packages/email/index.ts +++ b/packages/email/index.ts @@ -1,24 +1,43 @@ import type { ReactElement } from "react"; // Export all email templates and their types explicitly -export { default as AccountVerificationEmail } from "./templates/AccountVerificationEmail.js"; -export { default as EsignConfirmationEmail } from "./templates/EsignConfirmationEmail.js"; -export { default as EsignEmail } from "./templates/EsignEmail.js"; -export { default as MagicLinkEmail } from "./templates/MagicLinkEmail.js"; -export { default as MemberInviteEmail } from "./templates/MemberInviteEmail.js"; -export { default as PasswordResetEmail } from "./templates/PasswordResetEmail.js"; -export { default as ShareDataRoomEmail } from "./templates/ShareDataRoomEmail.js"; -export { default as ShareUpdateEmail } from "./templates/ShareUpdateEmail.js"; +export { default as AccountVerificationEmail } from "./templates/account-verification-email.js"; +export { default as EsignConfirmationEmail } from "./templates/esign-confirmation-email.js"; +export { default as EsignEmail } from "./templates/esign-email.js"; +export { default as MagicLinkEmail } from "./templates/magic-link-email.js"; +export { default as MemberInviteEmail } from "./templates/member-invite-email.js"; +export { default as PasswordResetEmail } from "./templates/password-reset-email.js"; +export { default as ShareDataRoomEmail } from "./templates/share-data-room-email.js"; +export { default as ShareUpdateEmail } from "./templates/share-update-email.js"; // Export types -export type { AccountVerificationEmailProps } from "./templates/AccountVerificationEmail.js"; -export type { EsignConfirmationEmailProps } from "./templates/EsignConfirmationEmail.js"; -export type { EsignEmailProps } from "./templates/EsignEmail.js"; -export type { MagicLinkEmailProps } from "./templates/MagicLinkEmail.js"; -export type { MemberInviteEmailProps } from "./templates/MemberInviteEmail.js"; -export type { PasswordResetEmailProps } from "./templates/PasswordResetEmail.js"; -export type { ShareDataRoomEmailProps } from "./templates/ShareDataRoomEmail.js"; -export type { ShareUpdateEmailProps } from "./templates/ShareUpdateEmail.js"; +export type { AccountVerificationEmailProps } from "./templates/account-verification-email.js"; +export type { EsignConfirmationEmailProps } from "./templates/esign-confirmation-email.js"; +export type { EsignEmailProps } from "./templates/esign-email.js"; +export type { MagicLinkEmailProps } from "./templates/magic-link-email.js"; +export type { MemberInviteEmailProps } from "./templates/member-invite-email.js"; +export type { PasswordResetEmailProps } from "./templates/password-reset-email.js"; +export type { ShareDataRoomEmailProps } from "./templates/share-data-room-email.js"; +export type { ShareUpdateEmailProps } from "./templates/share-update-email.js"; + +// Export email components +export { + Layout, + Button, + Heading, + Text, + Link, + Footer, +} from "./components/index.js"; + +export type { + LayoutProps, + ButtonProps, + HeadingProps, + TextProps, + LinkProps, + FooterProps, +} from "./components/index.js"; // Dynamic import for React Email render function to avoid ES module issues export async function render(component: ReactElement, options?: { pretty?: boolean; plainText?: boolean }) { diff --git a/packages/email/readme.md b/packages/email/readme.md index 7d24adfb2..e595c416c 100644 --- a/packages/email/readme.md +++ b/packages/email/readme.md @@ -1,6 +1,6 @@ # @captable/email -A tree-shakable email template package for Captable, Inc. Built with React Email components. +A tree-shakable email template package for Captable, Inc. Built with React Email components and shared UI components. ## Features @@ -9,6 +9,9 @@ A tree-shakable email template package for Captable, Inc. Built with React Email - 🎨 **Tailwind CSS**: Styled with Tailwind CSS for consistent design - 📱 **Responsive**: Mobile-friendly email templates - 🔧 **TypeScript**: Full TypeScript support with exported types +- 🧩 **Shared Components**: Reusable email components for consistent styling +- 🎯 **Centered Logo**: All emails include a horizontally centered logo +- 🔘 **Centered Buttons**: All buttons are center-aligned by default ## Installation @@ -68,6 +71,46 @@ The package includes the following email templates: - **ShareDataRoomEmail** - Data room sharing notification - **ShareUpdateEmail** - Company update sharing notification +### Shared Email Components + +The package also exports reusable email components for building custom templates: + +```typescript +import { + Layout, + Button, + Heading, + Text, + Link, + Footer, + type LayoutProps, + type ButtonProps, + type HeadingProps, + type TextProps, + type LinkProps, + type FooterProps +} from "@captable/email"; + +// Example custom template +const CustomEmail = ({ userName, actionUrl }) => ( + + Welcome, {userName}! + Thank you for joining our platform. + +

Es#`a|^rKBg$-pUS@*-SIs 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 LE9;FfvVZ&^SL{=18" @@ -27,16 +29,27 @@ "dependencies": { "@auth/drizzle-adapter": "^1.9.1", "@biomejs/biome": "^1.9.4", + "@blocknote/core": "^0.31.0", + "@blocknote/react": "^0.31.0", + "@hono/zod-openapi": "^0.19.6", + "@radix-ui/react-toolbar": "^1.1.10", "@react-email/components": "^0.0.41", "@react-pdf/renderer": "^4.3.0", "@sentry/nextjs": "^9.22.0", "@simplewebauthn/types": "^12.0.0", + "@stripe/stripe-js": "^7.3.0", "@tanstack/react-table": "^8.21.3", + "@wojtekmaj/react-hooks": "^1.22.0", "autoprefixer": "^10.4.21", + "cookie": "^1.0.2", + "hono": "^4.7.10", + "html-to-image": "^1.11.13", + "input-otp": "^1.4.2", "lefthook": "^1.11.13", "nodemailer": "^7.0.3", "pdf-lib": "^1.17.1", "pg-boss": "^10.2.0", + "react-pdf": "^9.2.1", "stripe": "^18.1.1" } } From 3835eeeb0a9ae379740c82ccafe958477dc50d64 Mon Sep 17 00:00:00 2001 From: Puru D Date: Fri, 23 May 2025 00:25:08 -0500 Subject: [PATCH 11/85] fix: enum imports --- apps/captable/app/[publicId]/page.tsx | 7 +++---- .../shares/steps/general-details.tsx | 12 +++++++----- .../template/canavs-toolbar/index.tsx | 4 ++-- .../components/template/field-type-data.ts | 4 ++-- .../captable/lib/rbac/access-control-utils.ts | 4 ++-- apps/captable/lib/rbac/access-control.ts | 8 ++++---- apps/captable/lib/rbac/constants.ts | 4 ++-- .../providers/template-field-provider.tsx | 14 ++++++++------ .../trpc/routers/access-token/router.ts | 12 +++++++++--- .../trpc/routers/billing-router/schema.ts | 4 ++-- .../routers/template-field-router/schema.ts | 6 +++--- .../procedures/sign-template.ts | 6 ++---- bun.lockb | Bin 509896 -> 509896 bytes 13 files changed, 46 insertions(+), 39 deletions(-) diff --git a/apps/captable/app/[publicId]/page.tsx b/apps/captable/app/[publicId]/page.tsx index ea7c8f533..a70734781 100644 --- a/apps/captable/app/[publicId]/page.tsx +++ b/apps/captable/app/[publicId]/page.tsx @@ -4,8 +4,8 @@ import { dayjsExt } from "@/lib/common/dayjs"; import { SharePageLayout } from "@/components/share/page-layout"; import { Avatar, AvatarImage } from "@/components/ui/avatar"; import UpdateRenderer from "@/components/update/renderer"; -import { type JWTVerifyResult, decode } from "@/lib/jwt"; -import { UpdateStatusEnum } from "@captable/db/schema/enums"; +import type { JWTVerifyResult } from "@/lib/jwt"; +import { decode } from "@/lib/jwt"; import { db } from "@/server/db"; import { renderAsync } from "@react-email/components"; import { RiLock2Line } from "@remixicon/react"; @@ -71,8 +71,7 @@ const PublicUpdatePage = async ({ return notFound(); } - const canRenderInPublic = - update.status === UpdateStatusEnum.PUBLIC && update.public; + const canRenderInPublic = update.status === "PUBLIC" && update.public; if (!canRenderInPublic) { return ( diff --git a/apps/captable/components/securities/shares/steps/general-details.tsx b/apps/captable/components/securities/shares/steps/general-details.tsx index f91099dd8..f11cf29aa 100644 --- a/apps/captable/components/securities/shares/steps/general-details.tsx +++ b/apps/captable/components/securities/shares/steps/general-details.tsx @@ -46,11 +46,11 @@ import { z } from "zod"; export const humanizeCompanyLegends = (type: string): string => { switch (type) { - case ShareLegendsEnum.US_SECURITIES_ACT: + case "US_SECURITIES_ACT": return "US Securities Act"; - case ShareLegendsEnum.TRANSFER_RESTRICTIONS: + case "TRANSFER_RESTRICTIONS": return "Transfer Restrictions"; - case ShareLegendsEnum.SALE_AND_ROFR: + case "SALE_AND_ROFR": return "Sale and ROFR"; default: return ""; @@ -60,11 +60,13 @@ export const humanizeCompanyLegends = (type: string): string => { const formSchema = z.object({ shareClassId: z.string(), certificateId: z.string(), - status: z.nativeEnum(SecuritiesStatusEnum), + status: z.enum(SecuritiesStatusEnum.enumValues as [string, ...string[]]), quantity: z.coerce.number().min(0), cliffYears: z.coerce.number().min(0), vestingYears: z.coerce.number().min(0), - companyLegends: z.nativeEnum(ShareLegendsEnum).array(), + companyLegends: z + .enum(ShareLegendsEnum.enumValues as [string, ...string[]]) + .array(), pricePerShare: z.coerce.number().min(0), }); diff --git a/apps/captable/components/template/canavs-toolbar/index.tsx b/apps/captable/components/template/canavs-toolbar/index.tsx index 4171d4202..713bbb44e 100644 --- a/apps/captable/components/template/canavs-toolbar/index.tsx +++ b/apps/captable/components/template/canavs-toolbar/index.tsx @@ -2,7 +2,7 @@ import { Button } from "@/components/ui/button"; import { COLORS } from "@/lib/constants/esign"; -import type { FieldTypes } from "@captable/db/schema/enums"; +import type { FieldTypesEnum } from "@captable/db/schema/enums"; import * as Toolbar from "@radix-ui/react-toolbar"; import { FieldTypeData } from "../field-type-data"; @@ -130,7 +130,7 @@ export function CanvasToolbar({ recipients }: CanvasToolbarProps) { render={({ field }) => ( { - field.onChange(value as FieldTypes); + field.onChange(value as FieldTypesEnum); }} value={field.value} className="flex gap-x-2" diff --git a/apps/captable/components/template/field-type-data.ts b/apps/captable/components/template/field-type-data.ts index b02a38d7a..6d8ed09cb 100644 --- a/apps/captable/components/template/field-type-data.ts +++ b/apps/captable/components/template/field-type-data.ts @@ -1,4 +1,4 @@ -import { type FieldTypes } from "@captable/db/schema/enums"; +import type { FieldTypesEnum } from "@captable/db/schema/enums"; import { RiCalendar2Line, RiListCheck3, @@ -9,7 +9,7 @@ import { interface OptionsItems { label: string; icon: typeof RiSketching; - value: FieldTypes; + value: FieldTypesEnum; } export const FieldTypeData: OptionsItems[] = [ diff --git a/apps/captable/lib/rbac/access-control-utils.ts b/apps/captable/lib/rbac/access-control-utils.ts index b2f1b11ed..48aea11e4 100644 --- a/apps/captable/lib/rbac/access-control-utils.ts +++ b/apps/captable/lib/rbac/access-control-utils.ts @@ -1,9 +1,9 @@ import { ADMIN_ROLE_ID } from "@/lib/rbac/constants"; -import type { Roles } from "@captable/db/schema/enums"; +import type { RoleEnum } from "@captable/db/schema/enums"; import { invariant } from "../error"; interface getRoleIdOption { - role: Roles | null; + role: RoleEnum | null; customRoleId: string | null; } diff --git a/apps/captable/lib/rbac/access-control.ts b/apps/captable/lib/rbac/access-control.ts index e93c29183..8dadb47bc 100644 --- a/apps/captable/lib/rbac/access-control.ts +++ b/apps/captable/lib/rbac/access-control.ts @@ -5,7 +5,7 @@ import { ADMIN_ROLE_ID, DEFAULT_PERMISSION, } from "@/lib/rbac/constants"; -import { Roles } from "@captable/db/schema/enums"; +import type { RoleEnum } from "@captable/db/schema/enums"; import { checkMembership, withServerComponentSession } from "@/server/auth"; import { type TPrismaOrTransaction, db } from "@/server/db"; import type { Session } from "next-auth"; @@ -39,7 +39,7 @@ export async function checkAccessControlMembership({ } interface getPermissionsForRoleOptions { - role: Roles | null; + role: RoleEnum | null; tx: TPrismaOrTransaction; companyId: string; customRoleId: string | null; @@ -142,7 +142,7 @@ export const getRoleById = async ({ id, tx }: getRoleByIdOption) => { } if (id === ADMIN_ROLE_ID) { - return { role: Roles.ADMIN, customRoleId: null }; + return { role: "ADMIN", customRoleId: null }; } const { id: customRoleId } = await tx.customRole.findFirstOrThrow({ @@ -150,7 +150,7 @@ export const getRoleById = async ({ id, tx }: getRoleByIdOption) => { select: { id: true }, }); - return { role: Roles.CUSTOM, customRoleId }; + return { role: "CUSTOM", customRoleId }; }; export const getServerPermissions = cache(async () => { diff --git a/apps/captable/lib/rbac/constants.ts b/apps/captable/lib/rbac/constants.ts index 1fae368fc..127c3475c 100644 --- a/apps/captable/lib/rbac/constants.ts +++ b/apps/captable/lib/rbac/constants.ts @@ -1,5 +1,5 @@ import type { TPermission } from "@/lib/rbac/schema"; -import type { Roles } from "@captable/db/schema/enums"; +import type { RoleEnum } from "@captable/db/schema/enums"; import type { TActions } from "./actions"; import { SUBJECTS } from "./subjects"; @@ -38,4 +38,4 @@ export type RoleList = { } ); -type DefaultRoles = Exclude; +type DefaultRoles = Exclude; diff --git a/apps/captable/providers/template-field-provider.tsx b/apps/captable/providers/template-field-provider.tsx index 1a2af7408..a6fc3aff1 100644 --- a/apps/captable/providers/template-field-provider.tsx +++ b/apps/captable/providers/template-field-provider.tsx @@ -2,10 +2,10 @@ import { Form } from "@/components/ui/form"; import { COLORS } from "@/lib/constants/esign"; -import { FieldTypes, TemplateStatus } from "@captable/db/schema/enums"; -import { type RouterOutputs } from "@/trpc/shared"; +import { FieldTypesEnum, TemplateStatusEnum } from "@captable/db/schema/enums"; +import type { RouterOutputs } from "@/trpc/shared"; import { zodResolver } from "@hookform/resolvers/zod"; -import { type ReactNode } from "react"; +import type { ReactNode } from "react"; import { useForm } from "react-hook-form"; import { z } from "zod"; @@ -19,8 +19,10 @@ interface TemplateFieldProviderProps { } const formSchema = z.object({ - status: z.nativeEnum(TemplateStatus), - fieldType: z.nativeEnum(FieldTypes).optional(), + status: z.enum(TemplateStatusEnum.enumValues as [string, ...string[]]), + fieldType: z + .enum(FieldTypesEnum.enumValues as [string, ...string[]]) + .optional(), fields: z .array( z.object({ @@ -31,7 +33,7 @@ const formSchema = z.object({ top: z.number(), left: z.number(), required: z.boolean(), - type: z.nativeEnum(FieldTypes), + type: z.enum(FieldTypesEnum.enumValues as [string, ...string[]]), viewportHeight: z.number(), viewportWidth: z.number(), page: z.number(), diff --git a/apps/captable/trpc/routers/access-token/router.ts b/apps/captable/trpc/routers/access-token/router.ts index 67f0632c6..751acdd50 100644 --- a/apps/captable/trpc/routers/access-token/router.ts +++ b/apps/captable/trpc/routers/access-token/router.ts @@ -1,5 +1,5 @@ import { createSecureHash, initializeAccessToken } from "@/lib/crypto"; -import { AccessTokenType } from "@captable/db/schema/enums"; +import { AccessTokenTypeEnum } from "@captable/db/schema/enums"; import { Audit } from "@/server/audit"; import { createTRPCRouter, withAccessControl } from "@/trpc/api/trpc"; @@ -8,7 +8,13 @@ import z from "zod"; export const accessTokenRouter = createTRPCRouter({ listAll: withAccessControl - .input(z.object({ typeEnum: z.nativeEnum(AccessTokenType) })) + .input( + z.object({ + typeEnum: z.enum( + AccessTokenTypeEnum.enumValues as [string, ...string[]], + ), + }), + ) .query(async ({ ctx, input }) => { const { db, @@ -42,7 +48,7 @@ export const accessTokenRouter = createTRPCRouter({ }), create: withAccessControl - .input(z.object({ typeEnum: z.nativeEnum(AccessTokenType) })) + .input(z.object({ typeEnum: z.nativeEnum(AccessTokenTypeEnum) })) .mutation(async ({ ctx, input }) => { const { db, diff --git a/apps/captable/trpc/routers/billing-router/schema.ts b/apps/captable/trpc/routers/billing-router/schema.ts index 59bef9e8a..65333ba5b 100644 --- a/apps/captable/trpc/routers/billing-router/schema.ts +++ b/apps/captable/trpc/routers/billing-router/schema.ts @@ -1,9 +1,9 @@ -import { PricingType } from "@captable/db/schema/enums"; +import { PricingTypeEnum } from "@captable/db/schema/enums"; import { z } from "zod"; export const ZodCheckoutMutationSchema = z.object({ priceId: z.string(), - priceType: z.nativeEnum(PricingType), + priceType: z.enum(PricingTypeEnum.enumValues as [string, ...string[]]), }); export type TypeZodCheckoutMutationSchema = z.infer< diff --git a/apps/captable/trpc/routers/template-field-router/schema.ts b/apps/captable/trpc/routers/template-field-router/schema.ts index 12b9b534e..e2409356e 100644 --- a/apps/captable/trpc/routers/template-field-router/schema.ts +++ b/apps/captable/trpc/routers/template-field-router/schema.ts @@ -1,6 +1,6 @@ import { z } from "zod"; -import { FieldTypes, TemplateStatus } from "@captable/db/schema/enums"; +import { FieldTypesEnum, TemplateStatusEnum } from "@captable/db/schema/enums"; const TemplateFieldMetaType = z.object({ options: z @@ -12,7 +12,7 @@ const TemplateFieldMetaType = z.object({ export type TTemplateFieldMetaType = z.infer; export const ZodAddFieldMutationSchema = z.object({ - status: z.nativeEnum(TemplateStatus), + status: z.enum(TemplateStatusEnum.enumValues as [string, ...string[]]), templatePublicId: z.string(), data: z.array( z.object({ @@ -23,7 +23,7 @@ export const ZodAddFieldMutationSchema = z.object({ top: z.number(), left: z.number(), required: z.boolean(), - type: z.nativeEnum(FieldTypes), + type: z.enum(FieldTypesEnum.enumValues as [string, ...string[]]), viewportHeight: z.number(), viewportWidth: z.number(), page: z.number(), diff --git a/apps/captable/trpc/routers/template-router/procedures/sign-template.ts b/apps/captable/trpc/routers/template-router/procedures/sign-template.ts index 7b2fba319..48c7abd99 100644 --- a/apps/captable/trpc/routers/template-router/procedures/sign-template.ts +++ b/apps/captable/trpc/routers/template-router/procedures/sign-template.ts @@ -1,9 +1,7 @@ -/* eslint-disable @typescript-eslint/prefer-for-of */ - import { dayjsExt } from "@/lib/common/dayjs"; import { EsignNotificationEmailJob } from "@/jobs/esign-email"; import { EsignPdfJob } from "@/jobs/esign-pdf"; -import type { TemplateStatus } from "@captable/db/schema/enums"; +import type { TemplateStatusEnum } from "@captable/db/schema/enums"; import { EsignAudit } from "@/server/audit"; import { type CompleteEsignDocumentsOptionsType, @@ -31,7 +29,7 @@ export const signTemplateProcedure = withoutAuth const templateName = template.name; const sender = template.uploader.user; - let templateStatus: TemplateStatus = "WAITING"; + let templateStatus: TemplateStatusEnum = "WAITING"; const totalGroups = new Set( template.fields.map((item) => item.recipientId), diff --git a/bun.lockb b/bun.lockb index 30215e4d69e960d046014bd363438fce9d47e96c..8f74cc3d46650b38df473bfc2648957b70b4492f 100755 GIT binary patch delta 66 zcmX@nFMpz6zM+M&g{g&k3rp}HCB`@dJ!3;X1BPP^3=9Gc3=Q6vk9?YRlO{01WZFyr OumCaZ_R>FW!KVSiH5L{C delta 66 zcmX@nFMpz6zM+M&g{g&k3rp}HB_;+aI0mEz7#JG7Eg$(b=_XBJg2}X({$T-P*6pQ# I*n&?30At}38~^|S From e616d05e617bb56d8667d618f9fc97301ed50012 Mon Sep 17 00:00:00 2001 From: Puru D Date: Fri, 23 May 2025 00:51:56 -0500 Subject: [PATCH 12/85] fix: typesafety issues --- apps/captable/components/common/icons.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/captable/components/common/icons.tsx b/apps/captable/components/common/icons.tsx index 81318dcce..ca33168b8 100644 --- a/apps/captable/components/common/icons.tsx +++ b/apps/captable/components/common/icons.tsx @@ -15,6 +15,7 @@ export const SpinnerIcon = (props: IconProps) => { strokeLinejoin="round" {...props} > + Loading... ); @@ -32,6 +33,7 @@ export const UserAvatarIcon = (props: IconProps) => { fill="none" xmlns="http://www.w3.org/2000/svg" > + User Avatar { fill="none" xmlns="http://www.w3.org/2000/svg" > + Company Logo { fill="none" xmlns="http://www.w3.org/2000/svg" > + Logo { viewBox="0 0 56 56" xmlns="http://www.w3.org/2000/svg" > + Signature icon ); @@ -120,7 +125,8 @@ export const ArrowRight = (props: IconProps) => { viewBox="0 0 24 24" fill="currentColor" > - + Arrow Right + ); }; From f39d244912d8ccbd68d7720947cea2c6ba869453 Mon Sep 17 00:00:00 2001 From: Puru D Date: Fri, 23 May 2025 01:10:29 -0500 Subject: [PATCH 13/85] fix: more typesafety issues --- apps/captable/components/common/loading.tsx | 2 +- .../components/dashboard/navbar/mobile-drawer.tsx | 3 +-- .../components/dashboard/overview/activities-card.tsx | 8 +++++++- .../components/dashboard/page-layout/index.tsx | 2 +- .../components/dashboard/sidebar/nav-link.tsx | 3 ++- .../modals/equity-pan/equity-plan-modal.tsx | 6 ++---- .../components/modals/investor/add-investor-form.tsx | 4 ++-- .../modals/share-class/share-class-form.tsx | 4 ++-- .../modals/share-class/share-class-modal.tsx | 11 ++++++----- .../modals/stakeholder/single-stake-holder-form.tsx | 10 ++++++++-- 10 files changed, 32 insertions(+), 21 deletions(-) diff --git a/apps/captable/components/common/loading.tsx b/apps/captable/components/common/loading.tsx index 61feb669e..674ea219e 100644 --- a/apps/captable/components/common/loading.tsx +++ b/apps/captable/components/common/loading.tsx @@ -6,7 +6,7 @@ const Loading = () => {