From b87f5427ed3db8428b60fbf43fffcad20f8352c6 Mon Sep 17 00:00:00 2001 From: Shivank Kacker Date: Fri, 16 Aug 2024 09:43:36 +0530 Subject: [PATCH 01/89] Fix Scribe erroring out (#8331) --- src/Components/Scribe/formDetails.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Components/Scribe/formDetails.ts b/src/Components/Scribe/formDetails.ts index 7d9af28cecc..d085a72d331 100644 --- a/src/Components/Scribe/formDetails.ts +++ b/src/Components/Scribe/formDetails.ts @@ -1,4 +1,3 @@ -import { t } from "i18next"; import { CONSCIOUSNESS_LEVEL, PATIENT_CATEGORIES, @@ -212,8 +211,8 @@ const DAILY_ROUND_FORM_SCRIBE_DATA: Field[] = [ description: "An option to store the level of consciousness of the patient.", options: CONSCIOUSNESS_LEVEL.map((loc) => ({ - ...loc, - text: t(`CONSCIOUSNESS_LEVEL__${loc.value}`), + id: loc.id, + text: loc.value, })), validator: (value) => typeof value === "string", }, From d5805fa5077ccfe5459a485720ddc6209d3de787 Mon Sep 17 00:00:00 2001 From: Rithvik Nishad Date: Mon, 19 Aug 2024 15:22:33 +0530 Subject: [PATCH 02/89] Fix camera preset save button disable logic for cases of last moved position (#8345) --- .../ConsultationDetails/ConsultationFeedTab.tsx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Components/Facility/ConsultationDetails/ConsultationFeedTab.tsx b/src/Components/Facility/ConsultationDetails/ConsultationFeedTab.tsx index c1095d06e5a..08d2b314b82 100644 --- a/src/Components/Facility/ConsultationDetails/ConsultationFeedTab.tsx +++ b/src/Components/Facility/ConsultationDetails/ConsultationFeedTab.tsx @@ -145,6 +145,8 @@ export const ConsultationFeedTab = (props: ConsultationTabProps) => { return No bed/asset linked allocated; } + const cannotSaveToPreset = !hasMoved || !preset?.id; + return ( <> { ) : ( Date: Mon, 19 Aug 2024 21:08:05 +0530 Subject: [PATCH 03/89] Use abort controller for submit requests for patient and consultation creates (#8354) --- src/Components/Facility/ConsultationForm.tsx | 10 ++++++++- src/Components/Patient/PatientRegister.tsx | 12 +++++++++- src/Utils/request/request.ts | 23 ++++++++++++++++---- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/src/Components/Facility/ConsultationForm.tsx b/src/Components/Facility/ConsultationForm.tsx index 69fead157e0..5cda9d5ab01 100644 --- a/src/Components/Facility/ConsultationForm.tsx +++ b/src/Components/Facility/ConsultationForm.tsx @@ -15,7 +15,7 @@ import { FieldErrorText, FieldLabel } from "../Form/FormFields/FormField"; import InvestigationBuilder, { InvestigationType, } from "../Common/prescription-builder/InvestigationBuilder"; -import { LegacyRef, createRef, lazy, useEffect, useState } from "react"; +import { LegacyRef, createRef, lazy, useEffect, useRef, useState } from "react"; import ProcedureBuilder, { ProcedureType, } from "../Common/prescription-builder/ProcedureBuilder"; @@ -230,6 +230,7 @@ type Props = { export const ConsultationForm = ({ facilityId, patientId, id }: Props) => { const { goBack } = useAppHistory(); const { kasp_enabled, kasp_string } = useConfig(); + const submitController = useRef(); const [state, dispatch] = useAutoSaveReducer( consultationFormReducer, initialState, @@ -739,11 +740,18 @@ export const ConsultationForm = ({ facilityId, patientId, id }: Props) => { patient_no: state.form.patient_no || null, }; + request(id ? routes.updateConsultation : routes.createConsultation, { + pathParams: id ? { id } : undefined, + body: data, + controllerRef: submitController, + }); + const { data: obj } = await request( id ? routes.updateConsultation : routes.createConsultation, { pathParams: id ? { id } : undefined, body: data, + controllerRef: submitController, }, ); diff --git a/src/Components/Patient/PatientRegister.tsx b/src/Components/Patient/PatientRegister.tsx index 45251327406..3b38c3d54af 100644 --- a/src/Components/Patient/PatientRegister.tsx +++ b/src/Components/Patient/PatientRegister.tsx @@ -18,7 +18,14 @@ import { } from "../../Utils/utils"; import { navigate, useQueryParams } from "raviger"; import { statusType, useAbortableEffect } from "../../Common/utils"; -import { lazy, useCallback, useEffect, useReducer, useState } from "react"; +import { + lazy, + useCallback, + useEffect, + useReducer, + useRef, + useState, +} from "react"; import AccordionV2 from "../Common/components/AccordionV2"; import ButtonV2 from "../Common/components/ButtonV2"; @@ -170,6 +177,7 @@ export const parseOccupationFromExt = (occupation: Occupation) => { }; export const PatientRegister = (props: PatientRegisterProps) => { + const submitController = useRef(); const authUser = useAuthUser(); const { t } = useTranslation(); const { goBack } = useAppHistory(); @@ -760,9 +768,11 @@ export const PatientRegister = (props: PatientRegisterProps) => { ? await request(routes.updatePatient, { pathParams: { id }, body: data, + controllerRef: submitController, }) : await request(routes.addPatient, { body: { ...data, facility: facilityId }, + controllerRef: submitController, }); if (res?.ok && requestData) { await Promise.all( diff --git a/src/Utils/request/request.ts b/src/Utils/request/request.ts index 71286b4167d..9dd803148bb 100644 --- a/src/Utils/request/request.ts +++ b/src/Utils/request/request.ts @@ -2,9 +2,18 @@ import handleResponse from "./handleResponse"; import { RequestOptions, RequestResult, Route } from "./types"; import { makeHeaders, makeUrl } from "./utils"; -interface Options extends RequestOptions { - controller?: AbortController; -} +type ControllerXORControllerRef = + | { + controller?: AbortController; + controllerRef?: undefined; + } + | { + controller?: undefined; + controllerRef: React.MutableRefObject; + }; + +type Options = RequestOptions & + ControllerXORControllerRef; export default async function request( { path, method, noAuth }: Route, @@ -13,12 +22,18 @@ export default async function request( body, pathParams, controller, + controllerRef, onResponse, silent, reattempts = 3, }: Options = {}, ): Promise> { - const signal = controller?.signal; + if (controllerRef) { + controllerRef.current?.abort(); + controllerRef.current = new AbortController(); + } + + const signal = controller?.signal ?? controllerRef?.current?.signal; const url = makeUrl(path, query, pathParams); const options: RequestInit = { method, signal }; From 9a5e833add07a092cf26a34e233ea95f19ad9ee2 Mon Sep 17 00:00:00 2001 From: Rithvik Nishad Date: Mon, 19 Aug 2024 22:58:05 +0530 Subject: [PATCH 04/89] Treating physician: Fixes an edge case where clearing query leads to field getting disabled (#8355) --- src/Components/Common/UserAutocompleteFormField.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Components/Common/UserAutocompleteFormField.tsx b/src/Components/Common/UserAutocompleteFormField.tsx index a42fea1890c..dd7c4c4301e 100644 --- a/src/Components/Common/UserAutocompleteFormField.tsx +++ b/src/Components/Common/UserAutocompleteFormField.tsx @@ -62,7 +62,7 @@ export default function UserAutocomplete(props: UserSearchProps) { setDisabled(true); field.handleChange(undefined as unknown as UserBareMinimum); } - }, [loading, query, field.required, data?.results, props.noResultsError]); + }, [loading, field.required, data?.results, props.noResultsError]); return ( From 0e25ace0cebc7d37c82c717cb71d096adfcf577e Mon Sep 17 00:00:00 2001 From: Rithvik Nishad Date: Tue, 20 Aug 2024 22:41:39 +0530 Subject: [PATCH 05/89] Remove unintended duplicate request (#8372) --- src/Components/Facility/ConsultationForm.tsx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/Components/Facility/ConsultationForm.tsx b/src/Components/Facility/ConsultationForm.tsx index 5cda9d5ab01..355d4ce745e 100644 --- a/src/Components/Facility/ConsultationForm.tsx +++ b/src/Components/Facility/ConsultationForm.tsx @@ -740,12 +740,6 @@ export const ConsultationForm = ({ facilityId, patientId, id }: Props) => { patient_no: state.form.patient_no || null, }; - request(id ? routes.updateConsultation : routes.createConsultation, { - pathParams: id ? { id } : undefined, - body: data, - controllerRef: submitController, - }); - const { data: obj } = await request( id ? routes.updateConsultation : routes.createConsultation, { From b71816d41693a64c6ba400e51586a27935e83915 Mon Sep 17 00:00:00 2001 From: Rithvik Nishad Date: Wed, 21 Aug 2024 10:10:41 +0530 Subject: [PATCH 06/89] Use staging backend for cypress tests if PR base branch is staging (#8362) * Use staging backend for cypress tests if PR base branch is staging * switch to using environment files * correct default branch name --- .github/workflows/cypress.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/cypress.yaml b/.github/workflows/cypress.yaml index 5e671055535..f2f8fbd45cb 100644 --- a/.github/workflows/cypress.yaml +++ b/.github/workflows/cypress.yaml @@ -22,11 +22,21 @@ jobs: - name: Checkout 📥 uses: actions/checkout@v3 + - name: Set backend branch + id: backend-branch + run: | + if [[ '${{ github.event.pull_request.base.ref }}' == 'staging' ]]; then + echo "branch=staging" >> $GITHUB_OUTPUT + else + echo "branch=develop" >> $GITHUB_OUTPUT + fi + - name: Checkout care 📥 uses: actions/checkout@v3 with: repository: coronasafe/care path: care + ref: ${{ steps.backend-branch.outputs.branch }} - name: Start care docker containers 🐳 run: | From 3feade32841c9bc723bbf39da87c4a5146a4fb17 Mon Sep 17 00:00:00 2001 From: Shivank Kacker Date: Wed, 21 Aug 2024 10:11:29 +0530 Subject: [PATCH 07/89] Show "Save and Continue" for Progress Notes and Doctors Log (#8352) * Show "Save and Continue" for Progress Notes and Doctors Log * moved strings to i18n --- src/Components/Patient/DailyRounds.tsx | 6 +++++- src/Locale/en/Common.json | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Components/Patient/DailyRounds.tsx b/src/Components/Patient/DailyRounds.tsx index 4ec6b879b23..1318a1ddb74 100644 --- a/src/Components/Patient/DailyRounds.tsx +++ b/src/Components/Patient/DailyRounds.tsx @@ -141,7 +141,11 @@ export const DailyRounds = (props: any) => { const [showDiscontinuedPrescriptions, setShowDiscontinuedPrescriptions] = useState(false); const headerText = !id ? "Add Consultation Update" : "Info"; - const buttonText = !id ? "Save" : "Continue"; + const buttonText = !id + ? !["VENTILATOR", "DOCTORS_LOG"].includes(state.form.rounds_type) + ? t("save") + : t("save_and_continue") + : t("continue"); const formFields = [ "physical_examination_info", diff --git a/src/Locale/en/Common.json b/src/Locale/en/Common.json index 79ffefd7906..25cbef69371 100644 --- a/src/Locale/en/Common.json +++ b/src/Locale/en/Common.json @@ -119,6 +119,8 @@ "latitude_invalid": "Latitude must be between -90 and 90", "longitude_invalid": "Longitude must be between -180 and 180", "save": "Save", + "continue" : "Continue", + "save_and_continue": "Save and Continue", "select": "Select", "lsg": "Lsg", "delete": "Delete", From 617ad58f4bd417e770530ac6a8572e7f6748afec Mon Sep 17 00:00:00 2001 From: Shivank Kacker Date: Wed, 21 Aug 2024 10:12:47 +0530 Subject: [PATCH 08/89] Fixed rounds type changing for Scribe (#8350) --- src/Components/Patient/DailyRounds.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Components/Patient/DailyRounds.tsx b/src/Components/Patient/DailyRounds.tsx index 1318a1ddb74..8c09db3f8c2 100644 --- a/src/Components/Patient/DailyRounds.tsx +++ b/src/Components/Patient/DailyRounds.tsx @@ -427,7 +427,7 @@ export const DailyRounds = (props: any) => { return ; } - const roundTypes = []; + const roundTypes: { id: string; text: string }[] = []; if ( ["Doctor", "Staff", "DistrictAdmin", "StateAdmin"].includes( @@ -598,11 +598,11 @@ export const DailyRounds = (props: any) => { [ "investigations", "icd11_diagnosis", - "additional_symptoms", "prescriptions", "prn_prescriptions", ].includes(f), - ) + ) && + roundTypes.some((t) => t.id === "DOCTORS_LOG") ) { rounds_type = "DOCTORS_LOG"; } From dc9f3c079aa9fa7cb9731d78e2bce39357434bc1 Mon Sep 17 00:00:00 2001 From: Mohammed Nihal <57055998+nihal467@users.noreply.github.com> Date: Wed, 21 Aug 2024 10:13:39 +0530 Subject: [PATCH 09/89] Modified the fine text in Patient transfer pop-up to match with recent change (#8344) --- .../Facility/DuplicatePatientDialog.tsx | 18 +++++------------- .../Facility/TransferPatientDialog.tsx | 3 +-- src/Locale/en/Facility.json | 6 +++++- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/Components/Facility/DuplicatePatientDialog.tsx b/src/Components/Facility/DuplicatePatientDialog.tsx index b948ad91fa3..b9d740f85e8 100644 --- a/src/Components/Facility/DuplicatePatientDialog.tsx +++ b/src/Components/Facility/DuplicatePatientDialog.tsx @@ -2,6 +2,7 @@ import { useState } from "react"; import { Cancel, Submit } from "../Common/components/ButtonV2"; import DialogModal from "../Common/Dialog"; import { DupPatientModel } from "./models"; +import { useTranslation } from "react-i18next"; interface Props { patientList: Array; @@ -12,6 +13,7 @@ interface Props { const tdClass = "border border-secondary-400 p-2 text-left"; const DuplicatePatientDialog = (props: Props) => { + const { t } = useTranslation(); const { patientList, handleOk, handleCancel } = props; const [action, setAction] = useState(""); @@ -79,10 +81,7 @@ const DuplicatePatientDialog = (props: Props) => { value="transfer" onChange={(e) => setAction(e.target.value)} /> -

- Admit the patient record to your facility by adding the date of - birth -

+

{t("duplicate_patient_record_confirmation")}

@@ -99,18 +98,11 @@ const DuplicatePatientDialog = (props: Props) => { value="close" onChange={(e) => setAction(e.target.value)} /> -

- I confirm that the suspect / patient I want to create is not on - the list. -

+

{t("duplicate_patient_record_rejection")}

-

- Please contact your district care coordinator, the shifting facility - or the patient themselves if you are not sure about the patient's - date of birth. -

+

{t("duplicate_patient_record_birth_unknown")}

diff --git a/src/Components/Facility/TransferPatientDialog.tsx b/src/Components/Facility/TransferPatientDialog.tsx index 0c4af6c5d0c..4facfc2b35e 100644 --- a/src/Components/Facility/TransferPatientDialog.tsx +++ b/src/Components/Facility/TransferPatientDialog.tsx @@ -163,8 +163,7 @@ const TransferPatientDialog = (props: Props) => {

- Note: Date of birth must match the patient to process the transfer - request. + {t("patient_transfer_birth_match_note")}

diff --git a/src/Locale/en/Facility.json b/src/Locale/en/Facility.json index 5bb0a269e87..e321fa02f43 100644 --- a/src/Locale/en/Facility.json +++ b/src/Locale/en/Facility.json @@ -54,5 +54,9 @@ "create_add_more": "Create & Add More", "discharged_patients": "Discharged Patients", "discharged_patients_empty": "No discharged patients present in this facility", - "update_facility_middleware_success": "Facility middleware updated successfully" + "update_facility_middleware_success": "Facility middleware updated successfully", + "duplicate_patient_record_confirmation": "Admit the patient record to your facility by adding the year of birth", + "duplicate_patient_record_rejection": "I confirm that the suspect / patient I want to create is not on the list.", + "duplicate_patient_record_birth_unknown": "Please contact your district care coordinator, the shifting facility or the patient themselves if you are not sure about the patient's year of birth.", + "patient_transfer_birth_match_note": "Note: Year of birth must match the patient to process the transfer request." } From 5eed756272c55f67aa0227bee6926fff7941ba21 Mon Sep 17 00:00:00 2001 From: Rithvik Nishad Date: Wed, 21 Aug 2024 10:14:45 +0530 Subject: [PATCH 10/89] Remove unused components and packages (#8339) * Remove unused `Transition` block and other unused packages * remove unused tooltip component --- package-lock.json | 72 ------------- package.json | 5 - src/Components/Common/Transition.tsx | 134 ------------------------ src/Components/Common/utils/Tooltip.tsx | 50 --------- 4 files changed, 261 deletions(-) delete mode 100644 src/Components/Common/Transition.tsx delete mode 100644 src/Components/Common/utils/Tooltip.tsx diff --git a/package-lock.json b/package-lock.json index 0c59edd073e..ba448d666e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,7 +44,6 @@ "react-pdf": "^9.0.0", "react-player": "^2.16.0", "react-redux": "^8.1.1", - "react-transition-group": "^4.4.5", "react-webcam": "^7.2.0", "redux": "^4.2.1", "redux-thunk": "^2.4.2", @@ -62,8 +61,6 @@ "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.13", - "@types/cypress": "^1.1.3", - "@types/echarts": "^4.9.22", "@types/google.maps": "^3.55.8", "@types/lodash-es": "^4.17.12", "@types/qrcode.react": "^1.0.5", @@ -72,8 +69,6 @@ "@types/react-csv": "^1.1.10", "@types/react-dom": "^18.3.0", "@types/react-google-recaptcha": "^2.1.9", - "@types/react-qr-reader": "^2.1.7", - "@types/react-transition-group": "^4.4.10", "@typescript-eslint/eslint-plugin": "^7.18.0", "@vitejs/plugin-react-swc": "^3.6.0", "autoprefixer": "^10.4.19", @@ -6546,16 +6541,6 @@ "@types/node": "*" } }, - "node_modules/@types/cypress": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@types/cypress/-/cypress-1.1.3.tgz", - "integrity": "sha512-OXe0Gw8LeCflkG1oPgFpyrYWJmEKqYncBsD/J0r17r0ETx/TnIGDNLwXt/pFYSYuYTpzcq1q3g62M9DrfsBL4g==", - "deprecated": "This is a stub types definition for cypress (https://cypress.io). cypress provides its own type definitions, so you don't need @types/cypress installed!", - "dev": true, - "dependencies": { - "cypress": "*" - } - }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -6582,15 +6567,6 @@ "integrity": "sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==", "dev": true }, - "node_modules/@types/echarts": { - "version": "4.9.22", - "resolved": "https://registry.npmjs.org/@types/echarts/-/echarts-4.9.22.tgz", - "integrity": "sha512-7Fo6XdWpoi8jxkwP7BARUOM7riq8bMhmsCtSG8gzUcJmFhLo387tihoBYS/y5j7jl3PENT5RxeWZdN9RiwO7HQ==", - "dev": true, - "dependencies": { - "@types/zrender": "*" - } - }, "node_modules/@types/ejs": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.5.tgz", @@ -6875,24 +6851,6 @@ "@types/react": "*" } }, - "node_modules/@types/react-qr-reader": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@types/react-qr-reader/-/react-qr-reader-2.1.7.tgz", - "integrity": "sha512-6K6DQeqP7c2oohcfvBpExlOawVsB2/C+7ZZL/fkCkNzYYAKDJnNHnuP3F5ChMl0mpoYEdqkqkllxqfM0VslEiw==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react-transition-group": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", - "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, "node_modules/@types/resolve": { "version": "1.20.6", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", @@ -6977,12 +6935,6 @@ "@types/node": "*" } }, - "node_modules/@types/zrender": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/zrender/-/zrender-4.0.6.tgz", - "integrity": "sha512-1jZ9bJn2BsfmYFPBHtl5o3uV+ILejAtGrDcYSpT4qaVKEI/0YY+arw3XHU04Ebd8Nca3SQ7uNcLaqiL+tTFVMg==", - "dev": true - }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "7.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", @@ -10330,15 +10282,6 @@ "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, "node_modules/dotenv": { "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", @@ -19805,21 +19748,6 @@ } } }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, "node_modules/react-webcam": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-7.2.0.tgz", diff --git a/package.json b/package.json index e9f22f98b16..ccb91dfcbae 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,6 @@ "react-pdf": "^9.0.0", "react-player": "^2.16.0", "react-redux": "^8.1.1", - "react-transition-group": "^4.4.5", "react-webcam": "^7.2.0", "redux": "^4.2.1", "redux-thunk": "^2.4.2", @@ -98,8 +97,6 @@ "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.13", - "@types/cypress": "^1.1.3", - "@types/echarts": "^4.9.22", "@types/google.maps": "^3.55.8", "@types/lodash-es": "^4.17.12", "@types/qrcode.react": "^1.0.5", @@ -108,8 +105,6 @@ "@types/react-csv": "^1.1.10", "@types/react-dom": "^18.3.0", "@types/react-google-recaptcha": "^2.1.9", - "@types/react-qr-reader": "^2.1.7", - "@types/react-transition-group": "^4.4.10", "@typescript-eslint/eslint-plugin": "^7.18.0", "@vitejs/plugin-react-swc": "^3.6.0", "autoprefixer": "^10.4.19", diff --git a/src/Components/Common/Transition.tsx b/src/Components/Common/Transition.tsx deleted file mode 100644 index 7f5830d47db..00000000000 --- a/src/Components/Common/Transition.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import { CSSTransition as ReactCSSTransition } from "react-transition-group"; -import { createContext, useContext, useEffect, useRef } from "react"; - -type TransitionContextProps = { - parent: { - show: boolean; - isInitialRender: boolean; - appear?: boolean; - }; -}; - -const TransitionContext = createContext>({ - parent: { - show: false, - isInitialRender: true, - }, -}); - -function useIsInitialRender() { - const isInitialRender = useRef(true); - useEffect(() => { - isInitialRender.current = false; - }, []); - return isInitialRender.current; -} - -interface TransitionProps { - show?: boolean; - enter?: string; - enterFrom?: string; - enterTo?: string; - leave?: string; - leaveFrom?: string; - leaveTo?: string; - appear?: boolean; - children: React.ReactNode; -} - -function CSSTransition({ - show, - enter = "", - enterFrom = "", - enterTo = "", - leave = "", - leaveFrom = "", - leaveTo = "", - appear, - children, -}: TransitionProps) { - const enterClasses = enter.split(" ").filter((s) => s.length); - const enterFromClasses = enterFrom.split(" ").filter((s) => s.length); - const enterToClasses = enterTo.split(" ").filter((s) => s.length); - const leaveClasses = leave.split(" ").filter((s) => s.length); - const leaveFromClasses = leaveFrom.split(" ").filter((s) => s.length); - const leaveToClasses = leaveTo.split(" ").filter((s) => s.length); - - function addClasses(node: HTMLElement, classes: string[]): void { - if (classes.length) { - node.classList.add(...classes); - } - } - - function removeClasses(node: HTMLElement, classes: string[]): void { - if (classes.length) { - node.classList.remove(...classes); - } - } - - return ( - { - node.addEventListener("transitionend", done, false); - }} - onEnter={(node: any) => { - addClasses(node, [...enterClasses, ...enterFromClasses]); - }} - onEntering={(node: any) => { - removeClasses(node, enterFromClasses); - addClasses(node, enterToClasses); - }} - onEntered={(node: any) => { - removeClasses(node, [...enterToClasses, ...enterClasses]); - }} - onExit={(node: any) => { - addClasses(node, [...leaveClasses, ...leaveFromClasses]); - }} - onExiting={(node: any) => { - removeClasses(node, leaveFromClasses); - addClasses(node, leaveToClasses); - }} - onExited={(node: any) => { - removeClasses(node, [...leaveToClasses, ...leaveClasses]); - }} - > - {children} - - ); -} - -function Transition({ show, appear, ...rest }: TransitionProps) { - const { parent } = useContext(TransitionContext); - const isInitialRender = useIsInitialRender(); - const isChild = show === undefined; - - if (isChild) { - return ( - - ); - } - - return ( - - - - ); -} - -export default Transition; diff --git a/src/Components/Common/utils/Tooltip.tsx b/src/Components/Common/utils/Tooltip.tsx deleted file mode 100644 index 2257b9b28b6..00000000000 --- a/src/Components/Common/utils/Tooltip.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { ReactNode, useState } from "react"; -import { classNames } from "../../../Utils/utils"; - -interface TooltipProps { - children: ReactNode; - text: ReactNode; - position?: "TOP" | "BOTTOM" | "LEFT" | "RIGHT" | "CUSTOM"; - className?: string; -} - -/** - * Deprecated. Use `tooltip` and `tooltip-text` with `tooltip-{left/right/top/bottom}` classes on elements. - * - * **Example:** - * ```html - * - * ``` - */ -export default function ToolTip(props: TooltipProps) { - const position = props.position || "TOP"; - - const [status, show] = useState(false); - - const style = classNames( - "absolute z-50 block w-[150px] rounded bg-black/50 px-2 py-1 text-center text-white backdrop-blur transition", - position === "TOP" && "bottom-[calc(100%+5px)] left-[calc(50%-75px)]", - position === "BOTTOM" && "left-[calc(50%-75px)] top-[calc(100%+5px)]", - position === "LEFT" && "right-[calc(100%+5px)] top-[calc(50%-75px)]", - position === "RIGHT" && "left-[calc(100%+5px)] top-[calc(50%-75px)]", - status === true - ? "visible -translate-y-1 opacity-100" - : "invisible translate-y-0 opacity-0", - props.className && props.className, - ); - - return ( -
show(true)} - onMouseLeave={() => show(false)} - > -
{props.text}
- {props.children} -
- ); -} From 07109a81d3fc4e73c4b4fbe5c7456e9ae51c4d95 Mon Sep 17 00:00:00 2001 From: "A.Sriram" <149712877+aSriram199@users.noreply.github.com> Date: Wed, 21 Aug 2024 10:15:36 +0530 Subject: [PATCH 11/89] Fix Facility Notice functionality (#8337) --- src/Components/Facility/FacilityCard.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Components/Facility/FacilityCard.tsx b/src/Components/Facility/FacilityCard.tsx index d6c2dce2b6c..858386b72e6 100644 --- a/src/Components/Facility/FacilityCard.tsx +++ b/src/Components/Facility/FacilityCard.tsx @@ -36,6 +36,7 @@ export const FacilityCard = (props: { facility: any; userType: any }) => { Notification.Success({ msg: "Facility Notified", }); + setNotifyMessage(""); setNotifyModalFor(undefined); } else { Notification.Error({ msg: "Something went wrong..." }); @@ -224,6 +225,7 @@ export const FacilityCard = (props: { facility: any; userType: any }) => { name="message" rows={5} className="pb-2 pt-4" + value={notifyMessage} onChange={(e) => setNotifyMessage(e.value)} placeholder="Type your message..." error={notifyError} From 42c684a24fbf19c263e16c67df4ec80012e69c4b Mon Sep 17 00:00:00 2001 From: Mohammed Nihal <57055998+nihal467@users.noreply.github.com> Date: Wed, 21 Aug 2024 14:50:19 +0530 Subject: [PATCH 12/89] Modified Cypress test to include bed number selection in consultation test (#8383) * added bed number selection to the consultation test * fix the lint error * revert vite * revert vite --- cypress/e2e/patient_spec/patient_consultation.cy.ts | 1 + cypress/pageobject/Patient/PatientConsultation.ts | 4 ++++ src/Components/Common/BedSelect.tsx | 1 + 3 files changed, 6 insertions(+) diff --git a/cypress/e2e/patient_spec/patient_consultation.cy.ts b/cypress/e2e/patient_spec/patient_consultation.cy.ts index eef98a5e3ce..9c9256e11ef 100644 --- a/cypress/e2e/patient_spec/patient_consultation.cy.ts +++ b/cypress/e2e/patient_spec/patient_consultation.cy.ts @@ -95,6 +95,7 @@ describe("Patient Consultation in multiple combination", () => { cy.submitButton("Create Consultation"); // the above submit should fail as IP number is missing patientConsultationPage.typePatientNumber(patientIpNumber); + patientConsultationPage.selectBed("Dummy Bed 1"); cy.submitButton("Create Consultation"); cy.verifyNotification("Consultation created successfully"); // Below code for the prescription module only present while creating a new consultation diff --git a/cypress/pageobject/Patient/PatientConsultation.ts b/cypress/pageobject/Patient/PatientConsultation.ts index 31b1fd6cb68..dc5d9e2b2bb 100644 --- a/cypress/pageobject/Patient/PatientConsultation.ts +++ b/cypress/pageobject/Patient/PatientConsultation.ts @@ -28,6 +28,10 @@ export class PatientConsultationPage { cy.searchAndSelectOption("#referred_to", referance); } + selectBed(bedNo: string) { + cy.searchAndSelectOption("#bed", bedNo); + } + selectPatientWard(ward: string) { cy.searchAndSelectOption("#transferred_from_location", ward); } diff --git a/src/Components/Common/BedSelect.tsx b/src/Components/Common/BedSelect.tsx index 5c31055a3a4..7ed741061ee 100644 --- a/src/Components/Common/BedSelect.tsx +++ b/src/Components/Common/BedSelect.tsx @@ -65,6 +65,7 @@ export const BedSelect = (props: BedSelectProps) => { return ( Date: Wed, 21 Aug 2024 13:15:11 +0100 Subject: [PATCH 13/89] Fixed word splitting issue (#8384) * fixed issue 8304 * fixes 8304 * Update src/Components/Facility/ConsultationForm.tsx Co-authored-by: Rithvik Nishad * fixes#8365 * fixed word spacing issue --------- Co-authored-by: Rithvik Nishad Co-authored-by: Rithvik Nishad --- .../Facility/ConsultationDetails/Events/GenericEvent.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Components/Facility/ConsultationDetails/Events/GenericEvent.tsx b/src/Components/Facility/ConsultationDetails/Events/GenericEvent.tsx index 04ab5657149..2c4349177a5 100644 --- a/src/Components/Facility/ConsultationDetails/Events/GenericEvent.tsx +++ b/src/Components/Facility/ConsultationDetails/Events/GenericEvent.tsx @@ -93,7 +93,7 @@ export default function GenericEvent(props: IProps) { {t(key).replaceAll(/_/g, " ")} - + {formatValue(value, key)}
From a65681ee18d403ad5776f49a800d59b7285f4d96 Mon Sep 17 00:00:00 2001 From: JOSHIK ROSHAN <96165631+JOSHIK27@users.noreply.github.com> Date: Wed, 21 Aug 2024 13:33:29 +0100 Subject: [PATCH 14/89] Made General Instructions field in Consultation Form non mandatory (#8368) --- src/Components/Facility/ConsultationForm.tsx | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/Components/Facility/ConsultationForm.tsx b/src/Components/Facility/ConsultationForm.tsx index 355d4ce745e..8b946cf3cc6 100644 --- a/src/Components/Facility/ConsultationForm.tsx +++ b/src/Components/Facility/ConsultationForm.tsx @@ -539,15 +539,6 @@ export const ConsultationForm = ({ facilityId, patientId, id }: Props) => { invalidForm = true; } return; - case "consultation_notes": - if (!state.form[field]) { - errors[field] = t("field_required"); - invalidForm = true; - } else if (!state.form[field].replace(/\s/g, "").length) { - errors[field] = "Consultation notes can not be empty"; - invalidForm = true; - } - return; case "is_telemedicine": if ( state.form.admitted_to === "Home Isolation" && @@ -1405,7 +1396,6 @@ export const ConsultationForm = ({ facilityId, patientId, id }: Props) => { > From e59203d4cee293bba7ba27ccea157810fd35e4c6 Mon Sep 17 00:00:00 2001 From: Rithvik Nishad Date: Thu, 22 Aug 2024 15:26:40 +0530 Subject: [PATCH 15/89] Avoid unnecessary `toReversed` fn. invocation (#8392) --- src/Common/constants.tsx | 24 +++++++++---------- .../Sections/NeurologicalMonitoring.tsx | 6 ++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/Common/constants.tsx b/src/Common/constants.tsx index 6d37d91013a..9e74e520bd3 100644 --- a/src/Common/constants.tsx +++ b/src/Common/constants.tsx @@ -716,27 +716,27 @@ export const NURSING_CARE_PROCEDURES = [ ] as const; export const EYE_OPEN_SCALE = [ - { value: 4, text: "Spontaneous" }, - { value: 3, text: "To Speech" }, - { value: 2, text: "To Pain" }, { value: 1, text: "No Response" }, + { value: 2, text: "To Pain" }, + { value: 3, text: "To Speech" }, + { value: 4, text: "Spontaneous" }, ]; export const VERBAL_RESPONSE_SCALE = [ - { value: 5, text: "Oriented to Time, Place and Person" }, - { value: 4, text: "Confused/Irritable" }, - { value: 3, text: "Inappropriate words/Cry to Pain" }, - { value: 2, text: "Incomprehensible words/Moans to pain" }, { value: 1, text: "No Response" }, + { value: 2, text: "Incomprehensible words/Moans to pain" }, + { value: 3, text: "Inappropriate words/Cry to Pain" }, + { value: 4, text: "Confused/Irritable" }, + { value: 5, text: "Oriented to Time, Place and Person" }, ]; export const MOTOR_RESPONSE_SCALE = [ - { value: 6, text: "Obeying commands/Normal acrivity" }, - { value: 5, text: "Moves to localized pain" }, - { value: 4, text: "Flexion/Withdrawal from pain" }, - { value: 3, text: "Abnormal Flexion(decorticate)" }, - { value: 2, text: "Abnormal Extension(decerebrate)" }, { value: 1, text: "No Response" }, + { value: 2, text: "Abnormal Extension(decerebrate)" }, + { value: 3, text: "Abnormal Flexion(decorticate)" }, + { value: 4, text: "Flexion/Withdrawal from pain" }, + { value: 5, text: "Moves to localized pain" }, + { value: 6, text: "Obeying commands/Normal acrivity" }, ]; export const CONSULTATION_TABS = [ { text: "UPDATES", desc: "Overview" }, diff --git a/src/Components/LogUpdate/Sections/NeurologicalMonitoring.tsx b/src/Components/LogUpdate/Sections/NeurologicalMonitoring.tsx index edb759a2cf5..0d237aafd49 100644 --- a/src/Components/LogUpdate/Sections/NeurologicalMonitoring.tsx +++ b/src/Components/LogUpdate/Sections/NeurologicalMonitoring.tsx @@ -97,7 +97,7 @@ const NeurologicalMonitoring = ({ log, onChange }: LogUpdateSectionProps) => {
Eye Opening Response} - options={EYE_OPEN_SCALE.toReversed()} + options={EYE_OPEN_SCALE} optionDisplay={(c) => c.value + " - " + c.text} optionValue={(c) => `${c.value}`} name="eye_opening_response" @@ -109,7 +109,7 @@ const NeurologicalMonitoring = ({ log, onChange }: LogUpdateSectionProps) => { /> Verbal Response} - options={VERBAL_RESPONSE_SCALE.toReversed()} + options={VERBAL_RESPONSE_SCALE} optionDisplay={(c) => c.value + " - " + c.text} optionValue={(c) => `${c.value}`} name="verbal_response" @@ -123,7 +123,7 @@ const NeurologicalMonitoring = ({ log, onChange }: LogUpdateSectionProps) => { /> Motor Response} - options={MOTOR_RESPONSE_SCALE.toReversed()} + options={MOTOR_RESPONSE_SCALE} optionDisplay={(c) => c.value + " - " + c.text} optionValue={(c) => `${c.value}`} name="motor_response" From 48a03652adb3d7eef59238a3994876584a143763 Mon Sep 17 00:00:00 2001 From: Sagar Sharma Date: Thu, 22 Aug 2024 15:27:46 +0530 Subject: [PATCH 16/89] Corrected Spelling mistake of daily rounds fields: ventilator_fi02 to ventilator_fio2 in frontend types definitions and usages (#8268) Co-authored-by: rithviknishad --- src/Components/Facility/Consultations/ABGPlots.tsx | 4 ++-- .../Facility/Consultations/PrimaryParametersPlot.tsx | 4 ++-- .../Facility/Consultations/VentilatorPlot.tsx | 4 ++-- src/Components/Facility/models.tsx | 12 ++++++------ src/Components/LogUpdate/CriticalCarePreview.tsx | 2 +- .../Sections/RespiratorySupport/OxygenSupport.tsx | 6 +++--- .../Sections/RespiratorySupport/Ventilator.tsx | 2 +- src/Components/Patient/models.tsx | 2 +- 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/Components/Facility/Consultations/ABGPlots.tsx b/src/Components/Facility/Consultations/ABGPlots.tsx index 9b5e6fa38c6..7b1809730bf 100644 --- a/src/Components/Facility/Consultations/ABGPlots.tsx +++ b/src/Components/Facility/Consultations/ABGPlots.tsx @@ -26,7 +26,7 @@ export const ABGPlots = (props: any) => { "lactate", "sodium", "potassium", - "ventilator_fi02", + "ventilator_fio2", ], }, pathParams: { @@ -144,7 +144,7 @@ export const ABGPlots = (props: any) => { title="FIO2(Ventilator)(%)" name="fio2" xData={dates} - yData={yAxisData("ventilator_fi02")} + yData={yAxisData("ventilator_fio2")} low={21} high={60} /> diff --git a/src/Components/Facility/Consultations/PrimaryParametersPlot.tsx b/src/Components/Facility/Consultations/PrimaryParametersPlot.tsx index 913d65044c7..ca01ac1b113 100644 --- a/src/Components/Facility/Consultations/PrimaryParametersPlot.tsx +++ b/src/Components/Facility/Consultations/PrimaryParametersPlot.tsx @@ -52,7 +52,7 @@ export const PrimaryParametersPlot = ({ "insulin_intake_frequency", "insulin_intake_dose", "ventilator_spo2", - "ventilator_fi02", + "ventilator_fio2", "rhythm", "rhythm_detail", ], @@ -195,7 +195,7 @@ export const PrimaryParametersPlot = ({ title="Ventilator FIO2 (%)" name="fio2" xData={dates} - yData={yAxisData("ventilator_fi02")} + yData={yAxisData("ventilator_fio2")} low={21} high={60} /> diff --git a/src/Components/Facility/Consultations/VentilatorPlot.tsx b/src/Components/Facility/Consultations/VentilatorPlot.tsx index b19ed70e0b4..5502c4c5bb2 100644 --- a/src/Components/Facility/Consultations/VentilatorPlot.tsx +++ b/src/Components/Facility/Consultations/VentilatorPlot.tsx @@ -48,7 +48,7 @@ export const VentilatorPlot = (props: any) => { "ventilator_pressure_support", "ventilator_tidal_volume", "ventilator_peep", - "ventilator_fi02", + "ventilator_fio2", "ventilator_spo2", "etco2", "bilateral_air_entry", @@ -162,7 +162,7 @@ export const VentilatorPlot = (props: any) => { title="FiO2" name="FiO2" xData={dates} - yData={yAxisData("ventilator_fi02")} + yData={yAxisData("ventilator_fio2")} low={21} high={60} /> diff --git a/src/Components/Facility/models.tsx b/src/Components/Facility/models.tsx index c6dde2b508b..215557d953c 100644 --- a/src/Components/Facility/models.tsx +++ b/src/Components/Facility/models.tsx @@ -286,7 +286,7 @@ export type ABGPlotsFields = | "lactate" | "sodium" | "potassium" - | "ventilator_fi02"; + | "ventilator_fio2"; export type ABGPlotsRes = { ph: string; @@ -297,7 +297,7 @@ export type ABGPlotsRes = { lactate: string; sodium: string; potassium: string; - ventilator_fi02: number; + ventilator_fio2: number; }; export type DialysisPlotsFields = @@ -392,7 +392,7 @@ export type PrimaryParametersPlotFields = | "insulin_intake_frequency" | "insulin_intake_dose" | "ventilator_spo2" - | "ventilator_fi02" + | "ventilator_fio2" | "rhythm" | "rhythm_detail"; @@ -409,7 +409,7 @@ export type PrimaryParametersPlotRes = { insulin_intake_frequency: number; insulin_intake_dose: string; ventilator_spo2: number; - ventilator_fi02: number; + ventilator_fio2: number; rhythm: number; rhythm_detail: string; }; @@ -421,7 +421,7 @@ export type VentilatorPlotFields = | "ventilator_pressure_support" | "ventilator_tidal_volume" | "ventilator_peep" - | "ventilator_fi02" + | "ventilator_fio2" | "ventilator_spo2" | "etco2" | "bilateral_air_entry" @@ -435,7 +435,7 @@ export type VentilatorPlotRes = { ventilator_pressure_support: number; ventilator_tidal_volume: number; ventilator_peep: string; - ventilator_fi02: number; + ventilator_fio2: number; ventilator_spo2: number; etco2: number; bilateral_air_entry: boolean; diff --git a/src/Components/LogUpdate/CriticalCarePreview.tsx b/src/Components/LogUpdate/CriticalCarePreview.tsx index b0903b6e960..464a317f06c 100644 --- a/src/Components/LogUpdate/CriticalCarePreview.tsx +++ b/src/Components/LogUpdate/CriticalCarePreview.tsx @@ -407,7 +407,7 @@ export default function CriticalCarePreview(props: Props) { FiO2 } - value={data.ventilator_fi02} + value={data.ventilator_fio2} max={100} unit="%" valueDescriptions={rangeValueDescription({ high: 60 })} diff --git a/src/Components/LogUpdate/Sections/RespiratorySupport/OxygenSupport.tsx b/src/Components/LogUpdate/Sections/RespiratorySupport/OxygenSupport.tsx index e545ab13ea6..cefcf2ddb0e 100644 --- a/src/Components/LogUpdate/Sections/RespiratorySupport/OxygenSupport.tsx +++ b/src/Components/LogUpdate/Sections/RespiratorySupport/OxygenSupport.tsx @@ -50,9 +50,9 @@ const OxygenRespiratorySupport = ({ log, onChange }: LogUpdateSectionProps) => { } unit="%" - name="ventilator_fi02" - onChange={(c) => onChange({ ventilator_fi02: c.value })} - value={log.ventilator_fi02} + name="ventilator_fio2" + onChange={(c) => onChange({ ventilator_fio2: c.value })} + value={log.ventilator_fio2} min={21} max={100} valueDescriptions={rangeValueDescription({ high: 60 })} diff --git a/src/Components/LogUpdate/Sections/RespiratorySupport/Ventilator.tsx b/src/Components/LogUpdate/Sections/RespiratorySupport/Ventilator.tsx index 3b95f142d70..4af1dc0fea7 100644 --- a/src/Components/LogUpdate/Sections/RespiratorySupport/Ventilator.tsx +++ b/src/Components/LogUpdate/Sections/RespiratorySupport/Ventilator.tsx @@ -58,7 +58,7 @@ export const VentilatorFields = [ valueDescription: rangeValueDescription({}), }, { - key: "ventilator_fi02", + key: "ventilator_fio2", label: ( FiO2 diff --git a/src/Components/Patient/models.tsx b/src/Components/Patient/models.tsx index cd1353bd972..5387e457e9e 100644 --- a/src/Components/Patient/models.tsx +++ b/src/Components/Patient/models.tsx @@ -383,7 +383,7 @@ export interface DailyRoundsModel { ventilator_oxygen_modality?: (typeof OXYGEN_MODALITY_OPTIONS)[number]["value"]; ventilator_oxygen_modality_flow_rate?: number; ventilator_oxygen_modality_oxygen_rate?: number; - ventilator_fi02?: number; + ventilator_fio2?: number; ventilator_mode?: (typeof VENTILATOR_MODE_OPTIONS)[number]; ventilator_peep?: number; ventilator_pip?: number; From ca56ccca97dd9fb8144dd1af05bafbc7eb4fdcdd Mon Sep 17 00:00:00 2001 From: Gigin George Date: Thu, 22 Aug 2024 09:29:18 -0700 Subject: [PATCH 17/89] Fix Scroll Issue with Pressure Sores Popup (#8400) * Fix Scroll Issue with Pressure Sores Popup * Improve Computation to anchor next to the click * remove todo comment from pressure sore component --------- Co-authored-by: Rithvik Nishad --- src/CAREUI/display/PopupModal.tsx | 60 +++++++++++++------ .../Sections/PressureSore/PressureSore.tsx | 11 ++-- .../LogUpdate/components/PainChart.tsx | 10 +++- 3 files changed, 56 insertions(+), 25 deletions(-) diff --git a/src/CAREUI/display/PopupModal.tsx b/src/CAREUI/display/PopupModal.tsx index 37b5719d9bd..3b2ce314da0 100644 --- a/src/CAREUI/display/PopupModal.tsx +++ b/src/CAREUI/display/PopupModal.tsx @@ -9,10 +9,17 @@ type Props = { show: boolean; onHide: () => void; children: ReactNode; + anchorRef: React.RefObject; className?: string; onSubmit?: () => void; }; +type Position = + | { left: number; top: number } + | { right: number; bottom: number } + | { left: number; bottom: number } + | { right: number; top: number }; + export default function PopupModal(props: Props) { const { t } = useTranslation(); const isMobile = useBreakpoints({ default: true, lg: false }); @@ -43,7 +50,7 @@ export default function PopupModal(props: Props) { const DesktopView = (props: Props) => { const { t } = useTranslation(); - const [position, setPosition] = useState({ x: 0, y: 0 }); + const [position, setPosition] = useState({ left: 0, top: 0 }); const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 }); const modal = useRef(null); const [children, setChildren] = useState(props.children); @@ -68,25 +75,38 @@ const DesktopView = (props: Props) => { const currentMousePosition = mousePosition; const modalHeight = modal.current?.clientHeight || 0; const modalWidth = modal.current?.clientWidth || 0; - const xRelative = currentMousePosition.x; - const yRelative = currentMousePosition.y; - const containerHeight = window.innerHeight; - const containerWidth = window.innerWidth; - const top = - yRelative + modalHeight > containerHeight - ? yRelative - modalHeight - : yRelative; - const left = - xRelative + modalWidth > containerWidth - ? xRelative - modalWidth - : xRelative; - setPosition({ x: left, y: top }); + const clickX = currentMousePosition.x; + const clickY = currentMousePosition.y; + const windowHeight = window.innerHeight; + const windowWidth = window.innerWidth; + + const anchorPosition = props.anchorRef.current?.getBoundingClientRect(); + const anchorX = anchorPosition?.x || 0; + const anchorY = anchorPosition?.y || 0; + const verticalCenter = windowHeight / 2; + const horizontalCenter = windowWidth / 2; + const mountLeft = clickX - anchorX; + const mountTop = clickY - anchorY; + + let position; + if (clickX > horizontalCenter) { + position = { left: mountLeft - modalWidth }; + } else { + position = { left: mountLeft }; + } + if (clickY > verticalCenter) { + position = { ...position, top: mountTop - modalHeight }; + } else { + position = { ...position, top: mountTop }; + } + setPosition(position); } document.addEventListener("mousedown", handleOutsideClick); return () => { document.removeEventListener("mousedown", handleOutsideClick); }; + // eslint-disable-next-line react-hooks/exhaustive-deps }, [props.show]); useEffect(() => { @@ -99,13 +119,17 @@ const DesktopView = (props: Props) => { }; }, []); + const positionAttributes = Object.entries(position).reduce( + (acc, [key, value]) => { + return { ...acc, [key]: `${value}px` }; + }, + {}, + ); + return (
{ const value = log.pressure_sore ?? []; + const containerRef = useRef(null); const [current, setCurrent] = useState(); const regionPushScore = (region: IPressureSore["region"]) => { @@ -33,11 +34,11 @@ const PressureSore = ({ log, onChange, readonly }: LogUpdateSectionProps) => { } }; - // TODO: wrap with a div with relative class so that the editor sticks on scroll. return ( - <> +
setCurrent(undefined)} onSave={ @@ -74,7 +75,7 @@ const PressureSore = ({ log, onChange, readonly }: LogUpdateSectionProps) => { } regionText={(r) => regionPushScore(r)?.toString() ?? ""} /> - +
); }; @@ -88,6 +89,7 @@ export default PressureSore; type RegionEditorProps = { show: boolean; value: IPressureSore; + anchorRef: React.RefObject; onCancel: () => void; onSave?: (value: IPressureSore) => void; }; @@ -106,6 +108,7 @@ const RegionEditor = (props: RegionEditorProps) => { (); + const containerRef = useRef(null); const valueDescription = (region: IPainScale["region"]) => { const scale = pain.find((obj) => obj.region === region)?.scale; @@ -24,10 +25,11 @@ export default function PainChart({ pain, onChange }: Props) { }; return ( - <> +
setCurrent(undefined)} onSave={ onChange @@ -60,13 +62,14 @@ export default function PainChart({ pain, onChange }: Props) { pain.find((p) => p.region === region)?.scale.toString() ?? "" } /> - +
); } type RegionEditorProps = { show: boolean; value: IPainScale; + anchorRef: React.RefObject; onCancel: () => void; onSave?: (value: IPainScale) => void; }; @@ -85,6 +88,7 @@ const RegionEditor = (props: RegionEditorProps) => { Date: Thu, 22 Aug 2024 22:16:36 +0530 Subject: [PATCH 18/89] Migrate to Headless UI v2 (#8260) --- .../e2e/external_results_spec/filter.cy.ts | 7 +- .../e2e/facility_spec/facility_creation.cy.ts | 1 + .../e2e/patient_spec/patient_logupdate.cy.ts | 6 +- .../patient_spec/patient_prescription.cy.ts | 2 +- .../pageobject/Patient/PatientLogupdate.ts | 4 - cypress/pageobject/Users/ManageUserPage.ts | 2 +- cypress/pageobject/Users/UserCreation.ts | 3 + cypress/support/commands.ts | 4 +- package-lock.json | 194 ++++++++++++++++-- package.json | 2 +- src/CAREUI/interactive/SlideOver.tsx | 26 +-- src/Components/CameraFeed/AssetBedSelect.tsx | 47 ++--- .../LiveMonitoringFilters.tsx | 17 +- src/Components/CameraFeed/FeedAlert.tsx | 3 +- src/Components/Common/DateInputV2.tsx | 16 +- src/Components/Common/Dialog.tsx | 29 +-- src/Components/Common/GLocationPicker.tsx | 6 +- src/Components/Common/UpdatableApp.tsx | 3 +- src/Components/Common/Uptime.tsx | 6 +- .../Common/components/HelperComponents.tsx | 3 +- src/Components/Common/components/Menu.tsx | 24 +-- .../Facility/CentralNursingStation.tsx | 17 +- .../Consultations/BedActivityTimeline.tsx | 17 +- .../Consultations/DailyRoundsFilter.tsx | 25 ++- src/Components/Facility/FacilityCreate.tsx | 18 +- src/Components/Facility/FacilityHome.tsx | 18 +- src/Components/Form/AutoCompleteAsync.tsx | 32 ++- .../Form/FormFields/Autocomplete.tsx | 34 +-- .../FormFields/AutocompleteMultiselect.tsx | 41 ++-- .../Form/FormFields/PhoneNumberFormField.tsx | 10 +- src/Components/Form/MultiSelectMenuV2.tsx | 188 ++++++++--------- src/Components/Form/SelectMenuV2.tsx | 164 ++++++++------- .../Medicine/DiscontinuePrescription.tsx | 2 +- src/Components/Patient/PatientInfoCard.tsx | 30 +-- src/Components/Scribe/Scribe.tsx | 10 +- .../VitalsMonitorAssetPopover.tsx | 17 +- src/Locale/en/Medicine.json | 1 + 37 files changed, 620 insertions(+), 409 deletions(-) diff --git a/cypress/e2e/external_results_spec/filter.cy.ts b/cypress/e2e/external_results_spec/filter.cy.ts index 3dd18704a46..5a0a8eccab9 100644 --- a/cypress/e2e/external_results_spec/filter.cy.ts +++ b/cypress/e2e/external_results_spec/filter.cy.ts @@ -14,13 +14,10 @@ describe("External Results Filters", () => { }); it("Advance Filter", () => { + cy.clickAndSelectOption("#local_bodies", "Aluva"); cy.get("#local_bodies").click(); - cy.get("[role='option']").should("be.visible"); - cy.contains("[role='option']", "Aluva").click(); - cy.get("#local_bodies").click(); + cy.clickAndSelectOption("#wards", "4"); cy.get("#wards").click(); - cy.get("[role='option']").should("be.visible"); - cy.contains("[role='option']", "4").click(); cy.contains("Apply").click(); }); diff --git a/cypress/e2e/facility_spec/facility_creation.cy.ts b/cypress/e2e/facility_spec/facility_creation.cy.ts index 6401ba7bbbe..a092d23390e 100644 --- a/cypress/e2e/facility_spec/facility_creation.cy.ts +++ b/cypress/e2e/facility_spec/facility_creation.cy.ts @@ -132,6 +132,7 @@ describe("Facility Creation", () => { facilityFeature.forEach((featureText) => { cy.get("[role='option']").contains(featureText).click(); }); + facilityPage.clickfacilityfeatureoption(); facilityPage.fillPincode("682001"); facilityPage.selectStateOnPincode("Kerala"); facilityPage.selectDistrictOnPincode("Ernakulam"); diff --git a/cypress/e2e/patient_spec/patient_logupdate.cy.ts b/cypress/e2e/patient_spec/patient_logupdate.cy.ts index 162ebd7e620..70aa0474650 100644 --- a/cypress/e2e/patient_spec/patient_logupdate.cy.ts +++ b/cypress/e2e/patient_spec/patient_logupdate.cy.ts @@ -47,7 +47,8 @@ describe("Patient Log Update in Normal, Critical and TeleIcu", () => { patientLogupdate.typePhysicalExamination(physicalExamination); patientLogupdate.selectRoundType("Telemedicine"); patientLogupdate.typeOtherDetails(otherExamination); - patientLogupdate.typeAdditionalSymptoms(additionalSymptoms); + patientLogupdate.selectSymptomsDate("01012024"); + patientLogupdate.typeAndMultiSelectSymptoms("fe", ["Fever"]); patientLogupdate.selectPatientCategory(patientCategory); patientLogupdate.typeSystolic(patientSystolic); patientLogupdate.typeDiastolic(patientDiastolic); @@ -72,7 +73,8 @@ describe("Patient Log Update in Normal, Critical and TeleIcu", () => { patientLogupdate.clickLogupdate(); patientLogupdate.typePhysicalExamination(physicalExamination); patientLogupdate.typeOtherDetails(otherExamination); - patientLogupdate.typeAdditionalSymptoms(additionalSymptoms); + patientLogupdate.selectSymptomsDate("01012024"); + patientLogupdate.typeAndMultiSelectSymptoms("fe", ["Fever"]); patientLogupdate.selectPatientCategory(patientCategory); patientLogupdate.typeSystolic(patientSystolic); patientLogupdate.typeDiastolic(patientDiastolic); diff --git a/cypress/e2e/patient_spec/patient_prescription.cy.ts b/cypress/e2e/patient_spec/patient_prescription.cy.ts index c7a7cd9aba4..4a27ce14cb2 100644 --- a/cypress/e2e/patient_spec/patient_prescription.cy.ts +++ b/cypress/e2e/patient_spec/patient_prescription.cy.ts @@ -54,7 +54,7 @@ describe("Patient Medicine Administration", () => { cy.verifyAndClickElement("#0", medicineNameOne); cy.submitButton("Discontinue"); patientPrescription.enterDiscontinueReason("Medicine is been discontinued"); - cy.submitButton("Discontinue"); + cy.submitButton("Confirm Discontinue"); cy.verifyNotification("Prescription discontinued"); cy.closeNotification(); // verify the discontinue medicine view diff --git a/cypress/pageobject/Patient/PatientLogupdate.ts b/cypress/pageobject/Patient/PatientLogupdate.ts index ac1bd6a4991..ca238fe115c 100644 --- a/cypress/pageobject/Patient/PatientLogupdate.ts +++ b/cypress/pageobject/Patient/PatientLogupdate.ts @@ -28,10 +28,6 @@ class PatientLogupdate { cy.get("#other_details").click().type(details); } - typeAdditionalSymptoms(symptoms: string) { - cy.searchAndSelectOption("#additional_symptoms", symptoms); - } - typeAndMultiSelectSymptoms(input, symptoms) { cy.typeAndMultiSelectOption("#additional_symptoms", input, symptoms); } diff --git a/cypress/pageobject/Users/ManageUserPage.ts b/cypress/pageobject/Users/ManageUserPage.ts index c4214f29895..c57ecbf172f 100644 --- a/cypress/pageobject/Users/ManageUserPage.ts +++ b/cypress/pageobject/Users/ManageUserPage.ts @@ -41,7 +41,7 @@ export class ManageUserPage { } clickCloseSlideOver() { - cy.get("#close-slide-over").click(); + cy.get("#close-slide-over").click({ force: true }); } clickHomeFacilityIcon() { diff --git a/cypress/pageobject/Users/UserCreation.ts b/cypress/pageobject/Users/UserCreation.ts index 429beff2c22..7503ea3fb07 100644 --- a/cypress/pageobject/Users/UserCreation.ts +++ b/cypress/pageobject/Users/UserCreation.ts @@ -44,6 +44,9 @@ export class UserCreationPage { selectFacility(name: string) { this.typeIntoInputByName("facilities", name); this.selectOptionContainingText(name); + cy.get("input[name='facilities'] + button") + .find("#dropdown-toggle") + .click(); } selectHomeFacility(name: string) { diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index 45a3cde3245..8c1b60f3d88 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -138,7 +138,7 @@ Cypress.Commands.add( optionArray.forEach((options) => { cy.get("[role='option']").contains(options).click(); }); - cy.get(selector).click(); + cy.get(selector).find("#dropdown-toggle").click(); }); }, ); @@ -153,7 +153,7 @@ Cypress.Commands.add( optionArray.forEach((options) => { cy.get("[role='option']").contains(options).click(); }); - cy.get(selector).click(); + cy.get(selector).find("#dropdown-toggle").click(); }); }, ); diff --git a/package-lock.json b/package-lock.json index ba448d666e4..6b5d147af20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@fontsource/inter": "^5.0.18", "@googlemaps/react-wrapper": "^1.1.35", "@googlemaps/typescript-guards": "^2.0.3", - "@headlessui/react": "^1.7.15", + "@headlessui/react": "^2.1.2", "@pnotify/core": "^5.2.0", "@pnotify/mobile": "^5.2.0", "@sentry/browser": "^8.12.0", @@ -2798,6 +2798,59 @@ "node": ">=14" } }, + "node_modules/@floating-ui/core": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.6.tgz", + "integrity": "sha512-Vkvsw6EcpMHjvZZdMkSY+djMGFbt7CRssW99Ne8tar2WLnZ/l3dbxeTShbLQj+/s35h+Qb4cmnob+EzwtjrXGQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.6" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.9.tgz", + "integrity": "sha512-zB1PcI350t4tkm3rvUhSRKa9sT7vH5CrAbQxW+VaPYJXKAO0gsg4CTueL+6Ajp7XzAQC8CW4Jj1Wgqc0sB6oUQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.6" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.26.21", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.21.tgz", + "integrity": "sha512-7P5ncDIiYd6RrwpCDbKyFzvabM014QlzlumtDbK3Bck0UueC+Rp8BLS34qcGBcN1pZCTodl4QNnCVmKv4tSxfQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.1.1", + "@floating-ui/utils": "^0.2.6", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.6.tgz", + "integrity": "sha512-0KI3zGxIUs1KDR/pjQPdJH4Z8nGBm0yJ5WRoRfdw1Kzeh45jkIfA0rmD0kBF6fKHH+xaH7g8y4jIXyAV5MGK3g==", + "license": "MIT" + }, "node_modules/@fontsource/inter": { "version": "5.0.18", "resolved": "https://registry.npmjs.org/@fontsource/inter/-/inter-5.0.18.tgz", @@ -2828,19 +2881,22 @@ "integrity": "sha512-3iHuO8H0jPehftsMK0kgyJzPYU/g/oiTRw+wu/yltqSZ7wJPt3vfsJHkPiuRpQjbnnWygX+T3mkRGyK/eyZ/lw==" }, "node_modules/@headlessui/react": { - "version": "1.7.18", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.18.tgz", - "integrity": "sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.1.2.tgz", + "integrity": "sha512-Kb3hgk9gRNRcTZktBrKdHhF3xFhYkca1Rk6e1/im2ENf83dgN54orMW0uSKTXFnUpZOUFZ+wcY05LlipwgZIFQ==", + "license": "MIT", "dependencies": { - "@tanstack/react-virtual": "^3.0.0-beta.60", - "client-only": "^0.0.1" + "@floating-ui/react": "^0.26.16", + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@tanstack/react-virtual": "^3.8.1" }, "engines": { "node": ">=10" }, "peerDependencies": { - "react": "^16 || ^17 || ^18", - "react-dom": "^16 || ^17 || ^18" + "react": "^18", + "react-dom": "^18" } }, "node_modules/@humanwhocodes/config-array": { @@ -3984,6 +4040,68 @@ } } }, + "node_modules/@react-aria/focus": { + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.18.1.tgz", + "integrity": "sha512-N0Cy61WCIv+57mbqC7hiZAsB+3rF5n4JKabxUmg/2RTJL6lq7hJ5N4gx75ymKxkN8GnVDwt4pKZah48Wopa5jw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/interactions": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.1.tgz", + "integrity": "sha512-5TLzQaDAQQ5C70yG8GInbO4wIylKY67RfTIIwQPGR/4n5OIjbUD8BOj3NuSsuZ/frUPaBXo1VEBBmSO23fxkjw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.5.tgz", + "integrity": "sha512-xEwGKoysu+oXulibNUSkXf8itW0npHHTa6c4AyYeZIJyRoegeteYuFpZUBPtIDE8RfHdNsSmE1ssOkxRnwbkuQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/utils": { + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.25.1.tgz", + "integrity": "sha512-5Uj864e7T5+yj78ZfLnfHqmypLiqW2mN+nsdslog2z5ssunTqjolVeM15ootXskjISlZ7MojLpq97kIC4nlnAw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.5", + "@react-stately/utils": "^3.10.2", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/@react-dnd/asap": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-5.0.2.tgz", @@ -3999,6 +4117,27 @@ "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-4.0.2.tgz", "integrity": "sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==" }, + "node_modules/@react-stately/utils": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.2.tgz", + "integrity": "sha512-fh6OTQtbeQC0ywp6LJuuKs6tKIgFvt/DlIZEcIpGho6/oZG229UnIk6TUekwxnDbumuYyan6D9EgUtEMmT8UIg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/shared": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz", + "integrity": "sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -6273,6 +6412,15 @@ "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", "dev": true }, + "node_modules/@swc/helpers": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.12.tgz", + "integrity": "sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@swc/types": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.6.tgz", @@ -6319,11 +6467,12 @@ } }, "node_modules/@tanstack/react-virtual": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.2.0.tgz", - "integrity": "sha512-OEdMByf2hEfDa6XDbGlZN8qO6bTjlNKqjM3im9JG+u3mCL8jALy0T/67oDI001raUUPh1Bdmfn4ZvPOV5knpcg==", + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.8.4.tgz", + "integrity": "sha512-Dq0VQr3QlTS2qL35g360QaJWBt7tCn/0xw4uZ0dHXPLO1Ak4Z4nVX4vuj1Npg1b/jqNMDToRtR5OIxM2NXRBWg==", + "license": "MIT", "dependencies": { - "@tanstack/virtual-core": "3.2.0" + "@tanstack/virtual-core": "3.8.4" }, "funding": { "type": "github", @@ -6335,9 +6484,10 @@ } }, "node_modules/@tanstack/virtual-core": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.2.0.tgz", - "integrity": "sha512-P5XgYoAw/vfW65byBbJQCw+cagdXDT/qH6wmABiLt4v4YBT2q2vqCOhihe+D1Nt325F/S/0Tkv6C5z0Lv+VBQQ==", + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.8.4.tgz", + "integrity": "sha512-iO5Ujgw3O1yIxWDe9FgUPNkGjyT657b1WNX52u+Wv1DyBFEpdCdGkuVaky0M3hHFqNWjAmHWTn4wgj9rTr7ZQg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" @@ -9081,11 +9231,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -21880,6 +22025,12 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "license": "MIT" + }, "node_modules/tailwindcss": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", @@ -22411,8 +22562,7 @@ "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/tsutils": { "version": "3.21.0", diff --git a/package.json b/package.json index ccb91dfcbae..2890121d0e8 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "@fontsource/inter": "^5.0.18", "@googlemaps/react-wrapper": "^1.1.35", "@googlemaps/typescript-guards": "^2.0.3", - "@headlessui/react": "^1.7.15", + "@headlessui/react": "^2.1.2", "@pnotify/core": "^5.2.0", "@pnotify/mobile": "^5.2.0", "@sentry/browser": "^8.12.0", diff --git a/src/CAREUI/interactive/SlideOver.tsx b/src/CAREUI/interactive/SlideOver.tsx index 68aa5dc088f..bd38b32137a 100644 --- a/src/CAREUI/interactive/SlideOver.tsx +++ b/src/CAREUI/interactive/SlideOver.tsx @@ -1,5 +1,9 @@ -import { Dialog, Transition } from "@headlessui/react"; -import { Fragment } from "react"; +import { + Dialog, + DialogPanel, + Transition, + TransitionChild, +} from "@headlessui/react"; import { classNames } from "../../Utils/utils"; import CareIcon from "../icons/CareIcon"; @@ -58,15 +62,14 @@ export default function SlideOver({ }; return ( - + {}} > - - - + - {children}
)} - - + + - + ); } diff --git a/src/Components/CameraFeed/AssetBedSelect.tsx b/src/Components/CameraFeed/AssetBedSelect.tsx index d9f37d5ed2a..b97675c7b31 100644 --- a/src/Components/CameraFeed/AssetBedSelect.tsx +++ b/src/Components/CameraFeed/AssetBedSelect.tsx @@ -1,6 +1,10 @@ -import { Fragment } from "react"; import { AssetBedModel } from "../Assets/AssetTypes"; -import { Listbox, Transition } from "@headlessui/react"; +import { + Listbox, + ListboxButton, + ListboxOption, + ListboxOptions, +} from "@headlessui/react"; import CareIcon from "../../CAREUI/icons/CareIcon"; import { classNames } from "../../Utils/utils"; import { dropdownOptionClassNames } from "../Form/MultiSelectMenuV2"; @@ -78,7 +82,7 @@ export const CameraPresetDropdown = ( disabled={options.length === 0 || props.disabled} >
- - - + - - {options?.map((obj) => ( - - classNames(dropdownOptionClassNames(args), "px-2 py-1.5") - } - value={obj} - > - {label(obj)} - - ))} - - + {options?.map((obj) => ( + + classNames(dropdownOptionClassNames(args), "px-2 py-1.5") + } + value={obj} + > + {label(obj)} + + ))} +
); diff --git a/src/Components/CameraFeed/CentralLiveMonitoring/LiveMonitoringFilters.tsx b/src/Components/CameraFeed/CentralLiveMonitoring/LiveMonitoringFilters.tsx index 83b3052ddd7..d80b8716d6e 100644 --- a/src/Components/CameraFeed/CentralLiveMonitoring/LiveMonitoringFilters.tsx +++ b/src/Components/CameraFeed/CentralLiveMonitoring/LiveMonitoringFilters.tsx @@ -1,10 +1,14 @@ -import { Popover, Transition } from "@headlessui/react"; +import { + Popover, + PopoverButton, + PopoverPanel, + Transition, +} from "@headlessui/react"; import ButtonV2 from "../../Common/components/ButtonV2"; import { FieldLabel } from "../../Form/FormFields/FormField"; import { LocationSelect } from "../../Common/LocationSelect"; import Pagination from "../../Common/Pagination"; import useFilters from "../../../Common/hooks/useFilters"; -import { Fragment } from "react"; import CareIcon from "../../../CAREUI/icons/CareIcon"; import useSlug from "../../../Common/hooks/useSlug"; import { useTranslation } from "react-i18next"; @@ -26,14 +30,13 @@ const LiveMonitoringFilters = (props: Props) => { return (
- + {t("settings_and_filters")} - + { leaveFrom="opacity-100 translate-y-0" leaveTo="opacity-0 translate-y-1" > - +
@@ -93,7 +96,7 @@ const LiveMonitoringFilters = (props: Props) => {
- + diff --git a/src/Components/CameraFeed/FeedAlert.tsx b/src/Components/CameraFeed/FeedAlert.tsx index 138af509c8c..b907ce72ad2 100644 --- a/src/Components/CameraFeed/FeedAlert.tsx +++ b/src/Components/CameraFeed/FeedAlert.tsx @@ -1,5 +1,5 @@ import { Transition } from "@headlessui/react"; -import { Fragment, useEffect, useState } from "react"; +import { useEffect, useState } from "react"; import CareIcon, { IconName } from "../../CAREUI/icons/CareIcon"; import { classNames } from "../../Utils/utils"; import { StreamStatus } from "./usePlayer"; @@ -45,7 +45,6 @@ export default function FeedAlert({ state }: Props) { return ( = ({ max, outOfLimitsErrorMessage, onChange, - position, + position = "CENTER", disabled, placeholder, isOpen, @@ -248,7 +248,7 @@ const DateInputV2: React.FC = ({ {({ open, close }) => (
- + = ({ className="text-lg text-secondary-600" />
- + {(open || isOpen) && ( - = ({ )}
- + )}
)} @@ -484,8 +484,4 @@ const DateInputV2: React.FC = ({ ); }; -DateInputV2.defaultProps = { - position: "CENTER", -}; - export default DateInputV2; diff --git a/src/Components/Common/Dialog.tsx b/src/Components/Common/Dialog.tsx index 68f6d0900b9..07722daf793 100644 --- a/src/Components/Common/Dialog.tsx +++ b/src/Components/Common/Dialog.tsx @@ -1,6 +1,11 @@ -import { Dialog, Transition } from "@headlessui/react"; +import { + Dialog, + DialogPanel, + DialogTitle, + Transition, + TransitionChild, +} from "@headlessui/react"; import { classNames } from "../../Utils/utils"; -import { Fragment } from "react"; type DialogProps = { title: React.ReactNode; @@ -25,10 +30,9 @@ const DialogModal = (props: DialogProps) => { } = props; return (
- + - { leaveTo="opacity-0" >
- +
- { leaveFrom="opacity-100 scale-100" leaveTo="opacity-0 scale-95" > - - @@ -68,10 +71,10 @@ const DialogModal = (props: DialogProps) => {

{props.titleAction} - + {children} - - + +
diff --git a/src/Components/Common/GLocationPicker.tsx b/src/Components/Common/GLocationPicker.tsx index bfe95735127..5119d219e73 100644 --- a/src/Components/Common/GLocationPicker.tsx +++ b/src/Components/Common/GLocationPicker.tsx @@ -5,7 +5,7 @@ import { isLatLngLiteral } from "@googlemaps/typescript-guards"; import Spinner from "./Spinner"; import CareIcon from "../../CAREUI/icons/CareIcon"; import useConfig from "../../Common/hooks/useConfig"; -import { Popover } from "@headlessui/react"; +import { PopoverButton } from "@headlessui/react"; interface GLocationPickerProps { lat: number; @@ -213,7 +213,7 @@ const Map: React.FC = ({ placeholder="Start typing to search" /> {handleOnClose && ( - +
= ({ className="text-2xl text-secondary-800" />
-
+ )} {handleOnSelectCurrentLocation && (
{ return ( - numDays - 10 @@ -160,7 +160,7 @@ function UptimeInfoPopover({ static > - + ); } diff --git a/src/Components/Common/components/HelperComponents.tsx b/src/Components/Common/components/HelperComponents.tsx index 06a9e2d84e2..5100476284e 100644 --- a/src/Components/Common/components/HelperComponents.tsx +++ b/src/Components/Common/components/HelperComponents.tsx @@ -1,5 +1,5 @@ import { Transition, TransitionEvents } from "@headlessui/react"; -import { Fragment, ReactNode } from "react"; +import { ReactNode } from "react"; type DropdownMenuTransitionProps = { show?: boolean | undefined; @@ -13,7 +13,6 @@ export const DropdownTransition = ({ }: DropdownMenuTransitionProps) => ( - @@ -49,14 +48,13 @@ export default function DropdownMenu({ icon="l-angle-down" className={size === "small" ? "text-base" : "text-lg"} /> - - - - <>{props.children} - - + + + + <>{props.children} +
); @@ -85,7 +83,7 @@ export function DropdownItem({ const isAuthorized = useIsAuthorized(authorizeFor); return ( - +
{children}
-
+ ); } diff --git a/src/Components/Facility/CentralNursingStation.tsx b/src/Components/Facility/CentralNursingStation.tsx index 95c15fa295c..178bd2bc25c 100644 --- a/src/Components/Facility/CentralNursingStation.tsx +++ b/src/Components/Facility/CentralNursingStation.tsx @@ -1,5 +1,4 @@ import useFullscreen from "../../Common/hooks/useFullscreen"; -import { Fragment } from "react"; import HL7PatientVitalsMonitor from "../VitalsMonitor/HL7PatientVitalsMonitor"; import useFilters from "../../Common/hooks/useFilters"; import Loading from "../Common/Loading"; @@ -8,7 +7,12 @@ import ButtonV2 from "../Common/components/ButtonV2"; import CareIcon from "../../CAREUI/icons/CareIcon"; import { LocationSelect } from "../Common/LocationSelect"; import Pagination from "../Common/Pagination"; -import { Popover, Transition } from "@headlessui/react"; +import { + Popover, + PopoverButton, + PopoverPanel, + Transition, +} from "@headlessui/react"; import { FieldLabel } from "../Form/FormFields/FormField"; import CheckBoxFormField from "../Form/FormFields/CheckBoxFormField"; import { useTranslation } from "react-i18next"; @@ -79,7 +83,7 @@ export default function CentralNursingStation({ facilityId }: Props) { options={
- + {t("settings_and_filters")} - + - +
@@ -184,7 +187,7 @@ export default function CentralNursingStation({ facilityId }: Props) {
- + diff --git a/src/Components/Facility/Consultations/BedActivityTimeline.tsx b/src/Components/Facility/Consultations/BedActivityTimeline.tsx index c660296918a..3b19b12329a 100644 --- a/src/Components/Facility/Consultations/BedActivityTimeline.tsx +++ b/src/Components/Facility/Consultations/BedActivityTimeline.tsx @@ -8,8 +8,12 @@ import CareIcon from "../../../CAREUI/icons/CareIcon"; import { classNames, formatDateTime, relativeTime } from "../../../Utils/utils"; import { AssetData } from "../../Assets/AssetTypes"; import { CurrentBed } from "../models"; -import { Popover, Transition } from "@headlessui/react"; -import { Fragment } from "react"; +import { + Popover, + PopoverButton, + PopoverPanel, + Transition, +} from "@headlessui/react"; interface AssetDiff { newlyLinkedAssets: AssetData[]; @@ -234,14 +238,13 @@ const BedActivityIButtonPopover = ({ }) => { return ( - + - + - +

updated {relativeTime(bed?.start_date)}

-
+
); diff --git a/src/Components/Facility/Consultations/DailyRoundsFilter.tsx b/src/Components/Facility/Consultations/DailyRoundsFilter.tsx index be643845d8b..ee8dae6bb73 100644 --- a/src/Components/Facility/Consultations/DailyRoundsFilter.tsx +++ b/src/Components/Facility/Consultations/DailyRoundsFilter.tsx @@ -1,6 +1,10 @@ -import { Popover, Transition } from "@headlessui/react"; +import { + Popover, + PopoverButton, + PopoverPanel, + Transition, +} from "@headlessui/react"; import ButtonV2 from "../../Common/components/ButtonV2"; -import { Fragment } from "react"; import { SelectFormField } from "../../Form/FormFields/SelectFormField"; import TextFormField from "../../Form/FormFields/TextFormField"; import CareIcon from "../../../CAREUI/icons/CareIcon"; @@ -40,7 +44,7 @@ export default function DailyRoundsFilter(props: Props) { return (
- + {t("filter")} - + - +
@@ -89,7 +92,7 @@ export default function DailyRoundsFilter(props: Props) { max={dayjs().format("YYYY-MM-DDTHH:mm")} /> - + { @@ -101,8 +104,8 @@ export default function DailyRoundsFilter(props: Props) { > {t("clear")} - - + + props.onApply(filter)} @@ -111,10 +114,10 @@ export default function DailyRoundsFilter(props: Props) { > {t("apply")} - +
- +
diff --git a/src/Components/Facility/FacilityCreate.tsx b/src/Components/Facility/FacilityCreate.tsx index 145bd756de2..337be5703cc 100644 --- a/src/Components/Facility/FacilityCreate.tsx +++ b/src/Components/Facility/FacilityCreate.tsx @@ -17,8 +17,13 @@ import { MultiSelectFormField, SelectFormField, } from "../Form/FormFields/SelectFormField"; -import { Popover, Transition } from "@headlessui/react"; -import { Fragment, lazy, useEffect, useState } from "react"; +import { + Popover, + PopoverButton, + PopoverPanel, + Transition, +} from "@headlessui/react"; +import { lazy, useEffect, useState } from "react"; import Steps, { Step } from "../Common/Steps"; import { getPincodeDetails, @@ -939,7 +944,7 @@ export const FacilityCreate = (props: FacilityProps) => {
<> - + { Select location from map - + { leaveFrom="opacity-100 translate-y-0" leaveTo="opacity-0 translate-y-1" > - + { handleSelectCurrentLocation } /> - + diff --git a/src/Components/Facility/FacilityHome.tsx b/src/Components/Facility/FacilityHome.tsx index e659f660981..1b362d9e4f0 100644 --- a/src/Components/Facility/FacilityHome.tsx +++ b/src/Components/Facility/FacilityHome.tsx @@ -4,7 +4,7 @@ import { NonReadOnlyUsers } from "../../Utils/AuthorizeFor"; import { FacilityModel } from "./models"; import { FACILITY_FEATURE_TYPES, USER_TYPES } from "../../Common/constants"; import DropdownMenu, { DropdownItem } from "../Common/components/Menu"; -import { Fragment, lazy, useState } from "react"; +import { lazy, useState } from "react"; import ButtonV2 from "../Common/components/ButtonV2"; import CareIcon from "../../CAREUI/icons/CareIcon"; @@ -27,7 +27,12 @@ import useQuery from "../../Utils/request/useQuery.js"; import { FacilityHomeTriage } from "./FacilityHomeTriage.js"; import { FacilityBedCapacity } from "./FacilityBedCapacity.js"; import useSlug from "../../Common/hooks/useSlug.js"; -import { Popover, Transition } from "@headlessui/react"; +import { + Popover, + PopoverButton, + PopoverPanel, + Transition, +} from "@headlessui/react"; import { FieldLabel } from "../Form/FormFields/FormField.js"; import { LocationSelect } from "../Common/LocationSelect.js"; import { CameraFeedPermittedUserTypes } from "../../Utils/permissions.js"; @@ -500,7 +505,7 @@ const LiveMonitoringButton = () => { return ( - + { Live Monitoring - + { leaveFrom="opacity-100 translate-y-0" leaveTo="opacity-0 translate-y-1" > - +
@@ -553,7 +557,7 @@ const LiveMonitoringButton = () => {
- + ); diff --git a/src/Components/Form/AutoCompleteAsync.tsx b/src/Components/Form/AutoCompleteAsync.tsx index 4fd9346065d..9b4c1f876e4 100644 --- a/src/Components/Form/AutoCompleteAsync.tsx +++ b/src/Components/Form/AutoCompleteAsync.tsx @@ -1,5 +1,11 @@ import { useEffect, useState, useMemo } from "react"; -import { Combobox } from "@headlessui/react"; +import { + Combobox, + ComboboxButton, + ComboboxInput, + ComboboxOption, + ComboboxOptions, +} from "@headlessui/react"; import { debounce } from "lodash-es"; import { DropdownTransition } from "../Common/components/HelperComponents"; import CareIcon from "../../CAREUI/icons/CareIcon"; @@ -89,7 +95,7 @@ const AutoCompleteAsync = (props: Props) => { >
- { autoComplete="off" /> {!disabled && ( - +
{hasSelection && !loading && !required && (
@@ -135,14 +141,21 @@ const AutoCompleteAsync = (props: Props) => { className="-mb-1.5 animate-spin" /> ) : ( - + )}
- + )}
- + {data?.length === 0 ? (
{query !== "" @@ -151,7 +164,8 @@ const AutoCompleteAsync = (props: Props) => {
) : ( data?.map((item: any) => ( - { )}
)} - + )) )} - + {multiple && selected?.length > 0 && (
diff --git a/src/Components/Form/FormFields/Autocomplete.tsx b/src/Components/Form/FormFields/Autocomplete.tsx index ab7c48b3428..7802a296201 100644 --- a/src/Components/Form/FormFields/Autocomplete.tsx +++ b/src/Components/Form/FormFields/Autocomplete.tsx @@ -1,5 +1,11 @@ import { useEffect, useState } from "react"; -import { Combobox } from "@headlessui/react"; +import { + Combobox, + ComboboxButton, + ComboboxInput, + ComboboxOption, + ComboboxOptions, +} from "@headlessui/react"; import { DropdownTransition } from "../../Common/components/HelperComponents"; import CareIcon from "../../../CAREUI/icons/CareIcon"; import { dropdownOptionClassNames } from "../MultiSelectMenuV2"; @@ -157,12 +163,12 @@ export const Autocomplete = (props: AutocompleteProps) => { > props.onChange(selection.value)} >
- value?.label || ""} @@ -171,7 +177,7 @@ export const Autocomplete = (props: AutocompleteProps) => { autoComplete="off" /> {!props.disabled && ( - +
{value?.icon} @@ -194,15 +200,18 @@ export const Autocomplete = (props: AutocompleteProps) => { {props.isLoading ? ( ) : ( - + )}
-
+ )}
- + {props.minQueryLength && query.length < props.minQueryLength ? (
{`Please enter at least ${props.minQueryLength} characters to search`} @@ -213,14 +222,15 @@ export const Autocomplete = (props: AutocompleteProps) => {
) : ( filteredOptions.map((option, index) => ( - - {({ active }) => ( + {({ focus }) => (
{option.label} @@ -232,7 +242,7 @@ export const Autocomplete = (props: AutocompleteProps) => { "text-sm font-normal", option.disabled ? "text-secondary-700" - : active + : focus ? "text-primary-200" : "text-secondary-700", )} @@ -242,10 +252,10 @@ export const Autocomplete = (props: AutocompleteProps) => { )}
)} - + )) )} - +
diff --git a/src/Components/Form/FormFields/AutocompleteMultiselect.tsx b/src/Components/Form/FormFields/AutocompleteMultiselect.tsx index b4746b7e70c..7fea2d4c6e7 100644 --- a/src/Components/Form/FormFields/AutocompleteMultiselect.tsx +++ b/src/Components/Form/FormFields/AutocompleteMultiselect.tsx @@ -5,7 +5,13 @@ import { } from "../MultiSelectMenuV2"; import { ReactNode, useEffect, useRef, useState } from "react"; import CareIcon from "../../../CAREUI/icons/CareIcon"; -import { Combobox } from "@headlessui/react"; +import { + Combobox, + ComboboxButton, + ComboboxInput, + ComboboxOption, + ComboboxOptions, +} from "@headlessui/react"; import { DropdownTransition } from "../../Common/components/HelperComponents"; import FormField from "./FormField"; import { classNames } from "../../../Utils/utils"; @@ -116,7 +122,7 @@ export const AutocompleteMutliSelect = ( >
- ( autoComplete="off" /> {!props.disabled && ( - @@ -139,10 +145,14 @@ export const AutocompleteMutliSelect = ( {props.isLoading ? ( ) : ( - + )}
- + )}
{value.length !== 0 && ( @@ -161,13 +171,17 @@ export const AutocompleteMutliSelect = ( )} - + {props.isLoading ? ( ) : filteredOptions.length ? ( <> {props.selectAll && ( - ( )}
- + )} {filteredOptions.map((option, index) => ( - ( }} disabled={option.disabled} > - {({ active, selected }) => ( + {({ focus, selected }) => ( <>
{option.label} @@ -206,7 +221,7 @@ export const AutocompleteMutliSelect = ( "text-sm font-normal", option.disabled ? "text-secondary-700" - : active + : focus ? "text-primary-200" : "text-secondary-700", )} @@ -216,7 +231,7 @@ export const AutocompleteMutliSelect = ( )} )} - + ))} ) : ( @@ -225,7 +240,7 @@ export const AutocompleteMutliSelect = ( {query ? "No results" : "Type to search"} )} - +
diff --git a/src/Components/Form/FormFields/PhoneNumberFormField.tsx b/src/Components/Form/FormFields/PhoneNumberFormField.tsx index 6038478f1c5..c46d2690ad3 100644 --- a/src/Components/Form/FormFields/PhoneNumberFormField.tsx +++ b/src/Components/Form/FormFields/PhoneNumberFormField.tsx @@ -16,7 +16,7 @@ import { PhoneNumberType, } from "../FieldValidators"; import CareIcon from "../../../CAREUI/icons/CareIcon"; -import { Popover } from "@headlessui/react"; +import { Popover, PopoverButton, PopoverPanel } from "@headlessui/react"; import { useTranslation } from "react-i18next"; const phoneCodes: Record = phoneCodesJson; @@ -111,7 +111,7 @@ export default function PhoneNumberFormField(props: Props) { {({ open }: { open: boolean }) => { return ( <> - +
{country?.flag ?? "🇮🇳"} @@ -121,7 +121,7 @@ export default function PhoneNumberFormField(props: Props) { className={`text-2xl font-bold ${open && "rotate-180"}`} />
-
+ setError(validate(field.value, "blur"))} /> - + {({ close }) => ( )} - + ); }} diff --git a/src/Components/Form/MultiSelectMenuV2.tsx b/src/Components/Form/MultiSelectMenuV2.tsx index 9ab2f4d55c7..e728260e142 100644 --- a/src/Components/Form/MultiSelectMenuV2.tsx +++ b/src/Components/Form/MultiSelectMenuV2.tsx @@ -1,6 +1,11 @@ import CareIcon from "../../CAREUI/icons/CareIcon"; -import { DropdownTransition } from "../Common/components/HelperComponents"; -import { Listbox } from "@headlessui/react"; +import { + Label, + Listbox, + ListboxButton, + ListboxOption, + ListboxOptions, +} from "@headlessui/react"; import { classNames } from "../../Utils/utils"; import { ReactNode, useRef } from "react"; @@ -87,95 +92,94 @@ const MultiSelectMenuV2 = (props: Props) => { } multiple > - {({ open }) => ( - <> - - {props.placeholder} - -
-
- + +
+
+ +
+
+

+ +

+ + {selectedOptions.length !== 0 && ( +
+ {selectedOptions.map((option, index) => ( + { + const updatedOptions = selectedOptions.filter( + (selectedOption) => + selectedOption.value !== option.value, + ); + props.onChange( + updatedOptions.map((o) => o.value) as any, + ); + }} + /> + ))} +
+ )} +
+ +
+
+
+ + {options.map((option, index) => ( + handleSingleSelect(option)} + disabled={option.disabled} > -
-
-

- -

- - {selectedOptions.length !== 0 && ( -
- {selectedOptions.map((option, index) => ( - { - const updatedOptions = selectedOptions.filter( - (selectedOption) => - selectedOption.value !== option.value, - ); - props.onChange( - updatedOptions.map((o) => o.value) as any, - ); - }} - /> + {({ focus }) => ( +
+
+ {option.label} + {(option.icon || option.isSelected) && + (option.isSelected ? ( + + ) : ( + option.icon ))} -
- )} -
- -
- -
- - - {options.map((option, index) => ( - handleSingleSelect(option)} - disabled={option.disabled} - > - {({ active }) => ( -
-
- {option.label} - {(option.icon || option.isSelected) && - (option.isSelected ? ( - - ) : ( - option.icon - ))} -
- {option.description && ( -

- {option.description} -

+
+ {option.description && ( +

+ > + {option.description} +

)} -
- ))} -
-
-
- - )} +
+ )} + + ))} + +
+
); @@ -211,21 +215,21 @@ export const MultiSelectOptionChip = ({ }; interface OptionRenderPropArg { - active: boolean; + focus: boolean; selected: boolean; disabled: boolean; } export const dropdownOptionClassNames = ({ - active, + focus, selected, disabled, }: OptionRenderPropArg) => { return classNames( "group/option relative w-full cursor-default select-none p-4 text-sm transition-colors duration-75 ease-in-out", - !disabled && active && "bg-primary-500 text-white", - !disabled && !active && selected && "text-primary-500", - !disabled && !active && !selected && "text-secondary-900", + !disabled && focus && "bg-primary-500 text-white", + !disabled && !focus && selected && "text-primary-500", + !disabled && !focus && !selected && "text-secondary-900", disabled && "cursor-not-allowed text-secondary-600", selected ? "font-semibold" : "font-normal", ); diff --git a/src/Components/Form/SelectMenuV2.tsx b/src/Components/Form/SelectMenuV2.tsx index cc09b7f619d..379eb7b7315 100644 --- a/src/Components/Form/SelectMenuV2.tsx +++ b/src/Components/Form/SelectMenuV2.tsx @@ -1,5 +1,10 @@ -import { Listbox } from "@headlessui/react"; -import { DropdownTransition } from "../Common/components/HelperComponents"; +import { + Label, + Listbox, + ListboxButton, + ListboxOption, + ListboxOptions, +} from "@headlessui/react"; import CareIcon from "../../CAREUI/icons/CareIcon"; import { dropdownOptionClassNames } from "./MultiSelectMenuV2"; import { classNames } from "../../Utils/utils"; @@ -88,93 +93,86 @@ const SelectMenuV2 = (props: SelectMenuProps) => { value={value} onChange={(selection: any) => props.onChange(selection.value)} > - {({ open }) => ( - <> - - {props.placeholder} - -
- -
-
- {props.showIconWhenSelected && value?.icon && ( -
- {value.icon} -
- )} -

- {value.selectedLabel} -

-
- {showChevronIcon && ( - + <> + +
+ +
+
+ {props.showIconWhenSelected && value?.icon && ( +
+ {value.icon} +
)} +

+ {value.selectedLabel} +

- - - - )} +
+
); diff --git a/src/Components/Medicine/DiscontinuePrescription.tsx b/src/Components/Medicine/DiscontinuePrescription.tsx index f54ba9974fc..1d2cc5baa94 100644 --- a/src/Components/Medicine/DiscontinuePrescription.tsx +++ b/src/Components/Medicine/DiscontinuePrescription.tsx @@ -22,7 +22,7 @@ export default function DiscontinuePrescription(props: Props) { return ( props.onClose(false)} diff --git a/src/Components/Patient/PatientInfoCard.tsx b/src/Components/Patient/PatientInfoCard.tsx index a507a42f627..005c93521d6 100644 --- a/src/Components/Patient/PatientInfoCard.tsx +++ b/src/Components/Patient/PatientInfoCard.tsx @@ -8,7 +8,7 @@ import { TELEMEDICINE_ACTIONS, } from "../../Common/constants.js"; import { ConsultationModel, PatientCategory } from "../Facility/models.js"; -import { Switch, Menu } from "@headlessui/react"; +import { Switch, MenuItem, Field, Label } from "@headlessui/react"; import { Link, navigate } from "raviger"; import { useState } from "react"; import CareIcon from "../../CAREUI/icons/CareIcon.js"; @@ -738,7 +738,7 @@ export default function PatientInfoCard(props: { {enable_abdm && (patient.abha_number ? ( <> - + {({ close }) => ( <>
)} - + ) : ( - + {({ close }) => (
)} -
+ ))}
{!consultation?.discharge_date && ( - + {({ close }) => ( <> {hasActiveShiftingRequest() ? ( @@ -869,9 +869,9 @@ export default function PatientInfoCard(props: { )} )} - + )} - + {({ close }) => (
)} -
- + + {({ close }) => (
)} -
+
- + { @@ -945,12 +945,12 @@ export default function PatientInfoCard(props: { )} /> - + - + +
diff --git a/src/Components/Scribe/Scribe.tsx b/src/Components/Scribe/Scribe.tsx index f1298bc33c5..c942d130a43 100644 --- a/src/Components/Scribe/Scribe.tsx +++ b/src/Components/Scribe/Scribe.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect, useRef } from "react"; -import { Popover } from "@headlessui/react"; +import { Popover, PopoverButton, PopoverPanel } from "@headlessui/react"; import ButtonV2 from "../Common/components/ButtonV2"; import CareIcon from "../../CAREUI/icons/CareIcon"; import routes from "../../Redux/api"; @@ -550,7 +550,7 @@ export const Scribe: React.FC = ({ form, onFormUpdate }) => { return ( - + setOpen(!open)} className="rounded py-2 font-bold" @@ -558,9 +558,9 @@ export const Scribe: React.FC = ({ form, onFormUpdate }) => { Voice AutoFill - + {open && ( - +
- + )} ); diff --git a/src/Components/VitalsMonitor/VitalsMonitorAssetPopover.tsx b/src/Components/VitalsMonitor/VitalsMonitorAssetPopover.tsx index c57daf8f324..7ee5bf6c898 100644 --- a/src/Components/VitalsMonitor/VitalsMonitorAssetPopover.tsx +++ b/src/Components/VitalsMonitor/VitalsMonitorAssetPopover.tsx @@ -3,8 +3,12 @@ import { AssetData, assetClassProps } from "../Assets/AssetTypes"; import ButtonV2 from "../Common/components/ButtonV2"; import { navigate } from "raviger"; import { useTranslation } from "react-i18next"; -import { Popover, Transition } from "@headlessui/react"; -import { Fragment } from "react"; +import { + Popover, + PopoverButton, + PopoverPanel, + Transition, +} from "@headlessui/react"; interface VitalsMonitorAssetPopoverProps { asset?: AssetData; @@ -17,14 +21,13 @@ const VitalsMonitorAssetPopover = ({ return ( - + - + - +
- + ); diff --git a/src/Locale/en/Medicine.json b/src/Locale/en/Medicine.json index a04c5caa77a..3e861f2e486 100644 --- a/src/Locale/en/Medicine.json +++ b/src/Locale/en/Medicine.json @@ -39,6 +39,7 @@ "prescription_logs": "Prescription Logs", "modification_caution_note": "No modifications possible once added", "discontinue_caution_note": "Are you sure you want to discontinue this prescription?", + "confirm_discontinue": "Confirm Discontinue", "edit_caution_note": "A new prescription will be added to the consultation with the edited details and the current prescription will be discontinued.", "reason_for_discontinuation": "Reason for discontinuation", "reason_for_edit": "Reason for edit", From 672586496186cfcbc4368498fd7cb5b2946b68df Mon Sep 17 00:00:00 2001 From: Vishvam Moliya <96417040+thevishvammoliya@users.noreply.github.com> Date: Thu, 22 Aug 2024 22:17:53 +0530 Subject: [PATCH 19/89] Fixed: #8265: Neurological Tables Padding Issue (#8386) --- .../Facility/Consultations/NeurologicalTables.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Components/Facility/Consultations/NeurologicalTables.tsx b/src/Components/Facility/Consultations/NeurologicalTables.tsx index 24654f85e7f..c5c05f0dd17 100644 --- a/src/Components/Facility/Consultations/NeurologicalTables.tsx +++ b/src/Components/Facility/Consultations/NeurologicalTables.tsx @@ -38,15 +38,15 @@ const DataTable = (props: any) => { return (
-
+
{x.date}
-
+
{x.left}
-
+
{x.right}
@@ -321,7 +321,7 @@ export const NeurologicalTable = (props: any) => {
Motor
-
+
Total
@@ -332,7 +332,7 @@ export const NeurologicalTable = (props: any) => { key={`glascow_${i}`} className="flex flex-col divide-x divide-secondary-200" > -
+
{x.date}
From a7101efd37bbc6239cb04912ef197aaddcde5cd7 Mon Sep 17 00:00:00 2001 From: Nithin Date: Thu, 22 Aug 2024 22:23:38 +0530 Subject: [PATCH 20/89] Hide N/A and null values in event log #8376 (#8381) * Hide N/A and null values in event log #8376 * Hide N/A and null values in GenericEvent component * Refactor GenericEvent component to improve readability and efficiency * Revert NeurologicalTables.tsx to previous state * Resolved conflict in GenericEvent component --------- Co-authored-by: Mohammed Nihal <57055998+nihal467@users.noreply.github.com> Co-authored-by: Rithvik Nishad --- .../Events/GenericEvent.tsx | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/Components/Facility/ConsultationDetails/Events/GenericEvent.tsx b/src/Components/Facility/ConsultationDetails/Events/GenericEvent.tsx index 2c4349177a5..1fd0724ed8c 100644 --- a/src/Components/Facility/ConsultationDetails/Events/GenericEvent.tsx +++ b/src/Components/Facility/ConsultationDetails/Events/GenericEvent.tsx @@ -9,8 +9,8 @@ interface IProps { * object - array, date */ const formatValue = (value: unknown, key?: string): ReactNode => { - if (value == null) { - return "N/A"; + if (value == null || value === "N/A") { + return null; } if (typeof value === "boolean") { @@ -25,7 +25,7 @@ const formatValue = (value: unknown, key?: string): ReactNode => { const trimmed = value.trim().replaceAll(/_/g, " "); if (trimmed === "") { - return "Empty"; + return null; } if (!isNaN(Number(trimmed))) { @@ -50,8 +50,8 @@ const formatValue = (value: unknown, key?: string): ReactNode => { return (
    - {value.map((v) => ( -
  • {formatValue(v, key)}
  • + {value.map((v, idx) => ( +
  • {formatValue(v, key)}
  • ))}
); @@ -69,8 +69,8 @@ const formatValue = (value: unknown, key?: string): ReactNode => { return `No ${key?.replaceAll(/_/g, " ")}`; } - return entries.map(([key, value]) => ( -
+ return entries.map(([key, value], idx) => ( +
{key.replaceAll(/_/g, " ")} @@ -88,16 +88,19 @@ export default function GenericEvent(props: IProps) { const { t } = useTranslation(); return (
- {Object.entries(props.values).map(([key, value]) => ( -
- - {t(key).replaceAll(/_/g, " ")} - - - {formatValue(value, key)} - -
- ))} + {Object.entries(props.values) + .map(([key, value]) => ({ key, value: formatValue(value, key) })) + .filter(({ value }) => value != null) + .map(({ key, value }) => ( +
+ + {t(key).replaceAll(/_/g, " ")} + + + {value} + +
+ ))}
); } From 90ee1b51c6394b14794979e1b2bfeb0cd7e268f2 Mon Sep 17 00:00:00 2001 From: Gigin George Date: Thu, 22 Aug 2024 09:58:24 -0700 Subject: [PATCH 21/89] Update react-pdf; pdfjs worker; Fixes for il8n (#8395) --- package-lock.json | 40 ++++++++++----------- package.json | 2 +- public/pdf.worker.min.js | 3 +- src/Components/Common/FilePreviewDialog.tsx | 5 +-- src/Locale/en/Common.json | 6 ++-- 5 files changed, 29 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6b5d147af20..d67882e7191 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ "react-i18next": "^13.0.1", "react-infinite-scroll-component": "^6.1.0", "react-markdown": "^8.0.7", - "react-pdf": "^9.0.0", + "react-pdf": "^9.1.0", "react-player": "^2.16.0", "react-redux": "^8.1.1", "react-webcam": "^7.2.0", @@ -3155,9 +3155,9 @@ } }, "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "optional": true, "bin": { "semver": "bin/semver.js" @@ -9267,9 +9267,9 @@ } }, "node_modules/clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "engines": { "node": ">=6" } @@ -17205,9 +17205,9 @@ } }, "node_modules/nan": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", - "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", "optional": true }, "node_modules/nanoid": { @@ -18070,9 +18070,9 @@ } }, "node_modules/path2d": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/path2d/-/path2d-0.2.0.tgz", - "integrity": "sha512-KdPAykQX6kmLSOO6Jpu2KNcCED7CKjmaBNGGNuctOsG0hgYO1OdYQaan6cYXJiG0WmXOwZZPILPBimu5QAIw3A==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/path2d/-/path2d-0.2.1.tgz", + "integrity": "sha512-Fl2z/BHvkTNvkuBzYTpTuirHZg6wW9z8+4SND/3mDTEcYbbNKWAy21dz9D3ePNNwrrK8pqZO5vLPZ1hLF6T7XA==", "optional": true, "engines": { "node": ">=6" @@ -18104,9 +18104,9 @@ } }, "node_modules/pdfjs-dist": { - "version": "4.3.136", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.3.136.tgz", - "integrity": "sha512-gzfnt1qc4yA+U46golPGYtU4WM2ssqP2MvFjKga8GEKOrEnzRPrA/9jogLLPYHiA3sGBPJ+p7BdAq+ytmw3jEg==", + "version": "4.4.168", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.4.168.tgz", + "integrity": "sha512-MbkAjpwka/dMHaCfQ75RY1FXX3IewBVu6NGZOcxerRFlaBiIkZmUoR0jotX5VUzYZEXAGzSFtknWs5xRKliXPA==", "engines": { "node": ">=18" }, @@ -19738,16 +19738,16 @@ } }, "node_modules/react-pdf": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-9.0.0.tgz", - "integrity": "sha512-J+pza8R2p9oNEOJOHIQJI4o5rFK7ji7bBl2IvsHvz1OOyphvuzVDo5tOJwWAFAbxYauCH3Kt8jOvcMJUOpxYZQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-9.1.0.tgz", + "integrity": "sha512-KhPDQE3QshkLdS3b48S5Bldv0N5flob6qwvsiADWdZOS5TMDaIrkRtEs+Dyl6ubRf2jTf9jWmFb6RjWu46lSSg==", "dependencies": { "clsx": "^2.0.0", "dequal": "^2.0.3", "make-cancellable-promise": "^1.3.1", "make-event-props": "^1.6.0", "merge-refs": "^1.3.0", - "pdfjs-dist": "4.3.136", + "pdfjs-dist": "4.4.168", "tiny-invariant": "^1.0.0", "warning": "^4.0.0" }, diff --git a/package.json b/package.json index 2890121d0e8..19992713a73 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "react-i18next": "^13.0.1", "react-infinite-scroll-component": "^6.1.0", "react-markdown": "^8.0.7", - "react-pdf": "^9.0.0", + "react-pdf": "^9.1.0", "react-player": "^2.16.0", "react-redux": "^8.1.1", "react-webcam": "^7.2.0", diff --git a/public/pdf.worker.min.js b/public/pdf.worker.min.js index 12242260905..863506eb72f 100644 --- a/public/pdf.worker.min.js +++ b/public/pdf.worker.min.js @@ -18,5 +18,4 @@ * * @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 +*/var e = { d: (t, i) => { for (var a in i) e.o(i, a) && !e.o(t, a) && Object.defineProperty(t, a, { enumerable: !0, get: i[a] }) }, o: (e, t) => Object.prototype.hasOwnProperty.call(e, t) }, __webpack_exports__ = globalThis.pdfjsWorker = {}; e.d(__webpack_exports__, { WorkerMessageHandler: () => WorkerMessageHandler }); const t = !("object" != typeof process || process + "" != "[object process]" || process.versions.nw || process.versions.electron && process.type && "browser" !== process.type), i = [1, 0, 0, 1, 0, 0], a = [.001, 0, 0, .001, 0, 0], s = 1.35, r = .35, n = .25925925925925924, o = 1, g = 2, c = 4, h = 8, l = 16, C = 64, Q = 256, E = "pdfjs_internal_editor_", u = 3, d = 9, f = 13, p = 15, m = { PRINT: 4, MODIFY_CONTENTS: 8, COPY: 16, MODIFY_ANNOTATIONS: 32, FILL_INTERACTIVE_FORMS: 256, COPY_FOR_ACCESSIBILITY: 512, ASSEMBLE: 1024, PRINT_HIGH_QUALITY: 2048 }, y = 0, w = 4, b = 1, D = 2, F = 3, S = 1, k = 2, R = 3, N = 4, G = 5, x = 6, M = 7, U = 8, L = 9, J = 10, H = 11, Y = 12, v = 13, K = 14, T = 15, q = 16, O = 17, W = 20, X = "Group", j = "R", Z = 1, V = 2, z = 4, _ = 16, $ = 32, AA = 128, eA = 512, tA = 1, iA = 2, aA = 4096, sA = 8192, rA = 32768, nA = 65536, oA = 131072, gA = 1048576, IA = 2097152, cA = 8388608, hA = 16777216, lA = 1, CA = 2, BA = 3, QA = 4, EA = 5, uA = { E: "Mouse Enter", X: "Mouse Exit", D: "Mouse Down", U: "Mouse Up", Fo: "Focus", Bl: "Blur", PO: "PageOpen", PC: "PageClose", PV: "PageVisible", PI: "PageInvisible", K: "Keystroke", F: "Format", V: "Validate", C: "Calculate" }, dA = { WC: "WillClose", WS: "WillSave", DS: "DidSave", WP: "WillPrint", DP: "DidPrint" }, fA = { O: "PageOpen", C: "PageClose" }, pA = { ERRORS: 0, WARNINGS: 1, INFOS: 5 }, mA = { NONE: 0, BINARY: 1 }, yA = 1, wA = 2, bA = 3, DA = 4, FA = 5, SA = 6, kA = 7, RA = 8, NA = 9, GA = 10, xA = 11, MA = 12, UA = 13, LA = 14, JA = 15, HA = 16, YA = 17, vA = 18, KA = 19, TA = 20, qA = 21, OA = 22, PA = 23, WA = 24, XA = 25, jA = 26, ZA = 27, VA = 28, zA = 29, _A = 30, $A = 31, Ae = 32, ee = 33, te = 34, ie = 35, ae = 36, se = 37, re = 38, ne = 39, oe = 40, ge = 41, Ie = 42, ce = 43, he = 44, le = 45, Ce = 46, Be = 47, Qe = 48, Ee = 49, ue = 50, de = 51, fe = 52, pe = 53, me = 54, ye = 55, we = 56, be = 57, De = 58, Fe = 59, Se = 60, ke = 61, Re = 62, Ne = 63, Ge = 64, xe = 65, Me = 66, Ue = 67, Le = 68, Je = 69, He = 70, Ye = 71, ve = 72, Ke = 73, Te = 74, qe = 75, Oe = 76, Pe = 77, We = 80, Xe = 81, je = 83, Ze = 84, Ve = 85, ze = 86, _e = 87, $e = 88, At = 89, et = 90, tt = 91, it = 1, at = 2; let st = pA.WARNINGS; function getVerbosityLevel() { return st } function info(e) { st >= pA.INFOS && console.log(`Info: ${e}`) } function warn(e) { st >= pA.WARNINGS && console.log(`Warning: ${e}`) } function unreachable(e) { throw new Error(e) } function assert(e, t) { e || unreachable(t) } function createValidAbsoluteUrl(e, t = null, i = null) { if (!e) return null; try { if (i && "string" == typeof e) { if (i.addDefaultProtocol && e.startsWith("www.")) { const t = e.match(/\./g); t?.length >= 2 && (e = `http://${e}`) } if (i.tryConvertEncoding) try { e = stringToUTF8String(e) } catch { } } const a = 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 } }(a)) return a } catch { } return null } function shadow(e, t, i, a = !1) { Object.defineProperty(e, t, { value: i, enumerable: !a, configurable: !0, writable: !1 }); return i } const rt = 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 }(); class PasswordException extends rt { constructor(e, t) { super(e, "PasswordException"); this.code = t } } class UnknownErrorException extends rt { constructor(e, t) { super(e, "UnknownErrorException"); this.details = t } } class InvalidPDFException extends rt { constructor(e) { super(e, "InvalidPDFException") } } class MissingPDFException extends rt { constructor(e) { super(e, "MissingPDFException") } } class UnexpectedResponseException extends rt { constructor(e, t) { super(e, "UnexpectedResponseException"); this.status = t } } class FormatError extends rt { constructor(e) { super(e, "FormatError") } } class AbortException extends rt { constructor(e) { super(e, "AbortException") } } function bytesToString(e) { "object" == typeof e && void 0 !== e?.length || unreachable("Invalid argument for bytesToString"); const t = e.length, i = 8192; if (t < i) return String.fromCharCode.apply(null, e); const a = []; for (let s = 0; s < t; s += i) { const r = Math.min(s + i, t), n = e.subarray(s, r); a.push(String.fromCharCode.apply(null, n)) } return a.join("") } function stringToBytes(e) { "string" != typeof e && unreachable("Invalid argument for stringToBytes"); const t = e.length, i = new Uint8Array(t); for (let a = 0; a < t; ++a)i[a] = 255 & e.charCodeAt(a); return i } function string32(e) { return String.fromCharCode(e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e) } function objectSize(e) { return Object.keys(e).length } class FeatureTest { static get isLittleEndian() { return shadow(this, "isLittleEndian", function isLittleEndian() { const e = new Uint8Array(4); e[0] = 1; return 1 === new Uint32Array(e.buffer, 0, 1)[0] }()) } static get isEvalSupported() { return shadow(this, "isEvalSupported", function isEvalSupported() { try { new Function(""); return !0 } catch { return !1 } }()) } static get isOffscreenCanvasSupported() { return shadow(this, "isOffscreenCanvasSupported", "undefined" != typeof OffscreenCanvas) } static get platform() { return "undefined" != typeof navigator && "string" == typeof navigator?.platform ? shadow(this, "platform", { isMac: navigator.platform.includes("Mac") }) : shadow(this, "platform", { isMac: !1 }) } static get isCSSRoundSupported() { return shadow(this, "isCSSRoundSupported", globalThis.CSS?.supports?.("width: round(1.5px, 1px)")) } } const nt = Array.from(Array(256).keys(), (e => e.toString(16).padStart(2, "0"))); class Util { static makeHexColor(e, t, i) { return `#${nt[e]}${nt[t]}${nt[i]}` } static scaleMinMax(e, t) { let i; if (e[0]) { if (e[0] < 0) { i = t[0]; t[0] = t[2]; t[2] = i } t[0] *= e[0]; t[2] *= e[0]; if (e[3] < 0) { i = t[1]; t[1] = t[3]; t[3] = i } t[1] *= e[3]; t[3] *= e[3] } else { i = t[0]; t[0] = t[1]; t[1] = i; i = t[2]; t[2] = t[3]; t[3] = i; if (e[1] < 0) { i = t[1]; t[1] = t[3]; t[3] = i } t[1] *= e[1]; t[3] *= e[1]; if (e[2] < 0) { i = t[0]; t[0] = t[2]; t[2] = i } t[0] *= e[2]; t[2] *= e[2] } t[0] += e[4]; t[1] += e[5]; t[2] += e[4]; 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 i = 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]) / i, (-e[0] * t[1] + e[1] * t[0] + t[4] * t[1] - t[5] * t[0]) / i] } static getAxialAlignedBoundingBox(e, t) { const i = this.applyTransform(e, t), a = this.applyTransform(e.slice(2, 4), t), s = this.applyTransform([e[0], e[3]], t), r = this.applyTransform([e[2], e[1]], t); return [Math.min(i[0], a[0], s[0], r[0]), Math.min(i[1], a[1], s[1], r[1]), Math.max(i[0], a[0], s[0], r[0]), Math.max(i[1], a[1], s[1], r[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]], i = e[0] * t[0] + e[1] * t[2], a = e[0] * t[1] + e[1] * t[3], s = e[2] * t[0] + e[3] * t[2], r = e[2] * t[1] + e[3] * t[3], n = (i + r) / 2, o = Math.sqrt((i + r) ** 2 - 4 * (i * r - s * a)) / 2, g = n + o || 1, c = n - o || 1; return [Math.sqrt(g), Math.sqrt(c)] } 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 i = Math.max(Math.min(e[0], e[2]), Math.min(t[0], t[2])), a = Math.min(Math.max(e[0], e[2]), Math.max(t[0], t[2])); if (i > a) return null; const s = Math.max(Math.min(e[1], e[3]), Math.min(t[1], t[3])), r = Math.min(Math.max(e[1], e[3]), Math.max(t[1], t[3])); return s > r ? null : [i, s, a, r] } static #A(e, t, i, a, s, r, n, o, g, c) { if (g <= 0 || g >= 1) return; const h = 1 - g, l = g * g, C = l * g, Q = h * (h * (h * e + 3 * g * t) + 3 * l * i) + C * a, E = h * (h * (h * s + 3 * g * r) + 3 * l * n) + C * o; c[0] = Math.min(c[0], Q); c[1] = Math.min(c[1], E); c[2] = Math.max(c[2], Q); c[3] = Math.max(c[3], E) } static #e(e, t, i, a, s, r, n, o, g, c, h, l) { if (Math.abs(g) < 1e-12) { Math.abs(c) >= 1e-12 && this.#A(e, t, i, a, s, r, n, o, -h / c, l); return } const C = c ** 2 - 4 * h * g; if (C < 0) return; const Q = Math.sqrt(C), E = 2 * g; this.#A(e, t, i, a, s, r, n, o, (-c + Q) / E, l); this.#A(e, t, i, a, s, r, n, o, (-c - Q) / E, l) } static bezierBoundingBox(e, t, i, a, s, r, n, o, g) { if (g) { g[0] = Math.min(g[0], e, n); g[1] = Math.min(g[1], t, o); g[2] = Math.max(g[2], e, n); g[3] = Math.max(g[3], t, o) } else g = [Math.min(e, n), Math.min(t, o), Math.max(e, n), Math.max(t, o)]; this.#e(e, i, s, n, t, a, r, o, 3 * (3 * (i - s) - e + n), 6 * (e - 2 * i + s), 3 * (i - e), g); this.#e(e, i, s, n, t, a, r, o, 3 * (3 * (a - r) - t + o), 6 * (t - 2 * a + r), 3 * (a - t), g); return g } } const ot = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 728, 711, 710, 729, 733, 731, 730, 732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8226, 8224, 8225, 8230, 8212, 8211, 402, 8260, 8249, 8250, 8722, 8240, 8222, 8220, 8221, 8216, 8217, 8218, 8482, 64257, 64258, 321, 338, 352, 376, 381, 305, 322, 339, 353, 382, 0, 8364]; function stringToPDFString(e) { if (e[0] >= "ï") { let t; if ("þ" === e[0] && "ÿ" === e[1]) { t = "utf-16be"; e.length % 2 == 1 && (e = e.slice(0, -1)) } else if ("ÿ" === e[0] && "þ" === e[1]) { t = "utf-16le"; e.length % 2 == 1 && (e = e.slice(0, -1)) } else "ï" === e[0] && "»" === e[1] && "¿" === e[2] && (t = "utf-8"); if (t) try { const i = new TextDecoder(t, { fatal: !0 }), a = stringToBytes(e), s = i.decode(a); return s.includes("") ? s.replaceAll(/\x1b[^\x1b]*(?:\x1b|$)/g, "") : s } catch (e) { warn(`stringToPDFString: "${e}".`) } } const t = []; for (let i = 0, a = e.length; i < a; i++) { const s = e.charCodeAt(i); if (27 === s) { for (; ++i < a && 27 !== e.charCodeAt(i);); continue } const r = ot[s]; t.push(r ? String.fromCharCode(r) : e.charAt(i)) } return t.join("") } function stringToUTF8String(e) { return decodeURIComponent(escape(e)) } function utf8StringToString(e) { return unescape(encodeURIComponent(e)) } function isArrayEqual(e, t) { if (e.length !== t.length) return !1; for (let i = 0, a = e.length; i < a; i++)if (e[i] !== t[i]) return !1; return !0 } 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("") } let gt = null, It = null; const ct = 0, ht = 1, lt = 2, Ct = 3, Bt = 4, Qt = 5, Et = 6, ut = 7, dt = 8, ft = Symbol("CIRCULAR_REF"), pt = Symbol("EOF"); let mt = Object.create(null), yt = Object.create(null), wt = Object.create(null); class Name { constructor(e) { this.name = e } static get(e) { return yt[e] ||= new Name(e) } } class Cmd { constructor(e) { this.cmd = e } static get(e) { return mt[e] ||= new Cmd(e) } } const bt = function nonSerializableClosure() { return bt }; class Dict { constructor(e = null) { this._map = Object.create(null); this.xref = e; this.objId = null; this.suppressEncryption = !1; this.__nonSerializable__ = bt } assignXref(e) { this.xref = e } get size() { return Object.keys(this._map).length } get(e, t, i) { let a = this._map[e]; if (void 0 === a && void 0 !== t) { a = this._map[t]; void 0 === a && void 0 !== i && (a = this._map[i]) } return a instanceof Ref && this.xref ? this.xref.fetch(a, this.suppressEncryption) : a } async getAsync(e, t, i) { let a = this._map[e]; if (void 0 === a && void 0 !== t) { a = this._map[t]; void 0 === a && void 0 !== i && (a = this._map[i]) } return a instanceof Ref && this.xref ? this.xref.fetchAsync(a, this.suppressEncryption) : a } getArray(e, t, i) { let a = this._map[e]; if (void 0 === a && void 0 !== t) { a = this._map[t]; void 0 === a && void 0 !== i && (a = this._map[i]) } a instanceof Ref && this.xref && (a = this.xref.fetch(a, this.suppressEncryption)); if (Array.isArray(a)) { a = a.slice(); for (let e = 0, t = a.length; e < t; e++)a[e] instanceof Ref && this.xref && (a[e] = this.xref.fetch(a[e], this.suppressEncryption)) } return a } getRaw(e) { return this._map[e] } getKeys() { return Object.keys(this._map) } getRawValues() { return Object.values(this._map) } set(e, t) { this._map[e] = t } has(e) { return void 0 !== this._map[e] } forEach(e) { for (const t in this._map) e(t, this.get(t)) } static get empty() { const e = new Dict(null); e.set = (e, t) => { unreachable("Should not call `set` on the empty dictionary.") }; return shadow(this, "empty", e) } static merge({ xref: e, dictArray: t, mergeSubDicts: i = !1 }) { const a = new Dict(e), s = new Map; for (const e of t) if (e instanceof Dict) for (const [t, a] of Object.entries(e._map)) { let e = s.get(t); if (void 0 === e) { e = []; s.set(t, e) } else if (!(i && a instanceof Dict)) continue; e.push(a) } for (const [t, i] of s) { if (1 === i.length || !(i[0] instanceof Dict)) { a._map[t] = i[0]; continue } const s = new Dict(e); for (const e of i) for (const [t, i] of Object.entries(e._map)) void 0 === s._map[t] && (s._map[t] = i); s.size > 0 && (a._map[t] = s) } s.clear(); return a.size > 0 ? a : Dict.empty } clone() { const e = new Dict(this.xref); for (const t of this.getKeys()) e.set(t, this.getRaw(t)); return e } } 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 = wt[e]; if (t) return t; const i = /^(\d+)R(\d*)$/.exec(e); return i && "0" !== i[1] ? wt[e] = new Ref(parseInt(i[1]), i[2] ? parseInt(i[2]) : 0) : null } static get(e, t) { const i = 0 === t ? `${e}R` : `${e}R${t}`; return wt[i] ||= new Ref(e, t) } } 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() } } 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() } *items() { for (const [e, t] of this._map) yield [Ref.fromString(e), t] } } function isName(e, t) { return e instanceof Name && (void 0 === t || e.name === t) } function isCmd(e, t) { return e instanceof Cmd && (void 0 === t || e.cmd === t) } function isDict(e, t) { return e instanceof Dict && (void 0 === t || isName(e.get("Type"), t)) } function isRefsEqual(e, t) { return e.num === t.num && e.gen === t.gen } class BaseStream { constructor() { this.constructor === BaseStream && unreachable("Cannot initialize BaseStream.") } get length() { unreachable("Abstract getter `length` accessed") } get isEmpty() { unreachable("Abstract getter `isEmpty` accessed") } get isDataLoaded() { return shadow(this, "isDataLoaded", !0) } getByte() { unreachable("Abstract method `getByte` called") } getBytes(e) { 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) { unreachable("Abstract method `getByteRange` called") } getString(e) { return bytesToString(this.getBytes(e)) } skip(e) { this.pos += e || 1 } reset() { unreachable("Abstract method `reset` called") } moveStart() { unreachable("Abstract method `moveStart` called") } makeSubStream(e, t, i = null) { unreachable("Abstract method `makeSubStream` called") } getBaseStreams() { return null } } const Dt = /^[1-9]\.\d$/; function getLookupTableFactory(e) { let t; return function () { if (e) { t = Object.create(null); e(t); e = null } return t } } class MissingDataException extends rt { constructor(e, t) { super(`Missing data [${e}, ${t})`, "MissingDataException"); this.begin = e; this.end = t } } class ParserEOFException extends rt { constructor(e) { super(e, "ParserEOFException") } } class XRefEntryException extends rt { constructor(e) { super(e, "XRefEntryException") } } class XRefParseException extends rt { constructor(e) { super(e, "XRefParseException") } } function arrayBuffersToBytes(e) { const t = e.length; if (0 === t) return new Uint8Array(0); if (1 === t) return new Uint8Array(e[0]); let i = 0; for (let a = 0; a < t; a++)i += e[a].byteLength; const a = new Uint8Array(i); let s = 0; for (let i = 0; i < t; i++) { const t = new Uint8Array(e[i]); a.set(t, s); s += t.byteLength } return a } function getInheritableProperty({ dict: e, key: t, getArray: i = !1, stopWhenFound: a = !0 }) { let s; const r = new RefSet; for (; e instanceof Dict && (!e.objId || !r.has(e.objId));) { e.objId && r.put(e.objId); const n = i ? e.getArray(t) : e.get(t); if (void 0 !== n) { if (a) return n; (s ||= []).push(n) } e = e.get("Parent") } return s } const Ft = ["", "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 toRomanNumerals(e, t = !1) { assert(Number.isInteger(e) && e > 0, "The number should be a positive integer."); const i = []; let a; for (; e >= 1e3;) { e -= 1e3; i.push("M") } a = e / 100 | 0; e %= 100; i.push(Ft[a]); a = e / 10 | 0; e %= 10; i.push(Ft[10 + a]); i.push(Ft[20 + e]); const s = i.join(""); return t ? s.toLowerCase() : s } function log2(e) { return e <= 0 ? 0 : Math.ceil(Math.log2(e)) } function readInt8(e, t) { return e[t] << 24 >> 24 } function readUint16(e, t) { return e[t] << 8 | e[t + 1] } function readUint32(e, t) { return (e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | e[t + 3]) >>> 0 } function isWhiteSpace(e) { return 32 === e || 9 === e || 13 === e || 10 === e } function isNumberArray(e, t) { return Array.isArray(e) && (null === t || e.length === t) && e.every((e => "number" == typeof e)) } function lookupMatrix(e, t) { return isNumberArray(e, 6) ? e : t } function lookupRect(e, t) { return isNumberArray(e, 4) ? e : t } function lookupNormalRect(e, t) { return isNumberArray(e, 4) ? Util.normalizeRect(e) : t } function parseXFAPath(e) { const t = /(.+)\[(\d+)\]$/; return e.split(".").map((e => { const i = e.match(t); return i ? { name: i[1], pos: parseInt(i[2], 10) } : { name: e, pos: 0 } })) } function escapePDFName(e) { const t = []; let i = 0; for (let a = 0, s = e.length; a < s; a++) { const s = e.charCodeAt(a); if (s < 33 || s > 126 || 35 === s || 40 === s || 41 === s || 60 === s || 62 === s || 91 === s || 93 === s || 123 === s || 125 === s || 47 === s || 37 === s) { i < a && t.push(e.substring(i, a)); t.push(`#${s.toString(16)}`); i = a + 1 } } if (0 === t.length) return e; i < e.length && t.push(e.substring(i, e.length)); return t.join("") } function escapeString(e) { return e.replaceAll(/([()\\\n\r])/g, (e => "\n" === e ? "\\n" : "\r" === e ? "\\r" : `\\${e}`)) } function _collectJS(e, t, i, a) { if (!e) return; let s = null; if (e instanceof Ref) { if (a.has(e)) return; s = e; a.put(s); e = t.fetch(e) } if (Array.isArray(e)) for (const s of e) _collectJS(s, t, i, a); else if (e instanceof Dict) { if (isName(e.get("S"), "JavaScript")) { const t = e.get("JS"); let a; t instanceof BaseStream ? a = t.getString() : "string" == typeof t && (a = t); a &&= stringToPDFString(a).replaceAll("\0", ""); a && i.push(a) } _collectJS(e.getRaw("Next"), t, i, a) } s && a.remove(s) } function collectActions(e, t, i) { const a = Object.create(null), s = getInheritableProperty({ dict: t, key: "AA", stopWhenFound: !1 }); if (s) for (let t = s.length - 1; t >= 0; t--) { const r = s[t]; if (r instanceof Dict) for (const t of r.getKeys()) { const s = i[t]; if (!s) continue; const n = []; _collectJS(r.getRaw(t), e, n, new RefSet); n.length > 0 && (a[s] = n) } } if (t.has("A")) { const i = []; _collectJS(t.get("A"), e, i, new RefSet); i.length > 0 && (a.Action = i) } return objectSize(a) > 0 ? a : null } const St = { 60: "<", 62: ">", 38: "&", 34: """, 39: "'" }; function* codePointIter(e) { for (let t = 0, i = e.length; t < i; t++) { const i = e.codePointAt(t); i > 55295 && (i < 57344 || i > 65533) && t++; yield i } } function encodeToXmlString(e) { const t = []; let i = 0; for (let a = 0, s = e.length; a < s; a++) { const s = e.codePointAt(a); if (32 <= s && s <= 126) { const r = St[s]; if (r) { i < a && t.push(e.substring(i, a)); t.push(r); i = a + 1 } } else { i < a && t.push(e.substring(i, a)); t.push(`&#x${s.toString(16).toUpperCase()};`); s > 55295 && (s < 57344 || s > 65533) && a++; i = a + 1 } } if (0 === t.length) return e; i < e.length && t.push(e.substring(i, e.length)); return t.join("") } function validateFontName(e, t = !1) { const i = /^("|').*("|')$/.exec(e); if (i && i[1] === i[2]) { if (new RegExp(`[^\\\\]${i[1]}`).test(e.slice(1, -1))) { t && warn(`FontFamily contains unescaped ${i[1]}: ${e}.`); return !1 } } else for (const i of e.split(/[ \t]+/)) if (/^(\d|(-(\d|-)))/.test(i) || !/^[\w-\\]+$/.test(i)) { t && warn(`FontFamily contains invalid : ${e}.`); return !1 } return !0 } function validateCSSFont(e) { const t = new Set(["100", "200", "300", "400", "500", "600", "700", "800", "900", "1000", "normal", "bold", "bolder", "lighter"]), { fontFamily: i, fontWeight: a, italicAngle: s } = e; if (!validateFontName(i, !0)) return !1; const r = a ? a.toString() : ""; e.fontWeight = t.has(r) ? r : "400"; const n = parseFloat(s); e.italicAngle = isNaN(n) || n < -90 || n > 90 ? "14" : s.toString(); return !0 } 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 i = !1; "true" === t[3] && "app.launchURL" === t[1] && (i = !0); return { url: e, newWindow: i } } return null } function numberToString(e) { if (Number.isInteger(e)) return e.toString(); const t = Math.round(100 * e); return t % 100 == 0 ? (t / 100).toString() : t % 10 == 0 ? e.toFixed(1) : e.toFixed(2) } function getNewAnnotationsMap(e) { if (!e) return null; const t = new Map; for (const [i, a] of e) { if (!i.startsWith(E)) continue; let e = t.get(a.pageIndex); if (!e) { e = []; t.set(a.pageIndex, e) } e.push(a) } return t.size > 0 ? t : null } function isAscii(e) { return /^[\x00-\x7F]*$/.test(e) } function stringToUTF16HexString(e) { const t = []; for (let i = 0, a = e.length; i < a; i++) { const a = e.charCodeAt(i); t.push((a >> 8 & 255).toString(16).padStart(2, "0"), (255 & a).toString(16).padStart(2, "0")) } return t.join("") } function stringToUTF16String(e, t = !1) { const i = []; t && i.push("þÿ"); for (let t = 0, a = e.length; t < a; t++) { const a = e.charCodeAt(t); i.push(String.fromCharCode(a >> 8 & 255), String.fromCharCode(255 & a)) } return i.join("") } function getRotationMatrix(e, t, i) { switch (e) { case 90: return [0, 1, -1, 0, t, 0]; case 180: return [-1, 0, 0, -1, t, i]; case 270: return [0, -1, 1, 0, 0, i]; default: throw new Error("Invalid rotation") } } function getSizeInBytes(e) { return Math.ceil(Math.ceil(Math.log2(1 + e)) / 8) } class Stream extends BaseStream { constructor(e, t, i, a) { super(); this.bytes = e instanceof Uint8Array ? e : new Uint8Array(e); this.start = t || 0; this.pos = this.start; this.end = t + i || this.bytes.length; this.dict = a } 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, i = this.pos, a = this.end; if (!e) return t.subarray(i, a); let s = i + e; s > a && (s = a); this.pos = s; return t.subarray(i, s) } 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, i = null) { return new Stream(this.bytes.buffer, e, t, i) } } class StringStream extends Stream { constructor(e) { super(stringToBytes(e)) } } class NullStream extends Stream { constructor() { super(new Uint8Array(0)) } } class ChunkedStream extends Stream { constructor(e, t, i) { super(new Uint8Array(e), 0, e, null); this.chunkSize = t; this._loadedChunks = new Set; this.numChunks = Math.ceil(e / t); this.manager = i; this.progressiveDataLength = 0; this.lastSuccessfulEnsureByteChunk = -1 } getMissingChunks() { const e = []; for (let t = 0, i = this.numChunks; t < i; ++t)this._loadedChunks.has(t) || e.push(t); return e } get numChunksLoaded() { return this._loadedChunks.size } get isDataLoaded() { return this.numChunksLoaded === this.numChunks } onReceiveData(e, t) { const i = this.chunkSize; if (e % i != 0) throw new Error(`Bad begin offset: ${e}`); const a = e + t.byteLength; if (a % i != 0 && a !== this.bytes.length) throw new Error(`Bad end offset: ${a}`); this.bytes.set(new Uint8Array(t), e); const s = Math.floor(e / i), r = Math.floor((a - 1) / i) + 1; for (let e = s; e < r; ++e)this._loadedChunks.add(e) } onReceiveProgressiveData(e) { let t = this.progressiveDataLength; const i = Math.floor(t / this.chunkSize); this.bytes.set(new Uint8Array(e), t); t += e.byteLength; this.progressiveDataLength = t; const a = t >= this.end ? this.numChunks : Math.floor(t / this.chunkSize); for (let e = i; e < a; ++e)this._loadedChunks.add(e) } ensureByte(e) { if (e < this.progressiveDataLength) return; const t = Math.floor(e / this.chunkSize); if (!(t > this.numChunks) && t !== this.lastSuccessfulEnsureByteChunk) { if (!this._loadedChunks.has(t)) throw new MissingDataException(e, e + 1); this.lastSuccessfulEnsureByteChunk = t } } ensureRange(e, t) { if (e >= t) return; if (t <= this.progressiveDataLength) return; const i = Math.floor(e / this.chunkSize); if (i > this.numChunks) return; const a = Math.min(Math.floor((t - 1) / this.chunkSize) + 1, this.numChunks); for (let s = i; s < a; ++s)if (!this._loadedChunks.has(s)) throw new MissingDataException(e, t) } nextEmptyChunk(e) { const t = this.numChunks; for (let i = 0; i < t; ++i) { const a = (e + i) % t; if (!this._loadedChunks.has(a)) return a } return null } hasChunk(e) { return this._loadedChunks.has(e) } getByte() { const e = this.pos; if (e >= this.end) return -1; e >= this.progressiveDataLength && this.ensureByte(e); return this.bytes[this.pos++] } getBytes(e) { const t = this.bytes, i = this.pos, a = this.end; if (!e) { a > this.progressiveDataLength && this.ensureRange(i, a); return t.subarray(i, a) } let s = i + e; s > a && (s = a); s > this.progressiveDataLength && this.ensureRange(i, s); this.pos = s; return t.subarray(i, s) } 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, i = 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), i = Math.floor((this.end - 1) / e) + 1, a = []; for (let e = t; e < i; ++e)this._loadedChunks.has(e) || a.push(e); return a }; Object.defineProperty(ChunkedStreamSubstream.prototype, "isDataLoaded", { get() { return this.numChunksLoaded === this.numChunks || 0 === this.getMissingChunks().length }, configurable: !0 }); const a = new ChunkedStreamSubstream; a.pos = a.start = e; a.end = e + t || this.end; a.dict = i; return a } getBaseStreams() { return [this] } } class ChunkedStreamManager { constructor(e, t) { this.length = t.length; this.chunkSize = t.rangeChunkSize; this.stream = new ChunkedStream(this.length, this.chunkSize, this); this.pdfNetworkStream = e; this.disableAutoFetch = t.disableAutoFetch; this.msgHandler = t.msgHandler; this.currRequestId = 0; this._chunksNeededByRequest = new Map; this._requestsByChunk = new Map; this._promisesByRequest = new Map; this.progressiveDataLength = 0; this.aborted = !1; this._loadedStreamCapability = Promise.withResolvers() } sendRequest(e, t) { const i = this.pdfNetworkStream.getRangeReader(e, t); i.isStreamingSupported || (i.onProgress = this.onProgress.bind(this)); let a = [], s = 0; return new Promise(((e, t) => { const readChunk = ({ value: r, done: n }) => { try { if (n) { const t = arrayBuffersToBytes(a); a = null; e(t); return } s += r.byteLength; i.isStreamingSupported && this.onProgress({ loaded: s }); a.push(r); i.read().then(readChunk, t) } catch (e) { t(e) } }; i.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++, i = new Set; this._chunksNeededByRequest.set(t, i); for (const t of e) this.stream.hasChunk(t) || i.add(t); if (0 === i.size) return Promise.resolve(); const a = Promise.withResolvers(); this._promisesByRequest.set(t, a); const s = []; for (const e of i) { let i = this._requestsByChunk.get(e); if (!i) { i = []; this._requestsByChunk.set(e, i); s.push(e) } i.push(t) } if (s.length > 0) { const e = this.groupChunks(s); for (const t of e) { const e = t.beginChunk * this.chunkSize, i = Math.min(t.endChunk * this.chunkSize, this.length); this.sendRequest(e, i).catch(a.reject) } } return a.promise.catch((e => { if (!this.aborted) throw e })) } getStream() { return this.stream } requestRange(e, t) { t = Math.min(t, this.length); const i = this.getBeginChunk(e), a = this.getEndChunk(t), s = []; for (let e = i; e < a; ++e)s.push(e); return this._requestChunks(s) } requestRanges(e = []) { const t = []; for (const i of e) { const e = this.getBeginChunk(i.begin), a = this.getEndChunk(i.end); for (let i = e; i < a; ++i)t.includes(i) || t.push(i) } t.sort((function (e, t) { return e - t })); return this._requestChunks(t) } groupChunks(e) { const t = []; let i = -1, a = -1; for (let s = 0, r = e.length; s < r; ++s) { const r = e[s]; i < 0 && (i = r); if (a >= 0 && a + 1 !== r) { t.push({ beginChunk: i, endChunk: a + 1 }); i = r } s + 1 === e.length && t.push({ beginChunk: i, endChunk: r + 1 }); a = r } 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, i = void 0 === e.begin, a = i ? this.progressiveDataLength : e.begin, s = a + t.byteLength, r = Math.floor(a / this.chunkSize), n = s < this.length ? Math.floor(s / this.chunkSize) : Math.ceil(s / this.chunkSize); if (i) { this.stream.onReceiveProgressiveData(t); this.progressiveDataLength = s } else this.stream.onReceiveData(a, t); this.stream.isDataLoaded && this._loadedStreamCapability.resolve(this.stream); const o = []; for (let e = r; e < n; ++e) { const t = this._requestsByChunk.get(e); if (t) { this._requestsByChunk.delete(e); for (const i of t) { const t = this._chunksNeededByRequest.get(i); t.has(e) && t.delete(e); t.size > 0 || o.push(i) } } } 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(n); 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) } } class ColorSpace { constructor(e, t) { this.constructor === ColorSpace && unreachable("Cannot initialize ColorSpace."); this.name = e; this.numComps = t } getRgb(e, t) { const i = new Uint8ClampedArray(3); this.getRgbItem(e, t, i, 0); return i } getRgbItem(e, t, i, a) { unreachable("Should not call ColorSpace.getRgbItem") } getRgbBuffer(e, t, i, a, s, r, n) { unreachable("Should not call ColorSpace.getRgbBuffer") } getOutputLength(e, t) { unreachable("Should not call ColorSpace.getOutputLength") } isPassthrough(e) { return !1 } isDefaultDecode(e, t) { return ColorSpace.isDefaultDecode(e, this.numComps) } fillRgb(e, t, i, a, s, r, n, o, g) { const c = t * i; let h = null; const l = 1 << n, C = i !== s || t !== a; if (this.isPassthrough(n)) h = o; else if (1 === this.numComps && c > l && "DeviceGray" !== this.name && "DeviceRGB" !== this.name) { const t = n <= 8 ? new Uint8Array(l) : new Uint16Array(l); for (let e = 0; e < l; e++)t[e] = e; const i = new Uint8ClampedArray(3 * l); this.getRgbBuffer(t, 0, l, i, 0, n, 0); if (C) { h = new Uint8Array(3 * c); let e = 0; for (let t = 0; t < c; ++t) { const a = 3 * o[t]; h[e++] = i[a]; h[e++] = i[a + 1]; h[e++] = i[a + 2] } } else { let t = 0; for (let a = 0; a < c; ++a) { const s = 3 * o[a]; e[t++] = i[s]; e[t++] = i[s + 1]; e[t++] = i[s + 2]; t += g } } } else if (C) { h = new Uint8ClampedArray(3 * c); this.getRgbBuffer(o, 0, c, h, 0, n, 0) } else this.getRgbBuffer(o, 0, a * r, e, 0, n, g); if (h) if (C) !function resizeRgbImage(e, t, i, a, s, r, n) { n = 1 !== n ? 0 : n; const o = i / s, g = a / r; let c, h = 0; const l = new Uint16Array(s), C = 3 * i; for (let e = 0; e < s; e++)l[e] = 3 * Math.floor(e * o); for (let i = 0; i < r; i++) { const a = Math.floor(i * g) * C; for (let i = 0; i < s; i++) { c = a + l[i]; t[h++] = e[c++]; t[h++] = e[c++]; t[h++] = e[c++]; h += n } } }(h, e, t, i, a, s, g); else { let t = 0, i = 0; for (let s = 0, n = a * r; s < n; s++) { e[t++] = h[i++]; e[t++] = h[i++]; e[t++] = h[i++]; t += g } } } get usesZeroToOneRange() { return shadow(this, "usesZeroToOneRange", !0) } static _cache(e, t, i, a) { if (!i) throw new Error('ColorSpace._cache - expected "localColorSpaceCache" argument.'); if (!a) throw new Error('ColorSpace._cache - expected "parsedColorSpace" argument.'); let s, r; if (e instanceof Ref) { r = e; e = t.fetch(e) } e instanceof Name && (s = e.name); (s || r) && i.set(s, r, a) } static getCached(e, t, i) { if (!i) throw new Error('ColorSpace.getCached - expected "localColorSpaceCache" argument.'); if (e instanceof Ref) { const a = i.getByRef(e); if (a) return a; try { e = t.fetch(e) } catch (e) { if (e instanceof MissingDataException) throw e } } if (e instanceof Name) { const t = i.getByName(e.name); if (t) return t } return null } static async parseAsync({ cs: e, xref: t, resources: i = null, pdfFunctionFactory: a, localColorSpaceCache: s }) { const r = this._parse(e, t, i, a); this._cache(e, t, s, r); return r } static parse({ cs: e, xref: t, resources: i = null, pdfFunctionFactory: a, localColorSpaceCache: s }) { const r = this.getCached(e, t, s); if (r) return r; const n = this._parse(e, t, i, a); this._cache(e, t, s, n); return n } static _parse(e, t, i = null, a) { if ((e = t.fetchIfRef(e)) instanceof Name) switch (e.name) { case "G": case "DeviceGray": return this.singletons.gray; case "RGB": case "DeviceRGB": return this.singletons.rgb; case "CMYK": case "DeviceCMYK": return this.singletons.cmyk; case "Pattern": return new PatternCS(null); default: if (i instanceof Dict) { const s = i.get("ColorSpace"); if (s instanceof Dict) { const r = s.get(e.name); if (r) { if (r instanceof Name) return this._parse(r, t, i, a); e = r; break } } } throw new FormatError(`Unrecognized ColorSpace: ${e.name}`) }if (Array.isArray(e)) { const s = t.fetchIfRef(e[0]).name; let r, n, o, g, c, h; switch (s) { case "G": case "DeviceGray": return this.singletons.gray; case "RGB": case "DeviceRGB": return this.singletons.rgb; case "CMYK": case "DeviceCMYK": return this.singletons.cmyk; case "CalGray": r = t.fetchIfRef(e[1]); g = r.getArray("WhitePoint"); c = r.getArray("BlackPoint"); h = r.get("Gamma"); return new CalGrayCS(g, c, h); case "CalRGB": r = t.fetchIfRef(e[1]); g = r.getArray("WhitePoint"); c = r.getArray("BlackPoint"); h = r.getArray("Gamma"); const l = r.getArray("Matrix"); return new CalRGBCS(g, c, h, l); case "ICCBased": const C = t.fetchIfRef(e[1]).dict; n = C.get("N"); const Q = C.get("Alternate"); if (Q) { const e = this._parse(Q, t, i, a); if (e.numComps === n) return e; warn("ICCBased color space: Ignoring incorrect /Alternate entry.") } if (1 === n) return this.singletons.gray; if (3 === n) return this.singletons.rgb; if (4 === n) return this.singletons.cmyk; break; case "Pattern": o = e[1] || null; o && (o = this._parse(o, t, i, a)); return new PatternCS(o); case "I": case "Indexed": o = this._parse(e[1], t, i, a); const E = t.fetchIfRef(e[2]) + 1, u = t.fetchIfRef(e[3]); return new IndexedCS(o, E, u); case "Separation": case "DeviceN": const d = t.fetchIfRef(e[1]); n = Array.isArray(d) ? d.length : 1; o = this._parse(e[2], t, i, a); const f = a.create(e[3]); return new AlternateCS(n, o, f); case "Lab": r = t.fetchIfRef(e[1]); g = r.getArray("WhitePoint"); c = r.getArray("BlackPoint"); const p = r.getArray("Range"); return new LabCS(g, c, p); default: throw new FormatError(`Unimplemented ColorSpace object: ${s}`) } } throw new FormatError(`Unrecognized ColorSpace object: ${e}`) } static isDefaultDecode(e, t) { if (!Array.isArray(e)) return !0; if (2 * t !== e.length) { warn("The decode map is not the correct length"); return !0 } for (let t = 0, i = e.length; t < i; t += 2)if (0 !== e[t] || 1 !== e[t + 1]) return !1; return !0 } static get singletons() { return shadow(this, "singletons", { get gray() { return shadow(this, "gray", new DeviceGrayCS) }, get rgb() { return shadow(this, "rgb", new DeviceRgbCS) }, get cmyk() { return shadow(this, "cmyk", new DeviceCmykCS) } }) } } class AlternateCS extends ColorSpace { constructor(e, t, i) { super("Alternate", e); this.base = t; this.tintFn = i; this.tmpBuf = new Float32Array(t.numComps) } getRgbItem(e, t, i, a) { const s = this.tmpBuf; this.tintFn(e, t, s, 0); this.base.getRgbItem(s, 0, i, a) } getRgbBuffer(e, t, i, a, s, r, n) { const o = this.tintFn, g = this.base, c = 1 / ((1 << r) - 1), h = g.numComps, l = g.usesZeroToOneRange, C = (g.isPassthrough(8) || !l) && 0 === n; let Q = C ? s : 0; const E = C ? a : new Uint8ClampedArray(h * i), u = this.numComps, d = new Float32Array(u), f = new Float32Array(h); let p, m; for (p = 0; p < i; p++) { for (m = 0; m < u; m++)d[m] = e[t++] * c; o(d, 0, f, 0); if (l) for (m = 0; m < h; m++)E[Q++] = 255 * f[m]; else { g.getRgbItem(f, 0, E, Q); Q += h } } C || g.getRgbBuffer(E, 0, i, a, s, 8, n) } getOutputLength(e, t) { return this.base.getOutputLength(e * this.base.numComps / this.numComps, t) } } class PatternCS extends ColorSpace { constructor(e) { super("Pattern", null); this.base = e } isDefaultDecode(e, t) { unreachable("Should not call PatternCS.isDefaultDecode") } } class IndexedCS extends ColorSpace { constructor(e, t, i) { super("Indexed", 1); this.base = e; this.highVal = t; const a = e.numComps * t; this.lookup = new Uint8Array(a); if (i instanceof BaseStream) { const e = i.getBytes(a); this.lookup.set(e) } else { if ("string" != typeof i) throw new FormatError(`IndexedCS - unrecognized lookup table: ${i}`); for (let e = 0; e < a; ++e)this.lookup[e] = 255 & i.charCodeAt(e) } } getRgbItem(e, t, i, a) { const s = this.base.numComps, r = e[t] * s; this.base.getRgbBuffer(this.lookup, r, 1, i, a, 8, 0) } getRgbBuffer(e, t, i, a, s, r, n) { const o = this.base, g = o.numComps, c = o.getOutputLength(g, n), h = this.lookup; for (let r = 0; r < i; ++r) { const i = e[t++] * g; o.getRgbBuffer(h, i, 1, a, s, 8, n); s += c } } getOutputLength(e, t) { return this.base.getOutputLength(e * this.base.numComps, t) } isDefaultDecode(e, t) { if (!Array.isArray(e)) return !0; if (2 !== e.length) { warn("Decode map length is not correct"); return !0 } if (!Number.isInteger(t) || t < 1) { warn("Bits per component is not correct"); return !0 } return 0 === e[0] && e[1] === (1 << t) - 1 } } class DeviceGrayCS extends ColorSpace { constructor() { super("DeviceGray", 1) } getRgbItem(e, t, i, a) { const s = 255 * e[t]; i[a] = i[a + 1] = i[a + 2] = s } getRgbBuffer(e, t, i, a, s, r, n) { const o = 255 / ((1 << r) - 1); let g = t, c = s; for (let t = 0; t < i; ++t) { const t = o * e[g++]; a[c++] = t; a[c++] = t; a[c++] = t; c += n } } getOutputLength(e, t) { return e * (3 + t) } } class DeviceRgbCS extends ColorSpace { constructor() { super("DeviceRGB", 3) } getRgbItem(e, t, i, a) { i[a] = 255 * e[t]; i[a + 1] = 255 * e[t + 1]; i[a + 2] = 255 * e[t + 2] } getRgbBuffer(e, t, i, a, s, r, n) { if (8 === r && 0 === n) { a.set(e.subarray(t, t + 3 * i), s); return } const o = 255 / ((1 << r) - 1); let g = t, c = s; for (let t = 0; t < i; ++t) { a[c++] = o * e[g++]; a[c++] = o * e[g++]; a[c++] = o * e[g++]; c += n } } getOutputLength(e, t) { return e * (3 + t) / 3 | 0 } isPassthrough(e) { return 8 === e } } class DeviceCmykCS extends ColorSpace { constructor() { super("DeviceCMYK", 4) } #t(e, t, i, a, s) { const r = e[t] * i, n = e[t + 1] * i, o = e[t + 2] * i, g = e[t + 3] * i; a[s] = 255 + r * (-4.387332384609988 * r + 54.48615194189176 * n + 18.82290502165302 * o + 212.25662451639585 * g - 285.2331026137004) + n * (1.7149763477362134 * n - 5.6096736904047315 * o + -17.873870861415444 * g - 5.497006427196366) + o * (-2.5217340131683033 * o - 21.248923337353073 * g + 17.5119270841813) + g * (-21.86122147463605 * g - 189.48180835922747); a[s + 1] = 255 + r * (8.841041422036149 * r + 60.118027045597366 * n + 6.871425592049007 * o + 31.159100130055922 * g - 79.2970844816548) + n * (-15.310361306967817 * n + 17.575251261109482 * o + 131.35250912493976 * g - 190.9453302588951) + o * (4.444339102852739 * o + 9.8632861493405 * g - 24.86741582555878) + g * (-20.737325471181034 * g - 187.80453709719578); a[s + 2] = 255 + r * (.8842522430003296 * r + 8.078677503112928 * n + 30.89978309703729 * o - .23883238689178934 * g - 14.183576799673286) + n * (10.49593273432072 * n + 63.02378494754052 * o + 50.606957656360734 * g - 112.23884253719248) + o * (.03296041114873217 * o + 115.60384449646641 * g - 193.58209356861505) + g * (-22.33816807309886 * g - 180.12613974708367) } getRgbItem(e, t, i, a) { this.#t(e, t, 1, i, a) } getRgbBuffer(e, t, i, a, s, r, n) { const o = 1 / ((1 << r) - 1); for (let r = 0; r < i; r++) { this.#t(e, t, o, a, s); t += 4; s += 3 + n } } getOutputLength(e, t) { return e / 4 * (3 + t) | 0 } } class CalGrayCS extends ColorSpace { constructor(e, t, i) { super("CalGray", 1); if (!e) throw new FormatError("WhitePoint missing - required for color space CalGray");[this.XW, this.YW, this.ZW] = e;[this.XB, this.YB, this.ZB] = t || [0, 0, 0]; this.G = i || 1; if (this.XW < 0 || this.ZW < 0 || 1 !== this.YW) throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`); if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { info(`Invalid BlackPoint for ${this.name}, falling back to default.`); this.XB = this.YB = this.ZB = 0 } 0 === this.XB && 0 === this.YB && 0 === this.ZB || warn(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ZB: ${this.ZB}, only default values are supported.`); if (this.G < 1) { info(`Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`); this.G = 1 } } #t(e, t, i, a, s) { const r = (e[t] * s) ** this.G, n = this.YW * r, o = Math.max(295.8 * n ** .3333333333333333 - 40.8, 0); i[a] = o; i[a + 1] = o; i[a + 2] = o } getRgbItem(e, t, i, a) { this.#t(e, t, i, a, 1) } getRgbBuffer(e, t, i, a, s, r, n) { const o = 1 / ((1 << r) - 1); for (let r = 0; r < i; ++r) { this.#t(e, t, a, s, o); t += 1; s += 3 + n } } getOutputLength(e, t) { return e * (3 + t) } } class CalRGBCS extends ColorSpace { static #i = new Float32Array([.8951, .2664, -.1614, -.7502, 1.7135, .0367, .0389, -.0685, 1.0296]); static #a = new Float32Array([.9869929, -.1470543, .1599627, .4323053, .5183603, .0492912, -.0085287, .0400428, .9684867]); static #s = new Float32Array([3.2404542, -1.5371385, -.4985314, -.969266, 1.8760108, .041556, .0556434, -.2040259, 1.0572252]); static #r = new Float32Array([1, 1, 1]); static #n = new Float32Array(3); static #o = new Float32Array(3); static #g = new Float32Array(3); static #I = (24 / 116) ** 3 / 8; constructor(e, t, i, a) { super("CalRGB", 3); if (!e) throw new FormatError("WhitePoint missing - required for color space CalRGB"); const [s, r, n] = this.whitePoint = e, [o, g, c] = this.blackPoint = t || new Float32Array(3);[this.GR, this.GG, this.GB] = i || new Float32Array([1, 1, 1]);[this.MXA, this.MYA, this.MZA, this.MXB, this.MYB, this.MZB, this.MXC, this.MYC, this.MZC] = a || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); if (s < 0 || n < 0 || 1 !== r) throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`); if (o < 0 || g < 0 || c < 0) { info(`Invalid BlackPoint for ${this.name} [${o}, ${g}, ${c}], falling back to default.`); this.blackPoint = new Float32Array(3) } if (this.GR < 0 || this.GG < 0 || this.GB < 0) { info(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ${this.name}, falling back to default.`); this.GR = this.GG = this.GB = 1 } } #c(e, t, i) { i[0] = e[0] * t[0] + e[1] * t[1] + e[2] * t[2]; i[1] = e[3] * t[0] + e[4] * t[1] + e[5] * t[2]; i[2] = e[6] * t[0] + e[7] * t[1] + e[8] * t[2] } #h(e, t, i) { i[0] = 1 * t[0] / e[0]; i[1] = 1 * t[1] / e[1]; i[2] = 1 * t[2] / e[2] } #l(e, t, i) { i[0] = .95047 * t[0] / e[0]; i[1] = 1 * t[1] / e[1]; i[2] = 1.08883 * t[2] / e[2] } #C(e) { return e <= .0031308 ? this.#B(0, 1, 12.92 * e) : e >= .99554525 ? 1 : this.#B(0, 1, 1.055 * e ** (1 / 2.4) - .055) } #B(e, t, i) { return Math.max(e, Math.min(t, i)) } #Q(e) { return e < 0 ? -this.#Q(-e) : e > 8 ? ((e + 16) / 116) ** 3 : e * CalRGBCS.#I } #E(e, t, i) { if (0 === e[0] && 0 === e[1] && 0 === e[2]) { i[0] = t[0]; i[1] = t[1]; i[2] = t[2]; return } const a = this.#Q(0), s = (1 - a) / (1 - this.#Q(e[0])), r = 1 - s, n = (1 - a) / (1 - this.#Q(e[1])), o = 1 - n, g = (1 - a) / (1 - this.#Q(e[2])), c = 1 - g; i[0] = t[0] * s + r; i[1] = t[1] * n + o; i[2] = t[2] * g + c } #u(e, t, i) { if (1 === e[0] && 1 === e[2]) { i[0] = t[0]; i[1] = t[1]; i[2] = t[2]; return } const a = i; this.#c(CalRGBCS.#i, t, a); const s = CalRGBCS.#n; this.#h(e, a, s); this.#c(CalRGBCS.#a, s, i) } #d(e, t, i) { const a = i; this.#c(CalRGBCS.#i, t, a); const s = CalRGBCS.#n; this.#l(e, a, s); this.#c(CalRGBCS.#a, s, i) } #t(e, t, i, a, s) { const r = this.#B(0, 1, e[t] * s), n = this.#B(0, 1, e[t + 1] * s), o = this.#B(0, 1, e[t + 2] * s), g = 1 === r ? 1 : r ** this.GR, c = 1 === n ? 1 : n ** this.GG, h = 1 === o ? 1 : o ** this.GB, l = this.MXA * g + this.MXB * c + this.MXC * h, C = this.MYA * g + this.MYB * c + this.MYC * h, Q = this.MZA * g + this.MZB * c + this.MZC * h, E = CalRGBCS.#o; E[0] = l; E[1] = C; E[2] = Q; const u = CalRGBCS.#g; this.#u(this.whitePoint, E, u); const d = CalRGBCS.#o; this.#E(this.blackPoint, u, d); const f = CalRGBCS.#g; this.#d(CalRGBCS.#r, d, f); const p = CalRGBCS.#o; this.#c(CalRGBCS.#s, f, p); i[a] = 255 * this.#C(p[0]); i[a + 1] = 255 * this.#C(p[1]); i[a + 2] = 255 * this.#C(p[2]) } getRgbItem(e, t, i, a) { this.#t(e, t, i, a, 1) } getRgbBuffer(e, t, i, a, s, r, n) { const o = 1 / ((1 << r) - 1); for (let r = 0; r < i; ++r) { this.#t(e, t, a, s, o); t += 3; s += 3 + n } } getOutputLength(e, t) { return e * (3 + t) / 3 | 0 } } class LabCS extends ColorSpace { constructor(e, t, i) { super("Lab", 3); if (!e) throw new FormatError("WhitePoint missing - required for color space Lab");[this.XW, this.YW, this.ZW] = e;[this.amin, this.amax, this.bmin, this.bmax] = i || [-100, 100, -100, 100];[this.XB, this.YB, this.ZB] = t || [0, 0, 0]; if (this.XW < 0 || this.ZW < 0 || 1 !== this.YW) throw new FormatError("Invalid WhitePoint components, no fallback available"); if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { info("Invalid BlackPoint, falling back to default"); this.XB = this.YB = this.ZB = 0 } if (this.amin > this.amax || this.bmin > this.bmax) { info("Invalid Range, falling back to defaults"); this.amin = -100; this.amax = 100; this.bmin = -100; this.bmax = 100 } } #f(e) { return e >= 6 / 29 ? e ** 3 : 108 / 841 * (e - 4 / 29) } #p(e, t, i, a) { return i + e * (a - i) / t } #t(e, t, i, a, s) { let r = e[t], n = e[t + 1], o = e[t + 2]; if (!1 !== i) { r = this.#p(r, i, 0, 100); n = this.#p(n, i, this.amin, this.amax); o = this.#p(o, i, this.bmin, this.bmax) } n > this.amax ? n = this.amax : n < this.amin && (n = this.amin); o > this.bmax ? o = this.bmax : o < this.bmin && (o = this.bmin); const g = (r + 16) / 116, c = g + n / 500, h = g - o / 200, l = this.XW * this.#f(c), C = this.YW * this.#f(g), Q = this.ZW * this.#f(h); let E, u, d; if (this.ZW < 1) { E = 3.1339 * l + -1.617 * C + -.4906 * Q; u = -.9785 * l + 1.916 * C + .0333 * Q; d = .072 * l + -.229 * C + 1.4057 * Q } else { E = 3.2406 * l + -1.5372 * C + -.4986 * Q; u = -.9689 * l + 1.8758 * C + .0415 * Q; d = .0557 * l + -.204 * C + 1.057 * Q } a[s] = 255 * Math.sqrt(E); a[s + 1] = 255 * Math.sqrt(u); a[s + 2] = 255 * Math.sqrt(d) } getRgbItem(e, t, i, a) { this.#t(e, t, !1, i, a) } getRgbBuffer(e, t, i, a, s, r, n) { const o = (1 << r) - 1; for (let r = 0; r < i; r++) { this.#t(e, t, o, a, s); t += 3; s += 3 + n } } getOutputLength(e, t) { return e * (3 + t) / 3 | 0 } isDefaultDecode(e, t) { return !0 } get usesZeroToOneRange() { return shadow(this, "usesZeroToOneRange", !1) } } function hexToInt(e, t) { let i = 0; for (let a = 0; a <= t; a++)i = i << 8 | e[a]; return i >>> 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, i) { let a = 0; for (let s = i; s >= 0; s--) { a += e[s] + t[s]; e[s] = 255 & a; a >>= 8 } } function incHex(e, t) { let i = 1; for (let a = t; a >= 0 && i > 0; a--) { i += e[a]; e[a] = 255 & i; i >>= 8 } } const kt = 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 i = this.readByte(); if (i < 0) throw new FormatError("unexpected EOF in bcmap"); e = !(128 & i); t = t << 7 | 127 & i } 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 i; const a = this.tmpBuf; let s = 0; do { const e = this.readByte(); if (e < 0) throw new FormatError("unexpected EOF in bcmap"); i = !(128 & e); a[s++] = 127 & e } while (!i); let r = t, n = 0, o = 0; for (; r >= 0;) { for (; o < 8 && a.length > 0;) { n |= a[--s] << o; o += 7 } e[r] = 255 & n; r--; n >>= 8; o -= 8 } } readHexSigned(e, t) { this.readHexNumber(e, t); const i = 1 & e[t] ? 255 : 0; let a = 0; for (let s = 0; s <= t; s++) { a = (1 & a) << 8 | e[s]; e[s] = a >> 1 ^ i } } readString() { const e = this.readNumber(), t = new Array(e); for (let i = 0; i < e; i++)t[i] = this.readNumber(); return String.fromCharCode(...t) } } class BinaryCMapReader { async process(e, t, i) { const a = new BinaryCMapStream(e), s = a.readByte(); t.vertical = !!(1 & s); let r = null; const n = new Uint8Array(kt), o = new Uint8Array(kt), g = new Uint8Array(kt), c = new Uint8Array(kt), h = new Uint8Array(kt); let l, C; for (; (C = a.readByte()) >= 0;) { const e = C >> 5; if (7 === e) { switch (31 & C) { case 0: a.readString(); break; case 1: r = a.readString() }continue } const i = !!(16 & C), s = 15 & C; if (s + 1 > kt) throw new Error("BinaryCMapReader.process: Invalid dataSize."); const Q = 1, E = a.readNumber(); switch (e) { case 0: a.readHex(n, s); a.readHexNumber(o, s); addHex(o, n, s); t.addCodespaceRange(s + 1, hexToInt(n, s), hexToInt(o, s)); for (let e = 1; e < E; e++) { incHex(o, s); a.readHexNumber(n, s); addHex(n, o, s); a.readHexNumber(o, s); addHex(o, n, s); t.addCodespaceRange(s + 1, hexToInt(n, s), hexToInt(o, s)) } break; case 1: a.readHex(n, s); a.readHexNumber(o, s); addHex(o, n, s); a.readNumber(); for (let e = 1; e < E; e++) { incHex(o, s); a.readHexNumber(n, s); addHex(n, o, s); a.readHexNumber(o, s); addHex(o, n, s); a.readNumber() } break; case 2: a.readHex(g, s); l = a.readNumber(); t.mapOne(hexToInt(g, s), l); for (let e = 1; e < E; e++) { incHex(g, s); if (!i) { a.readHexNumber(h, s); addHex(g, h, s) } l = a.readSigned() + (l + 1); t.mapOne(hexToInt(g, s), l) } break; case 3: a.readHex(n, s); a.readHexNumber(o, s); addHex(o, n, s); l = a.readNumber(); t.mapCidRange(hexToInt(n, s), hexToInt(o, s), l); for (let e = 1; e < E; e++) { incHex(o, s); if (i) n.set(o); else { a.readHexNumber(n, s); addHex(n, o, s) } a.readHexNumber(o, s); addHex(o, n, s); l = a.readNumber(); t.mapCidRange(hexToInt(n, s), hexToInt(o, s), l) } break; case 4: a.readHex(g, Q); a.readHex(c, s); t.mapOne(hexToInt(g, Q), hexToStr(c, s)); for (let e = 1; e < E; e++) { incHex(g, Q); if (!i) { a.readHexNumber(h, Q); addHex(g, h, Q) } incHex(c, s); a.readHexSigned(h, s); addHex(c, h, s); t.mapOne(hexToInt(g, Q), hexToStr(c, s)) } break; case 5: a.readHex(n, Q); a.readHexNumber(o, Q); addHex(o, n, Q); a.readHex(c, s); t.mapBfRange(hexToInt(n, Q), hexToInt(o, Q), hexToStr(c, s)); for (let e = 1; e < E; e++) { incHex(o, Q); if (i) n.set(o); else { a.readHexNumber(n, Q); addHex(n, o, Q) } a.readHexNumber(o, Q); addHex(o, n, Q); a.readHex(c, s); t.mapBfRange(hexToInt(n, Q), hexToInt(o, Q), hexToStr(c, s)) } break; default: throw new Error(`BinaryCMapReader.process - unknown type: ${e}`) } } return r ? i(r) : t } } const Rt = new Uint8Array(0); class DecodeStream extends BaseStream { constructor(e) { super(); this._rawMinBufferLength = e || 0; this.pos = 0; this.bufferLength = 0; this.eof = !1; this.buffer = Rt; this.minBufferLength = 512; if (e) for (; this.minBufferLength < e;)this.minBufferLength *= 2 } get isEmpty() { for (; !this.eof && 0 === this.bufferLength;)this.readBlock(); return 0 === this.bufferLength } ensureBuffer(e) { const t = this.buffer; if (e <= t.byteLength) return t; let i = this.minBufferLength; for (; i < e;)i *= 2; const a = new Uint8Array(i); a.set(t); return this.buffer = a } getByte() { const e = this.pos; for (; this.bufferLength <= e;) { if (this.eof) return -1; this.readBlock() } return this.buffer[this.pos++] } getBytes(e, t = !1) { const i = this.pos; let a; if (e) { this.ensureBuffer(i + e); a = i + e; for (; !this.eof && this.bufferLength < a;)this.readBlock(t); const s = this.bufferLength; a > s && (a = s) } else { for (; !this.eof;)this.readBlock(t); a = this.bufferLength } this.pos = a; return this.buffer.subarray(i, a) } reset() { this.pos = 0 } makeSubStream(e, t, i = null) { if (void 0 === t) for (; !this.eof;)this.readBlock(); else { const i = e + t; for (; this.bufferLength <= i && !this.eof;)this.readBlock() } return new Stream(this.buffer, e, t, i) } getBaseStreams() { return this.str ? this.str.getBaseStreams() : null } } class StreamsSequenceStream extends DecodeStream { constructor(e, t = null) { let i = 0; for (const t of e) i += t instanceof DecodeStream ? t._rawMinBufferLength : t.length; super(i); this.streams = e; this._onError = t } readBlock() { const e = this.streams; if (0 === e.length) { this.eof = !0; return } const t = e.shift(); let i; try { i = t.getBytes() } catch (e) { if (this._onError) { this._onError(e, t.dict?.objId); return } throw e } const a = this.bufferLength, s = a + i.length; this.ensureBuffer(s).set(i, a); this.bufferLength = s } getBaseStreams() { const e = []; for (const t of this.streams) { const i = t.getBaseStreams(); i && e.push(...i) } return e.length > 0 ? e : null } } class Ascii85Stream extends 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 (; isWhiteSpace(t);)t = e.getByte(); if (-1 === t || 126 === t) { this.eof = !0; return } const i = this.bufferLength; let a, s; if (122 === t) { a = this.ensureBuffer(i + 4); for (s = 0; s < 4; ++s)a[i + s] = 0; this.bufferLength += 4 } else { const r = this.input; r[0] = t; for (s = 1; s < 5; ++s) { t = e.getByte(); for (; isWhiteSpace(t);)t = e.getByte(); r[s] = t; if (-1 === t || 126 === t) break } a = this.ensureBuffer(i + s - 1); this.bufferLength += s - 1; if (s < 5) { for (; s < 5; ++s)r[s] = 117; this.eof = !0 } let n = 0; for (s = 0; s < 5; ++s)n = 85 * n + (r[s] - 33); for (s = 3; s >= 0; --s) { a[i + s] = 255 & n; n >>= 8 } } } } class AsciiHexStream extends 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, i = this.ensureBuffer(this.bufferLength + t); let a = this.bufferLength, s = 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 (s < 0) s = e; else { i[a++] = s << 4 | e; s = -1 } } if (s >= 0 && this.eof) { i[a++] = s << 4; s = -1 } this.firstDigit = s; this.bufferLength = a } } const Nt = -1, Gt = [[-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]], xt = [[-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]], Mt = [[-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]], Ut = [[-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]], Lt = [[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]], Jt = [[-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]]; 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 i; for (; 0 === (i = this._lookBits(12));)this._eatBits(1); 1 === i && 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, i = this.columns; let a, s, r, n, o; if (0 === this.outputBits) { this.rowsDone && (this.eof = !0); if (this.eof) return -1; this.err = !1; let r, o, g; if (this.nextLine2D) { for (n = 0; t[n] < i; ++n)e[n] = t[n]; e[n++] = i; e[n] = i; t[0] = 0; this.codingPos = 0; a = 0; s = 0; for (; t[this.codingPos] < i;) { r = this._getTwoDimCode(); switch (r) { case 0: this._addPixels(e[a + 1], s); e[a + 1] < i && (a += 2); break; case 1: r = o = 0; if (s) { do { r += g = this._getBlackCode() } while (g >= 64); do { o += g = this._getWhiteCode() } while (g >= 64) } else { do { r += g = this._getWhiteCode() } while (g >= 64); do { o += g = this._getBlackCode() } while (g >= 64) } this._addPixels(t[this.codingPos] + r, s); t[this.codingPos] < i && this._addPixels(t[this.codingPos] + o, 1 ^ s); for (; e[a] <= t[this.codingPos] && e[a] < i;)a += 2; break; case 7: this._addPixels(e[a] + 3, s); s ^= 1; if (t[this.codingPos] < i) { ++a; for (; e[a] <= t[this.codingPos] && e[a] < i;)a += 2 } break; case 5: this._addPixels(e[a] + 2, s); s ^= 1; if (t[this.codingPos] < i) { ++a; for (; e[a] <= t[this.codingPos] && e[a] < i;)a += 2 } break; case 3: this._addPixels(e[a] + 1, s); s ^= 1; if (t[this.codingPos] < i) { ++a; for (; e[a] <= t[this.codingPos] && e[a] < i;)a += 2 } break; case 2: this._addPixels(e[a], s); s ^= 1; if (t[this.codingPos] < i) { ++a; for (; e[a] <= t[this.codingPos] && e[a] < i;)a += 2 } break; case 8: this._addPixelsNeg(e[a] - 3, s); s ^= 1; if (t[this.codingPos] < i) { a > 0 ? --a : ++a; for (; e[a] <= t[this.codingPos] && e[a] < i;)a += 2 } break; case 6: this._addPixelsNeg(e[a] - 2, s); s ^= 1; if (t[this.codingPos] < i) { a > 0 ? --a : ++a; for (; e[a] <= t[this.codingPos] && e[a] < i;)a += 2 } break; case 4: this._addPixelsNeg(e[a] - 1, s); s ^= 1; if (t[this.codingPos] < i) { a > 0 ? --a : ++a; for (; e[a] <= t[this.codingPos] && e[a] < i;)a += 2 } break; case Nt: this._addPixels(i, 0); this.eof = !0; break; default: info("bad 2d code"); this._addPixels(i, 0); this.err = !0 } } } else { t[0] = 0; this.codingPos = 0; s = 0; for (; t[this.codingPos] < i;) { r = 0; if (s) do { r += g = this._getBlackCode() } while (g >= 64); else do { r += g = this._getWhiteCode() } while (g >= 64); this._addPixels(t[this.codingPos] + r, s); s ^= 1 } } let c = !1; this.byteAlign && (this.inputBits &= -8); if (this.eoblock || this.row !== this.rows - 1) { r = this._lookBits(12); if (this.eoline) for (; r !== Nt && 1 !== r;) { this._eatBits(1); r = this._lookBits(12) } else for (; 0 === r;) { this._eatBits(1); r = this._lookBits(12) } if (1 === r) { this._eatBits(12); c = !0 } else r === Nt && (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 && c && this.byteAlign) { r = this._lookBits(12); if (1 === r) { this._eatBits(12); if (this.encoding > 0) { this._lookBits(1); this._eatBits(1) } if (this.encoding >= 0) for (n = 0; n < 4; ++n) { r = this._lookBits(12); 1 !== r && info("bad rtc code: " + r); this._eatBits(12); if (this.encoding > 0) { this._lookBits(1); this._eatBits(1) } } this.eof = !0 } } else if (this.err && this.eoline) { for (; ;) { r = this._lookBits(13); if (r === Nt) { this.eof = !0; return -1 } if (r >> 1 == 1) break; this._eatBits(1) } this._eatBits(12); if (this.encoding > 0) { this._eatBits(1); this.nextLine2D = !(1 & r) } } this.outputBits = t[0] > 0 ? t[this.codingPos = 0] : t[this.codingPos = 1]; this.row++ } if (this.outputBits >= 8) { o = 1 & this.codingPos ? 0 : 255; this.outputBits -= 8; if (0 === this.outputBits && t[this.codingPos] < i) { this.codingPos++; this.outputBits = t[this.codingPos] - t[this.codingPos - 1] } } else { r = 8; o = 0; do { if ("number" != typeof this.outputBits) throw new FormatError('Invalid /CCITTFaxDecode data, "outputBits" must be a number.'); if (this.outputBits > r) { o <<= r; 1 & this.codingPos || (o |= 255 >> 8 - r); this.outputBits -= r; r = 0 } else { o <<= this.outputBits; 1 & this.codingPos || (o |= 255 >> 8 - this.outputBits); r -= this.outputBits; this.outputBits = 0; if (t[this.codingPos] < i) { this.codingPos++; this.outputBits = t[this.codingPos] - t[this.codingPos - 1] } else if (r > 0) { o <<= r; r = 0 } } } while (r) } this.black && (o ^= 255); return o } _addPixels(e, t) { const i = this.codingLine; let a = this.codingPos; if (e > i[a]) { if (e > this.columns) { info("row is wrong length"); this.err = !0; e = this.columns } 1 & a ^ t && ++a; i[a] = e } this.codingPos = a } _addPixelsNeg(e, t) { const i = this.codingLine; let a = this.codingPos; if (e > i[a]) { if (e > this.columns) { info("row is wrong length"); this.err = !0; e = this.columns } 1 & a ^ t && ++a; i[a] = e } else if (e < i[a]) { if (e < 0) { info("invalid code"); this.err = !0; e = 0 } for (; a > 0 && e < i[a - 1];)--a; i[a] = e } this.codingPos = a } _findTableCode(e, t, i, a) { const s = a || 0; for (let a = e; a <= t; ++a) { let e = this._lookBits(a); if (e === Nt) return [!0, 1, !1]; a < t && (e <<= t - a); if (!s || e >= s) { const t = i[e - s]; if (t[0] === a) { this._eatBits(a); return [!0, t[1], !0] } } } return [!1, 0, !1] } _getTwoDimCode() { let e, t = 0; if (this.eoblock) { t = this._lookBits(7); e = Gt[t]; if (e?.[0] > 0) { this._eatBits(e[0]); return e[1] } } else { const e = this._findTableCode(1, 7, Gt); if (e[0] && e[2]) return e[1] } info("Bad two dim code"); return Nt } _getWhiteCode() { let e, t = 0; if (this.eoblock) { t = this._lookBits(12); if (t === Nt) return 1; e = t >> 5 == 0 ? xt[t] : Mt[t >> 3]; if (e[0] > 0) { this._eatBits(e[0]); return e[1] } } else { let e = this._findTableCode(1, 9, Mt); if (e[0]) return e[1]; e = this._findTableCode(11, 12, xt); if (e[0]) return e[1] } info("bad white code"); this._eatBits(1); return 1 } _getBlackCode() { let e, t; if (this.eoblock) { e = this._lookBits(13); if (e === Nt) return 1; t = e >> 7 == 0 ? Ut[e] : e >> 9 == 0 && e >> 7 != 0 ? Lt[(e >> 1) - 64] : Jt[e >> 7]; if (t[0] > 0) { this._eatBits(t[0]); return t[1] } } else { let e = this._findTableCode(2, 6, Jt); if (e[0]) return e[1]; e = this._findTableCode(7, 12, Lt, 64); if (e[0]) return e[1]; e = this._findTableCode(10, 13, Ut); if (e[0]) return e[1] } info("bad black code"); this._eatBits(1); return 1 } _lookBits(e) { let t; for (; this.inputBits < e;) { if (-1 === (t = this.source.next())) return 0 === this.inputBits ? Nt : this.inputBuf << e - this.inputBits & 65535 >> 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) } } class CCITTFaxStream extends DecodeStream { constructor(e, t, i) { super(t); this.str = e; this.dict = e.dict; i instanceof Dict || (i = Dict.empty); const a = { next: () => e.getByte() }; this.ccittFaxDecoder = new CCITTFaxDecoder(a, { K: i.get("K"), EndOfLine: i.get("EndOfLine"), EncodedByteAlign: i.get("EncodedByteAlign"), Columns: i.get("Columns"), Rows: i.get("Rows"), EndOfBlock: i.get("EndOfBlock"), BlackIs1: i.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 } } } const Ht = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]), Yt = 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]), vt = 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]), Kt = [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], Tt = [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 DecodeStream { constructor(e, t) { super(t); this.str = e; this.dict = e.dict; const i = e.getByte(), a = e.getByte(); if (-1 === i || -1 === a) throw new FormatError(`Invalid header in flate stream: ${i}, ${a}`); if (8 != (15 & i)) throw new FormatError(`Unknown compression method in flate stream: ${i}, ${a}`); if (((i << 8) + a) % 31 != 0) throw new FormatError(`Bad FCHECK in flate stream: ${i}, ${a}`); if (32 & a) throw new FormatError(`FDICT bit set in flate stream: ${i}, ${a}`); this.codeSize = 0; this.codeBuf = 0 } getBits(e) { const t = this.str; let i, a = this.codeSize, s = this.codeBuf; for (; a < e;) { if (-1 === (i = t.getByte())) throw new FormatError("Bad encoding in flate stream"); s |= i << a; a += 8 } i = s & (1 << e) - 1; this.codeBuf = s >> e; this.codeSize = a -= e; return i } getCode(e) { const t = this.str, i = e[0], a = e[1]; let s, r = this.codeSize, n = this.codeBuf; for (; r < a && -1 !== (s = t.getByte());) { n |= s << r; r += 8 } const o = i[n & (1 << a) - 1], g = o >> 16, c = 65535 & o; if (g < 1 || r < g) throw new FormatError("Bad encoding in flate stream"); this.codeBuf = n >> g; this.codeSize = r - g; return c } generateHuffmanTable(e) { const t = e.length; let i, a = 0; for (i = 0; i < t; ++i)e[i] > a && (a = e[i]); const s = 1 << a, r = new Int32Array(s); for (let n = 1, o = 0, g = 2; n <= a; ++n, o <<= 1, g <<= 1)for (let a = 0; a < t; ++a)if (e[a] === n) { let e = 0, t = o; for (i = 0; i < n; ++i) { e = e << 1 | 1 & t; t >>= 1 } for (i = e; i < s; i += g)r[i] = n << 16 | a; ++o } return [r, a] } #m(e) { info(e); this.eof = !0 } readBlock() { let e, t; const i = this.str; let a, s, r = this.getBits(3); 1 & r && (this.eof = !0); r >>= 1; if (0 === r) { let t; if (-1 === (t = i.getByte())) { this.#m("Bad block header in flate stream"); return } let a = t; if (-1 === (t = i.getByte())) { this.#m("Bad block header in flate stream"); return } a |= t << 8; if (-1 === (t = i.getByte())) { this.#m("Bad block header in flate stream"); return } let s = t; if (-1 === (t = i.getByte())) { this.#m("Bad block header in flate stream"); return } s |= t << 8; if (s !== (65535 & ~a) && (0 !== a || 0 !== s)) throw new FormatError("Bad uncompressed block length in flate stream"); this.codeBuf = 0; this.codeSize = 0; const r = this.bufferLength, n = r + a; e = this.ensureBuffer(n); this.bufferLength = n; if (0 === a) -1 === i.peekByte() && (this.eof = !0); else { const t = i.getBytes(a); e.set(t, r); t.length < a && (this.eof = !0) } return } if (1 === r) { a = Kt; s = Tt } else { if (2 !== r) throw new FormatError("Unknown block type in flate stream"); { const e = this.getBits(5) + 257, i = this.getBits(5) + 1, r = this.getBits(4) + 4, n = new Uint8Array(Ht.length); let o; for (o = 0; o < r; ++o)n[Ht[o]] = this.getBits(3); const g = this.generateHuffmanTable(n); t = 0; o = 0; const c = e + i, h = new Uint8Array(c); let l, C, Q; for (; o < c;) { const e = this.getCode(g); if (16 === e) { l = 2; C = 3; Q = t } else if (17 === e) { l = 3; C = 3; Q = t = 0 } else { if (18 !== e) { h[o++] = t = e; continue } l = 7; C = 11; Q = t = 0 } let i = this.getBits(l) + C; for (; i-- > 0;)h[o++] = Q } a = this.generateHuffmanTable(h.subarray(0, e)); s = this.generateHuffmanTable(h.subarray(e, c)) } } e = this.buffer; let n = e ? e.length : 0, o = this.bufferLength; for (; ;) { let i = this.getCode(a); if (i < 256) { if (o + 1 >= n) { e = this.ensureBuffer(o + 1); n = e.length } e[o++] = i; continue } if (256 === i) { this.bufferLength = o; return } i -= 257; i = Yt[i]; let r = i >> 16; r > 0 && (r = this.getBits(r)); t = (65535 & i) + r; i = this.getCode(s); i = vt[i]; r = i >> 16; r > 0 && (r = this.getBits(r)); const g = (65535 & i) + r; if (o + t >= n) { e = this.ensureBuffer(o + t); n = e.length } for (let i = 0; i < t; ++i, ++o)e[o] = e[o - g] } } } const qt = [{ 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 }]; class ArithmeticDecoder { constructor(e, t, i) { this.data = e; this.bp = t; this.dataEnd = i; 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 += t < this.dataEnd ? e[t] << 8 : 65280; this.ct = 8; this.bp = t } if (this.clow > 65535) { this.chigh += this.clow >> 16; this.clow &= 65535 } } readBit(e, t) { let i = e[t] >> 1, a = 1 & e[t]; const s = qt[i], r = s.qe; let n, o = this.a - r; if (this.chigh < r) if (o < r) { o = r; n = a; i = s.nmps } else { o = r; n = 1 ^ a; 1 === s.switchFlag && (a = n); i = s.nlps } else { this.chigh -= r; if (0 != (32768 & o)) { this.a = o; return a } if (o < r) { n = 1 ^ a; 1 === s.switchFlag && (a = n); i = s.nlps } else { n = a; i = s.nmps } } do { 0 === this.ct && this.byteIn(); o <<= 1; this.chigh = this.chigh << 1 & 65535 | this.clow >> 15 & 1; this.clow = this.clow << 1 & 65535; this.ct-- } while (0 == (32768 & o)); this.a = o; e[t] = i << 1 | a; return n } } class Jbig2Error extends rt { constructor(e) { super(e, "Jbig2Error") } } class ContextCache { getContexts(e) { return e in this ? this[e] : this[e] = new Int8Array(65536) } } class DecodingContext { constructor(e, t, i) { this.data = e; this.start = t; this.end = i } get decoder() { return shadow(this, "decoder", new ArithmeticDecoder(this.data, this.start, this.end)) } get contextCache() { return shadow(this, "contextCache", new ContextCache) } } const Ot = 2 ** 31 - 1, Pt = -(2 ** 31); function decodeInteger(e, t, i) { const a = e.getContexts(t); let s = 1; function readBits(e) { let t = 0; for (let r = 0; r < e; r++) { const e = i.readBit(a, s); s = s < 256 ? s << 1 | e : 511 & (s << 1 | e) | 256; t = t << 1 | e } return t >>> 0 } const r = readBits(1), n = 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 o; 0 === r ? o = n : n > 0 && (o = -n); return o >= Pt && o <= Ot ? o : null } function decodeIAID(e, t, i) { const a = e.getContexts("IAID"); let s = 1; for (let e = 0; e < i; e++) { s = s << 1 | t.readBit(a, s) } return i < 31 ? s & (1 << i) - 1 : 2147483647 & s } const Wt = ["SymbolDictionary", null, null, null, "IntermediateTextRegion", null, "ImmediateTextRegion", "ImmediateLosslessTextRegion", null, null, null, null, null, null, null, null, "PatternDictionary", null, null, null, "IntermediateHalftoneRegion", null, "ImmediateHalftoneRegion", "ImmediateLosslessHalftoneRegion", null, null, null, null, null, null, null, null, null, null, null, null, "IntermediateGenericRegion", null, "ImmediateGenericRegion", "ImmediateLosslessGenericRegion", "IntermediateGenericRefinementRegion", null, "ImmediateGenericRefinementRegion", "ImmediateLosslessGenericRefinementRegion", null, null, null, null, "PageInformation", "EndOfPage", "EndOfStripe", "EndOfFile", "Profiles", "Tables", null, null, null, null, null, null, null, null, "Extension"], Xt = [[{ x: -1, y: -2 }, { x: 0, y: -2 }, { x: 1, y: -2 }, { x: -2, y: -1 }, { x: -1, y: -1 }, { x: 0, y: -1 }, { x: 1, y: -1 }, { x: 2, y: -1 }, { x: -4, y: 0 }, { x: -3, y: 0 }, { x: -2, y: 0 }, { x: -1, y: 0 }], [{ x: -1, y: -2 }, { x: 0, y: -2 }, { x: 1, y: -2 }, { x: 2, y: -2 }, { x: -2, y: -1 }, { x: -1, y: -1 }, { x: 0, y: -1 }, { x: 1, y: -1 }, { x: 2, y: -1 }, { x: -3, y: 0 }, { x: -2, y: 0 }, { x: -1, y: 0 }], [{ x: -1, y: -2 }, { x: 0, y: -2 }, { x: 1, y: -2 }, { x: -2, y: -1 }, { x: -1, y: -1 }, { x: 0, y: -1 }, { x: 1, y: -1 }, { x: -2, y: 0 }, { x: -1, y: 0 }], [{ x: -3, y: -1 }, { x: -2, y: -1 }, { x: -1, y: -1 }, { x: 0, y: -1 }, { x: 1, y: -1 }, { x: -4, y: 0 }, { x: -3, y: 0 }, { x: -2, y: 0 }, { x: -1, y: 0 }]], jt = [{ coding: [{ x: 0, y: -1 }, { x: 1, y: -1 }, { x: -1, y: 0 }], reference: [{ x: 0, y: -1 }, { x: 1, y: -1 }, { x: -1, y: 0 }, { x: 0, y: 0 }, { x: 1, y: 0 }, { x: -1, y: 1 }, { x: 0, y: 1 }, { x: 1, y: 1 }] }, { coding: [{ x: -1, y: -1 }, { x: 0, y: -1 }, { x: 1, y: -1 }, { x: -1, y: 0 }], reference: [{ x: 0, y: -1 }, { x: -1, y: 0 }, { x: 0, y: 0 }, { x: 1, y: 0 }, { x: 0, y: 1 }, { x: 1, y: 1 }] }], Zt = [39717, 1941, 229, 405], Vt = [32, 8]; function decodeBitmap(e, t, i, a, s, r, n, o) { if (e) { return decodeMMRBitmap(new Reader(o.data, o.start, o.end), t, i, !1) } if (0 === a && !r && !s && 4 === n.length && 3 === n[0].x && -1 === n[0].y && -3 === n[1].x && -1 === n[1].y && 2 === n[2].x && -2 === n[2].y && -2 === n[3].x && -2 === n[3].y) return function decodeBitmapTemplate0(e, t, i) { const a = i.decoder, s = i.contextCache.getContexts("GB"), r = []; let n, o, g, c, h, l, C; for (o = 0; o < t; o++) { h = r[o] = new Uint8Array(e); l = o < 1 ? h : r[o - 1]; C = o < 2 ? h : r[o - 2]; n = C[0] << 13 | C[1] << 12 | C[2] << 11 | l[0] << 7 | l[1] << 6 | l[2] << 5 | l[3] << 4; for (g = 0; g < e; g++) { h[g] = c = a.readBit(s, n); n = (31735 & n) << 1 | (g + 3 < e ? C[g + 3] << 11 : 0) | (g + 4 < e ? l[g + 4] << 4 : 0) | c } } return r }(t, i, o); const g = !!r, c = Xt[a].concat(n); c.sort((function (e, t) { return e.y - t.y || e.x - t.x })); const h = c.length, l = new Int8Array(h), C = new Int8Array(h), Q = []; let E, u, d = 0, f = 0, p = 0, m = 0; for (u = 0; u < h; u++) { l[u] = c[u].x; C[u] = c[u].y; f = Math.min(f, c[u].x); p = Math.max(p, c[u].x); m = Math.min(m, c[u].y); u < h - 1 && c[u].y === c[u + 1].y && c[u].x === c[u + 1].x - 1 ? d |= 1 << h - 1 - u : Q.push(u) } const y = Q.length, w = new Int8Array(y), b = new Int8Array(y), D = new Uint16Array(y); for (E = 0; E < y; E++) { u = Q[E]; w[E] = c[u].x; b[E] = c[u].y; D[E] = 1 << h - 1 - u } const F = -f, S = -m, k = t - p, R = Zt[a]; let N = new Uint8Array(t); const G = [], x = o.decoder, M = o.contextCache.getContexts("GB"); let U, L, J, H, Y, v = 0, K = 0; for (let e = 0; e < i; e++) { if (s) { v ^= x.readBit(M, R); if (v) { G.push(N); continue } } N = new Uint8Array(N); G.push(N); for (U = 0; U < t; U++) { if (g && r[e][U]) { N[U] = 0; continue } if (U >= F && U < k && e >= S) { K = K << 1 & d; for (u = 0; u < y; u++) { L = e + b[u]; J = U + w[u]; H = G[L][J]; if (H) { H = D[u]; K |= H } } } else { K = 0; Y = h - 1; for (u = 0; u < h; u++, Y--) { J = U + l[u]; if (J >= 0 && J < t) { L = e + C[u]; if (L >= 0) { H = G[L][J]; H && (K |= H << Y) } } } } const i = x.readBit(M, K); N[U] = i } } return G } function decodeRefinement(e, t, i, a, s, r, n, o, g) { let c = jt[i].coding; 0 === i && (c = c.concat([o[0]])); const h = c.length, l = new Int32Array(h), C = new Int32Array(h); let Q; for (Q = 0; Q < h; Q++) { l[Q] = c[Q].x; C[Q] = c[Q].y } let E = jt[i].reference; 0 === i && (E = E.concat([o[1]])); const u = E.length, d = new Int32Array(u), f = new Int32Array(u); for (Q = 0; Q < u; Q++) { d[Q] = E[Q].x; f[Q] = E[Q].y } const p = a[0].length, m = a.length, y = Vt[i], w = [], b = g.decoder, D = g.contextCache.getContexts("GR"); let F = 0; for (let i = 0; i < t; i++) { if (n) { F ^= b.readBit(D, y); if (F) throw new Jbig2Error("prediction is not supported") } const t = new Uint8Array(e); w.push(t); for (let n = 0; n < e; n++) { let o, g, c = 0; for (Q = 0; Q < h; Q++) { o = i + C[Q]; g = n + l[Q]; o < 0 || g < 0 || g >= e ? c <<= 1 : c = c << 1 | w[o][g] } for (Q = 0; Q < u; Q++) { o = i + f[Q] - r; g = n + d[Q] - s; o < 0 || o >= m || g < 0 || g >= p ? c <<= 1 : c = c << 1 | a[o][g] } const E = b.readBit(D, c); t[n] = E } } return w } function decodeTextRegion(e, t, i, a, s, r, n, o, g, c, h, l, C, Q, E, u, d, f, p) { if (e && t) throw new Jbig2Error("refinement with Huffman is not supported"); const m = []; let y, w; for (y = 0; y < a; y++) { w = new Uint8Array(i); if (s) for (let e = 0; e < i; e++)w[e] = s; m.push(w) } const b = d.decoder, D = d.contextCache; let F = e ? -Q.tableDeltaT.decode(p) : -decodeInteger(D, "IADT", b), S = 0; y = 0; for (; y < r;) { F += e ? Q.tableDeltaT.decode(p) : decodeInteger(D, "IADT", b); S += e ? Q.tableFirstS.decode(p) : decodeInteger(D, "IAFS", b); let a = S; for (; ;) { let s = 0; n > 1 && (s = e ? p.readBits(f) : decodeInteger(D, "IAIT", b)); const r = n * F + s, S = e ? Q.symbolIDTable.decode(p) : decodeIAID(D, b, g), k = t && (e ? p.readBit() : decodeInteger(D, "IARI", b)); let R = o[S], N = R[0].length, G = R.length; if (k) { const e = decodeInteger(D, "IARDW", b), t = decodeInteger(D, "IARDH", b); N += e; G += t; R = decodeRefinement(N, G, E, R, (e >> 1) + decodeInteger(D, "IARDX", b), (t >> 1) + decodeInteger(D, "IARDY", b), !1, u, d) } let x = 0; c ? 1 & l ? x = G - 1 : a += G - 1 : l > 1 ? a += N - 1 : x = N - 1; const M = r - (1 & l ? 0 : G - 1), U = a - (2 & l ? N - 1 : 0); let L, J, H; if (c) for (L = 0; L < G; L++) { w = m[U + L]; if (!w) continue; H = R[L]; const e = Math.min(i - M, N); switch (C) { case 0: for (J = 0; J < e; J++)w[M + J] |= H[J]; break; case 2: for (J = 0; J < e; J++)w[M + J] ^= H[J]; break; default: throw new Jbig2Error(`operator ${C} is not supported`) } } else for (J = 0; J < G; J++) { w = m[M + J]; if (w) { H = R[J]; switch (C) { case 0: for (L = 0; L < N; L++)w[U + L] |= H[L]; break; case 2: for (L = 0; L < N; L++)w[U + L] ^= H[L]; break; default: throw new Jbig2Error(`operator ${C} is not supported`) } } } y++; const Y = e ? Q.tableDeltaS.decode(p) : decodeInteger(D, "IADS", b); if (null === Y) break; a += x + Y + h } } return m } function readSegmentHeader(e, t) { const i = {}; i.number = readUint32(e, t); const a = e[t + 4], s = 63 & a; if (!Wt[s]) throw new Jbig2Error("invalid segment type: " + s); i.type = s; i.typeName = Wt[s]; i.deferredNonRetain = !!(128 & a); const r = !!(64 & a), n = e[t + 5]; let o = n >> 5 & 7; const g = [31 & n]; let c = t + 6; if (7 === n) { o = 536870911 & readUint32(e, c - 1); c += 3; let t = o + 7 >> 3; g[0] = e[c++]; for (; --t > 0;)g.push(e[c++]) } else if (5 === n || 6 === n) throw new Jbig2Error("invalid referred-to flags"); i.retainBits = g; let h = 4; i.number <= 256 ? h = 1 : i.number <= 65536 && (h = 2); const l = []; let C, Q; for (C = 0; C < o; C++) { let t; t = 1 === h ? e[c] : 2 === h ? readUint16(e, c) : readUint32(e, c); l.push(t); c += h } i.referredTo = l; if (r) { i.pageAssociation = readUint32(e, c); c += 4 } else i.pageAssociation = e[c++]; i.length = readUint32(e, c); c += 4; if (4294967295 === i.length) { if (38 !== s) throw new Jbig2Error("invalid unknown segment length"); { const t = readRegionSegmentInformation(e, c), a = !!(1 & e[c + zt]), s = 6, r = new Uint8Array(s); if (!a) { r[0] = 255; r[1] = 172 } r[2] = t.height >>> 24 & 255; r[3] = t.height >> 16 & 255; r[4] = t.height >> 8 & 255; r[5] = 255 & t.height; for (C = c, Q = e.length; C < Q; C++) { let t = 0; for (; t < s && r[t] === e[C + t];)t++; if (t === s) { i.length = C + s; break } } if (4294967295 === i.length) throw new Jbig2Error("segment end was not found") } } i.headerEnd = c; return i } function readSegments(e, t, i, a) { const s = []; let r = i; for (; r < a;) { const i = readSegmentHeader(t, r); r = i.headerEnd; const a = { header: i, data: t }; if (!e.randomAccess) { a.start = r; r += i.length; a.end = r } s.push(a); if (51 === i.type) break } if (e.randomAccess) for (let e = 0, t = s.length; e < t; e++) { s[e].start = r; r += s[e].header.length; s[e].end = r } return s } function readRegionSegmentInformation(e, t) { return { width: readUint32(e, t), height: readUint32(e, t + 4), x: readUint32(e, t + 8), y: readUint32(e, t + 12), combinationOperator: 7 & e[t + 16] } } const zt = 17; function processSegment(e, t) { const i = e.header, a = e.data, s = e.end; let r, n, o, g, c = e.start; switch (i.type) { case 0: const e = {}, t = readUint16(a, c); e.huffman = !!(1 & t); e.refinement = !!(2 & t); e.huffmanDHSelector = t >> 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; c += 2; if (!e.huffman) { g = 0 === e.template ? 4 : 1; n = []; for (o = 0; o < g; o++) { n.push({ x: readInt8(a, c), y: readInt8(a, c + 1) }); c += 2 } e.at = n } if (e.refinement && !e.refinementTemplate) { n = []; for (o = 0; o < 2; o++) { n.push({ x: readInt8(a, c), y: readInt8(a, c + 1) }); c += 2 } e.refinementAt = n } e.numberOfExportedSymbols = readUint32(a, c); c += 4; e.numberOfNewSymbols = readUint32(a, c); c += 4; r = [e, i.number, i.referredTo, a, c, s]; break; case 6: case 7: const h = {}; h.info = readRegionSegmentInformation(a, c); c += zt; const l = readUint16(a, c); c += 2; h.huffman = !!(1 & l); h.refinement = !!(2 & l); h.logStripSize = l >> 2 & 3; h.stripSize = 1 << h.logStripSize; h.referenceCorner = l >> 4 & 3; h.transposed = !!(64 & l); h.combinationOperator = l >> 7 & 3; h.defaultPixelValue = l >> 9 & 1; h.dsOffset = l << 17 >> 27; h.refinementTemplate = l >> 15 & 1; if (h.huffman) { const e = readUint16(a, c); c += 2; h.huffmanFS = 3 & e; h.huffmanDS = e >> 2 & 3; h.huffmanDT = e >> 4 & 3; h.huffmanRefinementDW = e >> 6 & 3; h.huffmanRefinementDH = e >> 8 & 3; h.huffmanRefinementDX = e >> 10 & 3; h.huffmanRefinementDY = e >> 12 & 3; h.huffmanRefinementSizeSelector = !!(16384 & e) } if (h.refinement && !h.refinementTemplate) { n = []; for (o = 0; o < 2; o++) { n.push({ x: readInt8(a, c), y: readInt8(a, c + 1) }); c += 2 } h.refinementAt = n } h.numberOfSymbolInstances = readUint32(a, c); c += 4; r = [h, i.referredTo, a, c, s]; break; case 16: const C = {}, Q = a[c++]; C.mmr = !!(1 & Q); C.template = Q >> 1 & 3; C.patternWidth = a[c++]; C.patternHeight = a[c++]; C.maxPatternIndex = readUint32(a, c); c += 4; r = [C, i.number, a, c, s]; break; case 22: case 23: const E = {}; E.info = readRegionSegmentInformation(a, c); c += zt; const u = a[c++]; E.mmr = !!(1 & u); E.template = u >> 1 & 3; E.enableSkip = !!(8 & u); E.combinationOperator = u >> 4 & 7; E.defaultPixelValue = u >> 7 & 1; E.gridWidth = readUint32(a, c); c += 4; E.gridHeight = readUint32(a, c); c += 4; E.gridOffsetX = 4294967295 & readUint32(a, c); c += 4; E.gridOffsetY = 4294967295 & readUint32(a, c); c += 4; E.gridVectorX = readUint16(a, c); c += 2; E.gridVectorY = readUint16(a, c); c += 2; r = [E, i.referredTo, a, c, s]; break; case 38: case 39: const d = {}; d.info = readRegionSegmentInformation(a, c); c += zt; const f = a[c++]; d.mmr = !!(1 & f); d.template = f >> 1 & 3; d.prediction = !!(8 & f); if (!d.mmr) { g = 0 === d.template ? 4 : 1; n = []; for (o = 0; o < g; o++) { n.push({ x: readInt8(a, c), y: readInt8(a, c + 1) }); c += 2 } d.at = n } r = [d, a, c, s]; break; case 48: const p = { width: readUint32(a, c), height: readUint32(a, c + 4), resolutionX: readUint32(a, c + 8), resolutionY: readUint32(a, c + 12) }; 4294967295 === p.height && delete p.height; const m = a[c + 16]; readUint16(a, c + 17); p.lossless = !!(1 & m); p.refinement = !!(2 & m); p.defaultPixelValue = m >> 2 & 1; p.combinationOperator = m >> 3 & 3; p.requiresBuffer = !!(32 & m); p.combinationOperatorOverride = !!(64 & m); r = [p]; break; case 49: case 50: case 51: case 62: break; case 53: r = [i.number, a, c, s]; break; default: throw new Jbig2Error(`segment type ${i.typeName}(${i.type}) is not implemented`) }const h = "on" + i.typeName; h in t && t[h].apply(t, r) } function processSegments(e, t) { for (let i = 0, a = e.length; i < a; i++)processSegment(e[i], t) } class SimpleSegmentVisitor { onPageInformation(e) { this.currentPageInfo = e; const t = e.width + 7 >> 3, i = new Uint8ClampedArray(t * e.height); e.defaultPixelValue && i.fill(255); this.buffer = i } drawBitmap(e, t) { const i = this.currentPageInfo, a = e.width, s = e.height, r = i.width + 7 >> 3, n = i.combinationOperatorOverride ? e.combinationOperator : i.combinationOperator, o = this.buffer, g = 128 >> (7 & e.x); let c, h, l, C, Q = e.y * r + (e.x >> 3); switch (n) { case 0: for (c = 0; c < s; c++) { l = g; C = Q; for (h = 0; h < a; h++) { t[c][h] && (o[C] |= l); l >>= 1; if (!l) { l = 128; C++ } } Q += r } break; case 2: for (c = 0; c < s; c++) { l = g; C = Q; for (h = 0; h < a; h++) { t[c][h] && (o[C] ^= l); l >>= 1; if (!l) { l = 128; C++ } } Q += r } break; default: throw new Jbig2Error(`operator ${n} is not supported`) } } onImmediateGenericRegion(e, t, i, a) { const s = e.info, r = new DecodingContext(t, i, a), n = decodeBitmap(e.mmr, s.width, s.height, e.template, e.prediction, null, e.at, r); this.drawBitmap(s, n) } onImmediateLosslessGenericRegion() { this.onImmediateGenericRegion(...arguments) } onSymbolDictionary(e, t, i, a, s, r) { let n, o; if (e.huffman) { n = function getSymbolDictionaryHuffmanTables(e, t, i) { let a, s, r, n, o = 0; switch (e.huffmanDHSelector) { case 0: case 1: a = getStandardTable(e.huffmanDHSelector + 4); break; case 3: a = getCustomHuffmanTable(o, t, i); o++; break; default: throw new Jbig2Error("invalid Huffman DH selector") }switch (e.huffmanDWSelector) { case 0: case 1: s = getStandardTable(e.huffmanDWSelector + 2); break; case 3: s = getCustomHuffmanTable(o, t, i); o++; break; default: throw new Jbig2Error("invalid Huffman DW selector") }if (e.bitmapSizeSelector) { r = getCustomHuffmanTable(o, t, i); o++ } else r = getStandardTable(1); n = e.aggregationInstancesSelector ? getCustomHuffmanTable(o, t, i) : getStandardTable(1); return { tableDeltaHeight: a, tableDeltaWidth: s, tableBitmapSize: r, tableAggregateInstances: n } }(e, i, this.customTables); o = new Reader(a, s, r) } let g = this.symbols; g || (this.symbols = g = {}); const c = []; for (const e of i) { const t = g[e]; t && c.push(...t) } const h = new DecodingContext(a, s, r); g[t] = function decodeSymbolDictionary(e, t, i, a, s, r, n, o, g, c, h, l) { if (e && t) throw new Jbig2Error("symbol refinement with Huffman is not supported"); const C = []; let Q = 0, E = log2(i.length + a); const u = h.decoder, d = h.contextCache; let f, p; if (e) { f = getStandardTable(1); p = []; E = Math.max(E, 1) } for (; C.length < a;) { Q += e ? r.tableDeltaHeight.decode(l) : decodeInteger(d, "IADH", u); let a = 0, s = 0; const f = e ? p.length : 0; for (; ;) { const f = e ? r.tableDeltaWidth.decode(l) : decodeInteger(d, "IADW", u); if (null === f) break; a += f; s += a; let m; if (t) { const s = decodeInteger(d, "IAAI", u); if (s > 1) m = decodeTextRegion(e, t, a, Q, 0, s, 1, i.concat(C), E, 0, 0, 1, 0, r, g, c, h, 0, l); else { const e = decodeIAID(d, u, E), t = decodeInteger(d, "IARDX", u), s = decodeInteger(d, "IARDY", u); m = decodeRefinement(a, Q, g, e < i.length ? i[e] : C[e - i.length], t, s, !1, c, h) } C.push(m) } else if (e) p.push(a); else { m = decodeBitmap(!1, a, Q, n, !1, null, o, h); C.push(m) } } if (e && !t) { const e = r.tableBitmapSize.decode(l); l.byteAlign(); let t; if (0 === e) t = readUncompressedBitmap(l, s, Q); else { const i = l.end, a = l.position + e; l.end = a; t = decodeMMRBitmap(l, s, Q, !1); l.end = i; l.position = a } const i = p.length; if (f === i - 1) C.push(t); else { let e, a, s, r, n, o = 0; for (e = f; e < i; e++) { r = p[e]; s = o + r; n = []; for (a = 0; a < Q; a++)n.push(t[a].subarray(o, s)); C.push(n); o = s } } } } const m = [], y = []; let w, b, D = !1; const F = i.length + a; for (; y.length < F;) { let t = e ? f.decode(l) : decodeInteger(d, "IAEX", u); for (; t--;)y.push(D); D = !D } for (w = 0, b = i.length; w < b; w++)y[w] && m.push(i[w]); for (let e = 0; e < a; w++, e++)y[w] && m.push(C[e]); return m }(e.huffman, e.refinement, c, e.numberOfNewSymbols, e.numberOfExportedSymbols, n, e.template, e.at, e.refinementTemplate, e.refinementAt, h, o) } onImmediateTextRegion(e, t, i, a, s) { const r = e.info; let n, o; const g = this.symbols, c = []; for (const e of t) { const t = g[e]; t && c.push(...t) } const h = log2(c.length); if (e.huffman) { o = new Reader(i, a, s); n = function getTextRegionHuffmanTables(e, t, i, a, s) { const r = []; for (let e = 0; e <= 34; e++) { const t = s.readBits(4); r.push(new HuffmanLine([e, t, 0, 0])) } const n = new HuffmanTable(r, !1); r.length = 0; for (let e = 0; e < a;) { const t = n.decode(s); if (t >= 32) { let i, a, n; switch (t) { case 32: if (0 === e) throw new Jbig2Error("no previous value in symbol ID table"); a = s.readBits(2) + 3; i = r[e - 1].prefixLength; break; case 33: a = s.readBits(3) + 3; i = 0; break; case 34: a = s.readBits(7) + 11; i = 0; break; default: throw new Jbig2Error("invalid code length in symbol ID table") }for (n = 0; n < a; n++) { r.push(new HuffmanLine([e, i, 0, 0])); e++ } } else { r.push(new HuffmanLine([e, t, 0, 0])); e++ } } s.byteAlign(); const o = new HuffmanTable(r, !1); let g, c, h, l = 0; switch (e.huffmanFS) { case 0: case 1: g = getStandardTable(e.huffmanFS + 6); break; case 3: g = getCustomHuffmanTable(l, t, i); l++; break; default: throw new Jbig2Error("invalid Huffman FS selector") }switch (e.huffmanDS) { case 0: case 1: case 2: c = getStandardTable(e.huffmanDS + 8); break; case 3: c = getCustomHuffmanTable(l, t, i); l++; break; default: throw new Jbig2Error("invalid Huffman DS selector") }switch (e.huffmanDT) { case 0: case 1: case 2: h = getStandardTable(e.huffmanDT + 11); break; case 3: h = getCustomHuffmanTable(l, t, i); l++; break; default: throw new Jbig2Error("invalid Huffman DT selector") }if (e.refinement) throw new Jbig2Error("refinement with Huffman is not supported"); return { symbolIDTable: o, tableFirstS: g, tableDeltaS: c, tableDeltaT: h } }(e, t, this.customTables, c.length, o) } const l = new DecodingContext(i, a, s), C = decodeTextRegion(e.huffman, e.refinement, r.width, r.height, e.defaultPixelValue, e.numberOfSymbolInstances, e.stripSize, c, h, e.transposed, e.dsOffset, e.referenceCorner, e.combinationOperator, n, e.refinementTemplate, e.refinementAt, l, e.logStripSize, o); this.drawBitmap(r, C) } onImmediateLosslessTextRegion() { this.onImmediateTextRegion(...arguments) } onPatternDictionary(e, t, i, a, s) { let r = this.patterns; r || (this.patterns = r = {}); const n = new DecodingContext(i, a, s); r[t] = function decodePatternDictionary(e, t, i, a, s, r) { const n = []; if (!e) { n.push({ x: -t, y: 0 }); 0 === s && n.push({ x: -3, y: -1 }, { x: 2, y: -2 }, { x: -2, y: -2 }) } const o = decodeBitmap(e, (a + 1) * t, i, s, !1, null, n, r), g = []; for (let e = 0; e <= a; e++) { const a = [], s = t * e, r = s + t; for (let e = 0; e < i; e++)a.push(o[e].subarray(s, r)); g.push(a) } return g }(e.mmr, e.patternWidth, e.patternHeight, e.maxPatternIndex, e.template, n) } onImmediateHalftoneRegion(e, t, i, a, s) { const r = this.patterns[t[0]], n = e.info, o = new DecodingContext(i, a, s), g = function decodeHalftoneRegion(e, t, i, a, s, r, n, o, g, c, h, l, C, Q, E) { if (n) throw new Jbig2Error("skip is not supported"); if (0 !== o) throw new Jbig2Error(`operator "${o}" is not supported in halftone region`); const u = []; let d, f, p; for (d = 0; d < s; d++) { p = new Uint8Array(a); if (r) for (f = 0; f < a; f++)p[f] = r; u.push(p) } const m = t.length, y = t[0], w = y[0].length, b = y.length, D = log2(m), F = []; if (!e) { F.push({ x: i <= 1 ? 3 : 2, y: -1 }); 0 === i && F.push({ x: -3, y: -1 }, { x: 2, y: -2 }, { x: -2, y: -2 }) } const S = []; let k, R, N, G, x, M, U, L, J, H, Y; e && (k = new Reader(E.data, E.start, E.end)); for (d = D - 1; d >= 0; d--) { R = e ? decodeMMRBitmap(k, g, c, !0) : decodeBitmap(!1, g, c, i, !1, null, F, E); S[d] = R } for (N = 0; N < c; N++)for (G = 0; G < g; G++) { x = 0; M = 0; for (f = D - 1; f >= 0; f--) { x ^= S[f][N][G]; M |= x << f } U = t[M]; L = h + N * Q + G * C >> 8; J = l + N * C - G * Q >> 8; if (L >= 0 && L + w <= a && J >= 0 && J + b <= s) for (d = 0; d < b; d++) { Y = u[J + d]; H = U[d]; for (f = 0; f < w; f++)Y[L + f] |= H[f] } else { let e, t; for (d = 0; d < b; d++) { t = J + d; if (!(t < 0 || t >= s)) { Y = u[t]; H = U[d]; for (f = 0; f < w; f++) { e = L + f; e >= 0 && e < a && (Y[e] |= H[f]) } } } } } return u }(e.mmr, r, e.template, n.width, n.height, e.defaultPixelValue, e.enableSkip, e.combinationOperator, e.gridWidth, e.gridHeight, e.gridOffsetX, e.gridOffsetY, e.gridVectorX, e.gridVectorY, o); this.drawBitmap(n, g) } onImmediateLosslessHalftoneRegion() { this.onImmediateHalftoneRegion(...arguments) } onTables(e, t, i, a) { let s = this.customTables; s || (this.customTables = s = {}); s[e] = function decodeTablesSegment(e, t, i) { const a = e[t], s = 4294967295 & readUint32(e, t + 1), r = 4294967295 & readUint32(e, t + 5), n = new Reader(e, t + 9, i), o = 1 + (a >> 1 & 7), g = 1 + (a >> 4 & 7), c = []; let h, l, C = s; do { h = n.readBits(o); l = n.readBits(g); c.push(new HuffmanLine([C, h, l, 0])); C += 1 << l } while (C < r); h = n.readBits(o); c.push(new HuffmanLine([s - 1, h, 32, 0, "lower"])); h = n.readBits(o); c.push(new HuffmanLine([r, h, 32, 0])); if (1 & a) { h = n.readBits(o); c.push(new HuffmanLine([h, 0])) } return new HuffmanTable(c, !1) }(t, i, a) } } class HuffmanLine { constructor(e) { if (2 === e.length) { this.isOOB = !0; this.rangeLow = 0; this.prefixLength = e[0]; this.rangeLength = 0; this.prefixCode = e[1]; this.isLowerRange = !1 } else { this.isOOB = !1; this.rangeLow = e[0]; this.prefixLength = e[1]; this.rangeLength = e[2]; this.prefixCode = e[3]; this.isLowerRange = "lower" === e[4] } } } class HuffmanTreeNode { constructor(e) { this.children = []; if (e) { this.isLeaf = !0; this.rangeLength = e.rangeLength; this.rangeLow = e.rangeLow; this.isLowerRange = e.isLowerRange; this.isOOB = e.isOOB } else this.isLeaf = !1 } buildTree(e, t) { const i = e.prefixCode >> t & 1; if (t <= 0) this.children[i] = new HuffmanTreeNode(e); else { let a = this.children[i]; a || (this.children[i] = a = new HuffmanTreeNode(null)); a.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, i = e.length; t < i; t++) { const i = e[t]; i.prefixLength > 0 && this.rootNode.buildTree(i, i.prefixLength - 1) } } decode(e) { return this.rootNode.decodeNode(e) } assignPrefixCodes(e) { const t = e.length; let i = 0; for (let a = 0; a < t; a++)i = Math.max(i, e[a].prefixLength); const a = new Uint32Array(i + 1); for (let i = 0; i < t; i++)a[e[i].prefixLength]++; let s, r, n, o = 1, g = 0; a[0] = 0; for (; o <= i;) { g = g + a[o - 1] << 1; s = g; r = 0; for (; r < t;) { n = e[r]; if (n.prefixLength === o) { n.prefixCode = s; s++ } r++ } o++ } } } const _t = {}; function getStandardTable(e) { let t, i = _t[e]; if (i) return i; switch (e) { case 1: t = [[0, 1, 4, 0], [16, 2, 8, 2], [272, 3, 16, 6], [65808, 3, 32, 7]]; break; case 2: t = [[0, 1, 0, 0], [1, 2, 0, 2], [2, 3, 0, 6], [3, 4, 3, 14], [11, 5, 6, 30], [75, 6, 32, 62], [6, 63]]; break; case 3: t = [[-256, 8, 8, 254], [0, 1, 0, 0], [1, 2, 0, 2], [2, 3, 0, 6], [3, 4, 3, 14], [11, 5, 6, 30], [-257, 8, 32, 255, "lower"], [75, 7, 32, 126], [6, 62]]; break; case 4: t = [[1, 1, 0, 0], [2, 2, 0, 2], [3, 3, 0, 6], [4, 4, 3, 14], [12, 5, 6, 30], [76, 5, 32, 31]]; break; case 5: t = [[-255, 7, 8, 126], [1, 1, 0, 0], [2, 2, 0, 2], [3, 3, 0, 6], [4, 4, 3, 14], [12, 5, 6, 30], [-256, 7, 32, 127, "lower"], [76, 6, 32, 62]]; break; case 6: t = [[-2048, 5, 10, 28], [-1024, 4, 9, 8], [-512, 4, 8, 9], [-256, 4, 7, 10], [-128, 5, 6, 29], [-64, 5, 5, 30], [-32, 4, 5, 11], [0, 2, 7, 0], [128, 3, 7, 2], [256, 3, 8, 3], [512, 4, 9, 12], [1024, 4, 10, 13], [-2049, 6, 32, 62, "lower"], [2048, 6, 32, 63]]; break; case 7: t = [[-1024, 4, 9, 8], [-512, 3, 8, 0], [-256, 4, 7, 9], [-128, 5, 6, 26], [-64, 5, 5, 27], [-32, 4, 5, 10], [0, 4, 5, 11], [32, 5, 5, 28], [64, 5, 6, 29], [128, 4, 7, 12], [256, 3, 8, 1], [512, 3, 9, 2], [1024, 3, 10, 3], [-1025, 5, 32, 30, "lower"], [2048, 5, 32, 31]]; break; case 8: t = [[-15, 8, 3, 252], [-7, 9, 1, 508], [-5, 8, 1, 253], [-3, 9, 0, 509], [-2, 7, 0, 124], [-1, 4, 0, 10], [0, 2, 1, 0], [2, 5, 0, 26], [3, 6, 0, 58], [4, 3, 4, 4], [20, 6, 1, 59], [22, 4, 4, 11], [38, 4, 5, 12], [70, 5, 6, 27], [134, 5, 7, 28], [262, 6, 7, 60], [390, 7, 8, 125], [646, 6, 10, 61], [-16, 9, 32, 510, "lower"], [1670, 9, 32, 511], [2, 1]]; break; case 9: t = [[-31, 8, 4, 252], [-15, 9, 2, 508], [-11, 8, 2, 253], [-7, 9, 1, 509], [-5, 7, 1, 124], [-3, 4, 1, 10], [-1, 3, 1, 2], [1, 3, 1, 3], [3, 5, 1, 26], [5, 6, 1, 58], [7, 3, 5, 4], [39, 6, 2, 59], [43, 4, 5, 11], [75, 4, 6, 12], [139, 5, 7, 27], [267, 5, 8, 28], [523, 6, 8, 60], [779, 7, 9, 125], [1291, 6, 11, 61], [-32, 9, 32, 510, "lower"], [3339, 9, 32, 511], [2, 0]]; break; case 10: t = [[-21, 7, 4, 122], [-5, 8, 0, 252], [-4, 7, 0, 123], [-3, 5, 0, 24], [-2, 2, 2, 0], [2, 5, 0, 25], [3, 6, 0, 54], [4, 7, 0, 124], [5, 8, 0, 253], [6, 2, 6, 1], [70, 5, 5, 26], [102, 6, 5, 55], [134, 6, 6, 56], [198, 6, 7, 57], [326, 6, 8, 58], [582, 6, 9, 59], [1094, 6, 10, 60], [2118, 7, 11, 125], [-22, 8, 32, 254, "lower"], [4166, 8, 32, 255], [2, 2]]; break; case 11: t = [[1, 1, 0, 0], [2, 2, 1, 2], [4, 4, 0, 12], [5, 4, 1, 13], [7, 5, 1, 28], [9, 5, 2, 29], [13, 6, 2, 60], [17, 7, 2, 122], [21, 7, 3, 123], [29, 7, 4, 124], [45, 7, 5, 125], [77, 7, 6, 126], [141, 7, 32, 127]]; break; case 12: t = [[1, 1, 0, 0], [2, 2, 0, 2], [3, 3, 1, 6], [5, 5, 0, 28], [6, 5, 1, 29], [8, 6, 1, 60], [10, 7, 0, 122], [11, 7, 1, 123], [13, 7, 2, 124], [17, 7, 3, 125], [25, 7, 4, 126], [41, 8, 5, 254], [73, 8, 32, 255]]; break; case 13: t = [[1, 1, 0, 0], [2, 3, 0, 4], [3, 4, 0, 12], [4, 5, 0, 28], [5, 4, 1, 13], [7, 3, 3, 5], [15, 6, 1, 58], [17, 6, 2, 59], [21, 6, 3, 60], [29, 6, 4, 61], [45, 6, 5, 62], [77, 7, 6, 126], [141, 7, 32, 127]]; break; case 14: t = [[-2, 3, 0, 4], [-1, 3, 0, 5], [0, 1, 0, 0], [1, 3, 0, 6], [2, 3, 0, 7]]; break; case 15: t = [[-24, 7, 4, 124], [-8, 6, 2, 60], [-4, 5, 1, 28], [-2, 4, 0, 12], [-1, 3, 0, 4], [0, 1, 0, 0], [1, 3, 0, 5], [2, 4, 0, 13], [3, 5, 1, 29], [5, 6, 2, 61], [9, 7, 4, 125], [-25, 7, 32, 126, "lower"], [25, 7, 32, 127]]; break; default: throw new Jbig2Error(`standard table B.${e} does not exist`) }for (let e = 0, i = t.length; e < i; e++)t[e] = new HuffmanLine(t[e]); i = new HuffmanTable(t, !0); _t[e] = i; return i } class Reader { constructor(e, t, i) { this.data = e; this.start = t; this.end = i; this.position = t; this.shift = -1; this.currentByte = 0 } readBit() { if (this.shift < 0) { if (this.position >= 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, i = 0; for (t = e - 1; t >= 0; t--)i |= this.readBit() << t; return i } byteAlign() { this.shift = -1 } next() { return this.position >= this.end ? -1 : this.data[this.position++] } } function getCustomHuffmanTable(e, t, i) { let a = 0; for (let s = 0, r = t.length; s < r; s++) { const r = i[t[s]]; if (r) { if (e === a) return r; a++ } } throw new Jbig2Error("can't find custom Huffman table") } function readUncompressedBitmap(e, t, i) { const a = []; for (let s = 0; s < i; s++) { const i = new Uint8Array(t); a.push(i); for (let a = 0; a < t; a++)i[a] = e.readBit(); e.byteAlign() } return a } function decodeMMRBitmap(e, t, i, a) { const s = new CCITTFaxDecoder(e, { K: -1, Columns: t, Rows: i, BlackIs1: !0, EndOfBlock: a }), r = []; let n, o = !1; for (let e = 0; e < i; e++) { const e = new Uint8Array(t); r.push(e); let i = -1; for (let a = 0; a < t; a++) { if (i < 0) { n = s.readNextChar(); if (-1 === n) { n = 0; o = !0 } i = 7 } e[a] = n >> i & 1; i-- } } if (a && !o) { const e = 5; for (let t = 0; t < e && -1 !== s.readNextChar(); t++); } return r } class Jbig2Image { parseChunks(e) { return function parseJbig2Chunks(e) { const t = new SimpleSegmentVisitor; for (let i = 0, a = e.length; i < a; i++) { const a = e[i]; processSegments(readSegments({}, a.data, a.start, a.end), t) } return t.buffer }(e) } parse(e) { throw new Error("Not implemented: Jbig2Image.parse") } } class Jbig2Stream extends DecodeStream { constructor(e, t, i) { super(t); this.stream = e; this.dict = e.dict; this.maybeLength = t; this.params = i } get bytes() { return shadow(this, "bytes", this.stream.getBytes(this.maybeLength)) } ensureBuffer(e) { } readBlock() { if (this.eof) return; const e = new Jbig2Image, t = []; if (this.params instanceof Dict) { const e = this.params.get("JBIG2Globals"); if (e instanceof BaseStream) { const i = e.getBytes(); t.push({ data: i, start: 0, end: i.length }) } } t.push({ data: this.bytes, start: 0, end: this.bytes.length }); const i = e.parseChunks(t), a = i.length; for (let e = 0; e < a; e++)i[e] ^= 255; this.buffer = i; this.bufferLength = a; this.eof = !0 } } function convertToRGBA(e) { switch (e.kind) { case b: return convertBlackAndWhiteToRGBA(e); case D: return function convertRGBToRGBA({ src: e, srcPos: t = 0, dest: i, destPos: a = 0, width: s, height: r }) { let n = 0; const o = e.length >> 2, g = new Uint32Array(e.buffer, t, o); if (FeatureTest.isLittleEndian) { for (; n < o - 2; n += 3, a += 4) { const e = g[n], t = g[n + 1], s = g[n + 2]; i[a] = 4278190080 | e; i[a + 1] = e >>> 24 | t << 8 | 4278190080; i[a + 2] = t >>> 16 | s << 16 | 4278190080; i[a + 3] = s >>> 8 | 4278190080 } for (let t = 4 * n, s = e.length; t < s; t += 3)i[a++] = e[t] | e[t + 1] << 8 | e[t + 2] << 16 | 4278190080 } else { for (; n < o - 2; n += 3, a += 4) { const e = g[n], t = g[n + 1], s = g[n + 2]; i[a] = 255 | e; i[a + 1] = e << 24 | t >>> 8 | 255; i[a + 2] = t << 16 | s >>> 16 | 255; i[a + 3] = s << 8 | 255 } for (let t = 4 * n, s = e.length; t < s; t += 3)i[a++] = e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | 255 } return { srcPos: t, destPos: a } }(e) }return null } function convertBlackAndWhiteToRGBA({ src: e, srcPos: t = 0, dest: i, width: a, height: s, nonBlackColor: r = 4294967295, inverseDecode: n = !1 }) { const o = FeatureTest.isLittleEndian ? 4278190080 : 255, [g, c] = n ? [r, o] : [o, r], h = a >> 3, l = 7 & a, C = e.length; i = new Uint32Array(i.buffer); let Q = 0; for (let a = 0; a < s; a++) { for (const a = t + h; t < a; t++) { const a = t < C ? e[t] : 255; i[Q++] = 128 & a ? c : g; i[Q++] = 64 & a ? c : g; i[Q++] = 32 & a ? c : g; i[Q++] = 16 & a ? c : g; i[Q++] = 8 & a ? c : g; i[Q++] = 4 & a ? c : g; i[Q++] = 2 & a ? c : g; i[Q++] = 1 & a ? c : g } if (0 === l) continue; const a = t < C ? e[t++] : 255; for (let e = 0; e < l; e++)i[Q++] = a & 1 << 7 - e ? c : g } return { srcPos: t, destPos: Q } } class JpegError extends rt { constructor(e) { super(e, "JpegError") } } class DNLMarkerError extends rt { constructor(e, t) { super(e, "DNLMarkerError"); this.scanLines = t } } class EOIMarkerError extends rt { constructor(e) { super(e, "EOIMarkerError") } } const $t = 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]), Ai = 4017, ei = 799, ti = 3406, ii = 2276, ai = 1567, si = 3784, ri = 5793, ni = 2896; function buildHuffmanTable(e, t) { let i, a, s = 0, r = 16; for (; r > 0 && !e[r - 1];)r--; const n = [{ children: [], index: 0 }]; let o, g = n[0]; for (i = 0; i < r; i++) { for (a = 0; a < e[i]; a++) { g = n.pop(); g.children[g.index] = t[s]; for (; g.index > 0;)g = n.pop(); g.index++; n.push(g); for (; n.length <= i;) { n.push(o = { children: [], index: 0 }); g.children[g.index] = o.children; g = o } s++ } if (i + 1 < r) { n.push(o = { children: [], index: 0 }); g.children[g.index] = o.children; g = o } } return n[0].children } function getBlockBufferOffset(e, t, i) { return 64 * ((e.blocksPerLine + 1) * t + i) } function decodeScan(e, t, i, a, s, r, n, o, g, c = !1) { const h = i.mcusPerLine, l = i.progressive, C = t; let Q = 0, E = 0; function readBit() { if (E > 0) { E--; return Q >> E & 1 } Q = e[t++]; if (255 === Q) { const a = e[t++]; if (a) { if (220 === a && c) { const a = readUint16(e, t += 2); t += 2; if (a > 0 && a !== i.scanLines) throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data", a) } else if (217 === a) { if (c) { const e = p * (8 === i.precision ? 8 : 0); if (e > 0 && Math.round(i.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 ${(Q << 8 | a).toString(16)}`) } } E = 7; return Q >>> 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 << e - 1 ? t : t + (-1 << e) + 1 } let u = 0; let d, f = 0; let p = 0; function decodeMcu(e, t, i, a, s) { const r = i % h; p = (i / h | 0) * e.v + a; const n = r * e.h + s; t(e, getBlockBufferOffset(e, p, n)) } function decodeBlock(e, t, i) { p = i / e.blocksPerLine | 0; const a = i % e.blocksPerLine; t(e, getBlockBufferOffset(e, p, a)) } const m = a.length; let y, w, b, D, F, S; S = l ? 0 === r ? 0 === o ? function decodeDCFirst(e, t) { const i = decodeHuffman(e.huffmanTableDC), a = 0 === i ? 0 : receiveAndExtend(i) << g; e.blockData[t] = e.pred += a } : function decodeDCSuccessive(e, t) { e.blockData[t] |= readBit() << g } : 0 === o ? function decodeACFirst(e, t) { if (u > 0) { u--; return } let i = r; const a = n; for (; i <= a;) { const a = decodeHuffman(e.huffmanTableAC), s = 15 & a, r = a >> 4; if (0 === s) { if (r < 15) { u = receive(r) + (1 << r) - 1; break } i += 16; continue } i += r; const n = $t[i]; e.blockData[t + n] = receiveAndExtend(s) * (1 << g); i++ } } : function decodeACSuccessive(e, t) { let i = r; const a = n; let s, o, c = 0; for (; i <= a;) { const a = t + $t[i], r = e.blockData[a] < 0 ? -1 : 1; switch (f) { case 0: o = decodeHuffman(e.huffmanTableAC); s = 15 & o; c = o >> 4; if (0 === s) if (c < 15) { u = receive(c) + (1 << c); f = 4 } else { c = 16; f = 1 } else { if (1 !== s) throw new JpegError("invalid ACn encoding"); d = receiveAndExtend(s); f = c ? 2 : 3 } continue; case 1: case 2: if (e.blockData[a]) e.blockData[a] += r * (readBit() << g); else { c--; 0 === c && (f = 2 === f ? 3 : 0) } break; case 3: if (e.blockData[a]) e.blockData[a] += r * (readBit() << g); else { e.blockData[a] = d << g; f = 0 } break; case 4: e.blockData[a] && (e.blockData[a] += r * (readBit() << g)) }i++ } if (4 === f) { u--; 0 === u && (f = 0) } } : function decodeBaseline(e, t) { const i = decodeHuffman(e.huffmanTableDC), a = 0 === i ? 0 : receiveAndExtend(i); e.blockData[t] = e.pred += a; let s = 1; for (; s < 64;) { const i = decodeHuffman(e.huffmanTableAC), a = 15 & i, r = i >> 4; if (0 === a) { if (r < 15) break; s += 16; continue } s += r; const n = $t[s]; e.blockData[t + n] = receiveAndExtend(a); s++ } }; let k, R = 0; const N = 1 === m ? a[0].blocksPerLine * a[0].blocksPerColumn : h * i.mcusPerColumn; let G, x; for (; R <= N;) { const i = s ? Math.min(N - R, s) : N; if (i > 0) { for (w = 0; w < m; w++)a[w].pred = 0; u = 0; if (1 === m) { y = a[0]; for (F = 0; F < i; F++) { decodeBlock(y, S, R); R++ } } else for (F = 0; F < i; F++) { for (w = 0; w < m; w++) { y = a[w]; G = y.h; x = y.v; for (b = 0; b < x; b++)for (D = 0; D < G; D++)decodeMcu(y, S, R, b, D) } R++ } } E = 0; k = findNextFileMarker(e, t); if (!k) break; if (k.invalid) { warn(`decodeScan - ${i > 0 ? "unexpected" : "excessive"} MCU data, current marker is: ${k.invalid}`); t = k.offset } if (!(k.marker >= 65488 && k.marker <= 65495)) break; t += 2 } return t - C } function quantizeAndInverse(e, t, i) { const a = e.quantizationTable, s = e.blockData; let r, n, o, g, c, h, l, C, Q, E, u, d, f, p, m, y, w; if (!a) throw new JpegError("missing required Quantization Table."); for (let e = 0; e < 64; e += 8) { Q = s[t + e]; E = s[t + e + 1]; u = s[t + e + 2]; d = s[t + e + 3]; f = s[t + e + 4]; p = s[t + e + 5]; m = s[t + e + 6]; y = s[t + e + 7]; Q *= a[e]; if (0 != (E | u | d | f | p | m | y)) { E *= a[e + 1]; u *= a[e + 2]; d *= a[e + 3]; f *= a[e + 4]; p *= a[e + 5]; m *= a[e + 6]; y *= a[e + 7]; r = ri * Q + 128 >> 8; n = ri * f + 128 >> 8; o = u; g = m; c = ni * (E - y) + 128 >> 8; C = ni * (E + y) + 128 >> 8; h = d << 4; l = p << 4; r = r + n + 1 >> 1; n = r - n; w = o * si + g * ai + 128 >> 8; o = o * ai - g * si + 128 >> 8; g = w; c = c + l + 1 >> 1; l = c - l; C = C + h + 1 >> 1; h = C - h; r = r + g + 1 >> 1; g = r - g; n = n + o + 1 >> 1; o = n - o; w = c * ii + C * ti + 2048 >> 12; c = c * ti - C * ii + 2048 >> 12; C = w; w = h * ei + l * Ai + 2048 >> 12; h = h * Ai - l * ei + 2048 >> 12; l = w; i[e] = r + C; i[e + 7] = r - C; i[e + 1] = n + l; i[e + 6] = n - l; i[e + 2] = o + h; i[e + 5] = o - h; i[e + 3] = g + c; i[e + 4] = g - c } else { w = ri * Q + 512 >> 10; i[e] = w; i[e + 1] = w; i[e + 2] = w; i[e + 3] = w; i[e + 4] = w; i[e + 5] = w; i[e + 6] = w; i[e + 7] = w } } for (let e = 0; e < 8; ++e) { Q = i[e]; E = i[e + 8]; u = i[e + 16]; d = i[e + 24]; f = i[e + 32]; p = i[e + 40]; m = i[e + 48]; y = i[e + 56]; if (0 != (E | u | d | f | p | m | y)) { r = ri * Q + 2048 >> 12; n = ri * f + 2048 >> 12; o = u; g = m; c = ni * (E - y) + 2048 >> 12; C = ni * (E + y) + 2048 >> 12; h = d; l = p; r = 4112 + (r + n + 1 >> 1); n = r - n; w = o * si + g * ai + 2048 >> 12; o = o * ai - g * si + 2048 >> 12; g = w; c = c + l + 1 >> 1; l = c - l; C = C + h + 1 >> 1; h = C - h; r = r + g + 1 >> 1; g = r - g; n = n + o + 1 >> 1; o = n - o; w = c * ii + C * ti + 2048 >> 12; c = c * ti - C * ii + 2048 >> 12; C = w; w = h * ei + l * Ai + 2048 >> 12; h = h * Ai - l * ei + 2048 >> 12; l = w; Q = r + C; y = r - C; E = n + l; m = n - l; u = o + h; p = o - h; d = g + c; f = g - c; Q < 16 ? Q = 0 : Q >= 4080 ? Q = 255 : Q >>= 4; E < 16 ? E = 0 : E >= 4080 ? E = 255 : E >>= 4; u < 16 ? u = 0 : u >= 4080 ? u = 255 : u >>= 4; d < 16 ? d = 0 : d >= 4080 ? d = 255 : d >>= 4; f < 16 ? f = 0 : f >= 4080 ? f = 255 : f >>= 4; p < 16 ? p = 0 : p >= 4080 ? p = 255 : p >>= 4; m < 16 ? m = 0 : m >= 4080 ? m = 255 : m >>= 4; y < 16 ? y = 0 : y >= 4080 ? y = 255 : y >>= 4; s[t + e] = Q; s[t + e + 8] = E; s[t + e + 16] = u; s[t + e + 24] = d; s[t + e + 32] = f; s[t + e + 40] = p; s[t + e + 48] = m; s[t + e + 56] = y } else { w = ri * Q + 8192 >> 14; w = w < -2040 ? 0 : w >= 2024 ? 255 : w + 2056 >> 4; s[t + e] = w; s[t + e + 8] = w; s[t + e + 16] = w; s[t + e + 24] = w; s[t + e + 32] = w; s[t + e + 40] = w; s[t + e + 48] = w; s[t + e + 56] = w } } } function buildComponentData(e, t) { const i = t.blocksPerLine, a = t.blocksPerColumn, s = new Int16Array(64); for (let e = 0; e < a; e++)for (let a = 0; a < i; a++) { quantizeAndInverse(t, getBlockBufferOffset(t, e, a), s) } return t.blockData } function findNextFileMarker(e, t, i = t) { const a = e.length - 1; let s = i < t ? i : t; if (t >= a) return null; const r = readUint16(e, t); if (r >= 65472 && r <= 65534) return { invalid: null, marker: r, offset: t }; let n = readUint16(e, s); for (; !(n >= 65472 && n <= 65534);) { if (++s >= a) return null; n = readUint16(e, s) } return { invalid: r.toString(16), marker: n, offset: s } } class JpegImage { constructor({ decodeTransform: e = null, colorTransform: t = -1 } = {}) { this._decodeTransform = e; this._colorTransform = t } parse(e, { dnlScanLines: t = null } = {}) { function readDataBlock() { const t = readUint16(e, s); s += 2; let i = s + t - 2; const a = findNextFileMarker(e, i, s); if (a?.invalid) { warn("readDataBlock - incorrect length, current marker is: " + a.invalid); i = a.offset } const r = e.subarray(s, i); s += r.length; return r } function prepareComponents(e) { const t = Math.ceil(e.samplesPerLine / 8 / e.maxH), i = Math.ceil(e.scanLines / 8 / e.maxV); for (const a of e.components) { const s = Math.ceil(Math.ceil(e.samplesPerLine / 8) * a.h / e.maxH), r = Math.ceil(Math.ceil(e.scanLines / 8) * a.v / e.maxV), n = t * a.h, o = 64 * (i * a.v) * (n + 1); a.blockData = new Int16Array(o); a.blocksPerLine = s; a.blocksPerColumn = r } e.mcusPerLine = t; e.mcusPerColumn = i } let i, a, s = 0, r = null, n = null, o = 0; const g = [], c = [], h = []; let l = readUint16(e, s); s += 2; if (65496 !== l) throw new JpegError("SOI not found"); l = readUint16(e, s); s += 2; A: for (; 65497 !== l;) { let C, Q, E; switch (l) { 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 u = readDataBlock(); 65504 === l && 74 === u[0] && 70 === u[1] && 73 === u[2] && 70 === u[3] && 0 === u[4] && (r = { version: { major: u[5], minor: u[6] }, densityUnits: u[7], xDensity: u[8] << 8 | u[9], yDensity: u[10] << 8 | u[11], thumbWidth: u[12], thumbHeight: u[13], thumbData: u.subarray(14, 14 + 3 * u[12] * u[13]) }); 65518 === l && 65 === u[0] && 100 === u[1] && 111 === u[2] && 98 === u[3] && 101 === u[4] && (n = { version: u[5] << 8 | u[6], flags0: u[7] << 8 | u[8], flags1: u[9] << 8 | u[10], transformCode: u[11] }); break; case 65499: const d = readUint16(e, s); s += 2; const f = d + s - 2; let p; for (; s < f;) { const t = e[s++], i = new Uint16Array(64); if (t >> 4 == 0) for (Q = 0; Q < 64; Q++) { p = $t[Q]; i[p] = e[s++] } else { if (t >> 4 != 1) throw new JpegError("DQT - invalid table spec"); for (Q = 0; Q < 64; Q++) { p = $t[Q]; i[p] = readUint16(e, s); s += 2 } } g[15 & t] = i } break; case 65472: case 65473: case 65474: if (i) throw new JpegError("Only single frame JPEGs supported"); s += 2; i = {}; i.extended = 65473 === l; i.progressive = 65474 === l; i.precision = e[s++]; const m = readUint16(e, s); s += 2; i.scanLines = t || m; i.samplesPerLine = readUint16(e, s); s += 2; i.components = []; i.componentIds = {}; const y = e[s++]; let w = 0, b = 0; for (C = 0; C < y; C++) { const t = e[s], a = e[s + 1] >> 4, r = 15 & e[s + 1]; w < a && (w = a); b < r && (b = r); const n = e[s + 2]; E = i.components.push({ h: a, v: r, quantizationId: n, quantizationTable: null }); i.componentIds[t] = E - 1; s += 3 } i.maxH = w; i.maxV = b; prepareComponents(i); break; case 65476: const D = readUint16(e, s); s += 2; for (C = 2; C < D;) { const t = e[s++], i = new Uint8Array(16); let a = 0; for (Q = 0; Q < 16; Q++, s++)a += i[Q] = e[s]; const r = new Uint8Array(a); for (Q = 0; Q < a; Q++, s++)r[Q] = e[s]; C += 17 + a; (t >> 4 == 0 ? h : c)[15 & t] = buildHuffmanTable(i, r) } break; case 65501: s += 2; a = readUint16(e, s); s += 2; break; case 65498: const F = 1 == ++o && !t; s += 2; const S = e[s++], k = []; for (C = 0; C < S; C++) { const t = e[s++], a = i.componentIds[t], r = i.components[a]; r.index = t; const n = e[s++]; r.huffmanTableDC = h[n >> 4]; r.huffmanTableAC = c[15 & n]; k.push(r) } const R = e[s++], N = e[s++], G = e[s++]; try { const t = decodeScan(e, s, i, k, a, R, N, G >> 4, 15 & G, F); s += t } catch (t) { if (t instanceof DNLMarkerError) { warn(`${t.message} -- attempting to re-parse the JPEG image.`); return this.parse(e, { dnlScanLines: t.scanLines }) } if (t instanceof EOIMarkerError) { warn(`${t.message} -- ignoring the rest of the image data.`); break A } throw t } break; case 65500: s += 4; break; case 65535: 255 !== e[s] && s--; break; default: const x = findNextFileMarker(e, s - 2, s - 3); if (x?.invalid) { warn("JpegImage.parse - unexpected data, current marker is: " + x.invalid); s = x.offset; break } if (!x || s >= e.length - 1) { warn("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9)."); break A } throw new JpegError("JpegImage.parse - unknown marker: " + l.toString(16)) }l = readUint16(e, s); s += 2 } if (!i) throw new JpegError("JpegImage.parse - no frame data found."); this.width = i.samplesPerLine; this.height = i.scanLines; this.jfif = r; this.adobe = n; this.components = []; for (const e of i.components) { const t = g[e.quantizationId]; t && (e.quantizationTable = t); this.components.push({ index: e.index, output: buildComponentData(0, e), scaleX: e.h / i.maxH, scaleY: e.v / i.maxV, blocksPerLine: e.blocksPerLine, blocksPerColumn: e.blocksPerColumn }) } this.numComponents = this.components.length } _getLinearizedBlockData(e, t, i = !1) { const a = this.width / e, s = this.height / t; let r, n, o, g, c, h, l, C, Q, E, u, d = 0; const f = this.components.length, p = e * t * f, m = new Uint8ClampedArray(p), y = new Uint32Array(e), w = 4294967288; let b; for (l = 0; l < f; l++) { r = this.components[l]; n = r.scaleX * a; o = r.scaleY * s; d = l; u = r.output; g = r.blocksPerLine + 1 << 3; if (n !== b) { for (c = 0; c < e; c++) { C = 0 | c * n; y[c] = (C & w) << 3 | 7 & C } b = n } for (h = 0; h < t; h++) { C = 0 | h * o; E = g * (C & w) | (7 & C) << 3; for (c = 0; c < e; c++) { m[d] = u[E + y[c]]; d += f } } } let D = this._decodeTransform; i || 4 !== f || D || (D = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255])); if (D) for (l = 0; l < p;)for (C = 0, Q = 0; C < f; C++, l++, Q += 2)m[l] = (m[l] * D[Q] >> 8) + D[Q + 1]; return m } 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, i, a; for (let s = 0, r = e.length; s < r; s += 3) { t = e[s]; i = e[s + 1]; a = e[s + 2]; e[s] = t - 179.456 + 1.402 * a; e[s + 1] = t + 135.459 - .344 * i - .714 * a; e[s + 2] = t - 226.816 + 1.772 * i } return e } _convertYccToRgba(e, t) { for (let i = 0, a = 0, s = e.length; i < s; i += 3, a += 4) { const s = e[i], r = e[i + 1], n = e[i + 2]; t[a] = s - 179.456 + 1.402 * n; t[a + 1] = s + 135.459 - .344 * r - .714 * n; t[a + 2] = s - 226.816 + 1.772 * r; t[a + 3] = 255 } return t } _convertYcckToRgb(e) { let t, i, a, s, r = 0; for (let n = 0, o = e.length; n < o; n += 4) { t = e[n]; i = e[n + 1]; a = e[n + 2]; s = e[n + 3]; e[r++] = i * (-660635669420364e-19 * i + .000437130475926232 * a - 54080610064599e-18 * t + .00048449797120281 * s - .154362151871126) - 122.67195406894 + a * (-.000957964378445773 * a + .000817076911346625 * t - .00477271405408747 * s + 1.53380253221734) + t * (.000961250184130688 * t - .00266257332283933 * s + .48357088451265) + s * (-.000336197177618394 * s + .484791561490776); e[r++] = 107.268039397724 + i * (219927104525741e-19 * i - .000640992018297945 * a + .000659397001245577 * t + .000426105652938837 * s - .176491792462875) + a * (-.000778269941513683 * a + .00130872261408275 * t + .000770482631801132 * s - .151051492775562) + t * (.00126935368114843 * t - .00265090189010898 * s + .25802910206845) + s * (-.000318913117588328 * s - .213742400323665); e[r++] = i * (-.000570115196973677 * i - 263409051004589e-19 * a + .0020741088115012 * t - .00288260236853442 * s + .814272968359295) - 20.810012546947 + a * (-153496057440975e-19 * a - .000132689043961446 * t + .000560833691242812 * s - .195152027534049) + t * (.00174418132927582 * t - .00255243321439347 * s + .116935020465145) + s * (-.000343531996510555 * s + .24165260232407) } return e.subarray(0, r) } _convertYcckToRgba(e) { for (let t = 0, i = e.length; t < i; t += 4) { const i = e[t], a = e[t + 1], s = e[t + 2], r = e[t + 3]; e[t] = a * (-660635669420364e-19 * a + .000437130475926232 * s - 54080610064599e-18 * i + .00048449797120281 * r - .154362151871126) - 122.67195406894 + s * (-.000957964378445773 * s + .000817076911346625 * i - .00477271405408747 * r + 1.53380253221734) + i * (.000961250184130688 * i - .00266257332283933 * r + .48357088451265) + r * (-.000336197177618394 * r + .484791561490776); e[t + 1] = 107.268039397724 + a * (219927104525741e-19 * a - .000640992018297945 * s + .000659397001245577 * i + .000426105652938837 * r - .176491792462875) + s * (-.000778269941513683 * s + .00130872261408275 * i + .000770482631801132 * r - .151051492775562) + i * (.00126935368114843 * i - .00265090189010898 * r + .25802910206845) + r * (-.000318913117588328 * r - .213742400323665); e[t + 2] = a * (-.000570115196973677 * a - 263409051004589e-19 * s + .0020741088115012 * i - .00288260236853442 * r + .814272968359295) - 20.810012546947 + s * (-153496057440975e-19 * s - .000132689043961446 * i + .000560833691242812 * r - .195152027534049) + i * (.00174418132927582 * i - .00255243321439347 * r + .116935020465145) + r * (-.000343531996510555 * r + .24165260232407); e[t + 3] = 255 } return e } _convertYcckToCmyk(e) { let t, i, a; for (let s = 0, r = e.length; s < r; s += 4) { t = e[s]; i = e[s + 1]; a = e[s + 2]; e[s] = 434.456 - t - 1.402 * a; e[s + 1] = 119.541 - t + .344 * i + .714 * a; e[s + 2] = 481.816 - t - 1.772 * i } return e } _convertCmykToRgb(e) { let t, i, a, s, r = 0; for (let n = 0, o = e.length; n < o; n += 4) { t = e[n]; i = e[n + 1]; a = e[n + 2]; s = e[n + 3]; e[r++] = 255 + t * (-6747147073602441e-20 * t + .0008379262121013727 * i + .0002894718188643294 * a + .003264231057537806 * s - 1.1185611867203937) + i * (26374107616089405e-21 * i - 8626949158638572e-20 * a - .0002748769067499491 * s - .02155688794978967) + a * (-3878099212869363e-20 * a - .0003267808279485286 * s + .0686742238595345) - s * (.0003361971776183937 * s + .7430659151342254); e[r++] = 255 + t * (.00013596372813588848 * t + .000924537132573585 * i + .00010567359618683593 * a + .0004791864687436512 * s - .3109689587515875) + i * (-.00023545346108370344 * i + .0002702845253534714 * a + .0020200308977307156 * s - .7488052167015494) + a * (6834815998235662e-20 * a + .00015168452363460973 * s - .09751927774728933) - s * (.0003189131175883281 * s + .7364883807733168); e[r++] = 255 + t * (13598650411385307e-21 * t + .00012423956175490851 * i + .0004751985097583589 * a - 36729317476630422e-22 * s - .05562186980264034) + i * (.00016141380598724676 * i + .0009692239130725186 * a + .0007782692450036253 * s - .44015232367526463) + a * (5.068882914068769e-7 * a + .0017778369011375071 * s - .7591454649749609) - s * (.0003435319965105553 * s + .7063770186160144) } return e.subarray(0, r) } _convertCmykToRgba(e) { for (let t = 0, i = e.length; t < i; t += 4) { const i = e[t], a = e[t + 1], s = e[t + 2], r = e[t + 3]; e[t] = 255 + i * (-6747147073602441e-20 * i + .0008379262121013727 * a + .0002894718188643294 * s + .003264231057537806 * r - 1.1185611867203937) + a * (26374107616089405e-21 * a - 8626949158638572e-20 * s - .0002748769067499491 * r - .02155688794978967) + s * (-3878099212869363e-20 * s - .0003267808279485286 * r + .0686742238595345) - r * (.0003361971776183937 * r + .7430659151342254); e[t + 1] = 255 + i * (.00013596372813588848 * i + .000924537132573585 * a + .00010567359618683593 * s + .0004791864687436512 * r - .3109689587515875) + a * (-.00023545346108370344 * a + .0002702845253534714 * s + .0020200308977307156 * r - .7488052167015494) + s * (6834815998235662e-20 * s + .00015168452363460973 * r - .09751927774728933) - r * (.0003189131175883281 * r + .7364883807733168); e[t + 2] = 255 + i * (13598650411385307e-21 * i + .00012423956175490851 * a + .0004751985097583589 * s - 36729317476630422e-22 * r - .05562186980264034) + a * (.00016141380598724676 * a + .0009692239130725186 * s + .0007782692450036253 * r - .44015232367526463) + s * (5.068882914068769e-7 * s + .0017778369011375071 * r - .7591454649749609) - r * (.0003435319965105553 * r + .7063770186160144); e[t + 3] = 255 } return e } getData({ width: e, height: t, forceRGBA: i = !1, forceRGB: a = !1, isSourcePDF: s = !1 }) { if (this.numComponents > 4) throw new JpegError("Unsupported color mode"); const r = this._getLinearizedBlockData(e, t, s); if (1 === this.numComponents && (i || a)) { const e = r.length * (i ? 4 : 3), t = new Uint8ClampedArray(e); let a = 0; if (i) !function grayToRGBA(e, t) { if (FeatureTest.isLittleEndian) for (let i = 0, a = e.length; i < a; i++)t[i] = 65793 * e[i] | 4278190080; else for (let i = 0, a = e.length; i < a; i++)t[i] = 16843008 * e[i] | 255 }(r, new Uint32Array(t.buffer)); else for (const e of r) { t[a++] = e; t[a++] = e; t[a++] = e } return t } if (3 === this.numComponents && this._isColorConversionNeeded) { if (i) { const e = new Uint8ClampedArray(r.length / 3 * 4); return this._convertYccToRgba(r, e) } return this._convertYccToRgb(r) } if (4 === this.numComponents) { if (this._isColorConversionNeeded) return i ? this._convertYcckToRgba(r) : a ? this._convertYcckToRgb(r) : this._convertYcckToCmyk(r); if (i) return this._convertCmykToRgba(r); if (a) return this._convertCmykToRgb(r) } return r } } class JpegStream extends DecodeStream { constructor(e, t, i) { let a; for (; -1 !== (a = e.getByte());)if (255 === a) { e.skip(-1); break } super(t); this.stream = e; this.dict = e.dict; this.maybeLength = t; this.params = i } get bytes() { return 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 i = this.dict.get("BPC", "BitsPerComponent") || 8, a = t.length, s = new Int32Array(a); let r = !1; const n = (1 << i) - 1; for (let e = 0; e < a; e += 2) { s[e] = 256 * (t[e + 1] - t[e]) | 0; s[e + 1] = t[e] * n | 0; 256 === s[e] && 0 === s[e + 1] || (r = !0) } r && (e.decodeTransform = s) } if (this.params instanceof Dict) { const t = this.params.get("ColorTransform"); Number.isInteger(t) && (e.colorTransform = t) } const i = new JpegImage(e); i.parse(this.bytes); const a = i.getData({ width: this.drawWidth, height: this.drawHeight, forceRGBA: this.forceRGBA, forceRGB: this.forceRGB, isSourcePDF: !0 }); this.buffer = a; this.bufferLength = a.length; this.eof = !0 } } var oi, gi = (oi = "undefined" != typeof document ? document.currentScript?.src : void 0, function (e = {}) { var t, i, a = Object.assign({}, e); new Promise(((e, a) => { t = e; i = a })); a.decode = function (e, t) { const i = e.length, s = a._malloc(i); a.HEAPU8.set(e, s); const r = a._jp2_decode(s, i, t ? 1 : 0); a._free(s); if (r) { const { errorMessages: e } = a; if (e) { delete a.errorMessages; return e } return "Unknown error" } const { imageData: n } = a; a.imageData = null; return n }; var s, r = Object.assign({}, a), n = "./this.program", o = ""; "undefined" != typeof document && document.currentScript && (o = document.currentScript.src); oi && (o = oi); o = o.startsWith("blob:") ? "" : o.substr(0, o.replace(/[?#].*/, "").lastIndexOf("/") + 1); var g, c, h, l, C, Q = a.print || console.log.bind(console), E = a.printErr || console.error.bind(console); Object.assign(a, r); r = null; a.arguments && a.arguments; a.thisProgram && (n = a.thisProgram); a.quit && a.quit; a.wasmBinary && (g = a.wasmBinary); function tryParseAsDataURI(e) { if (isDataURI(e)) return function intArrayFromBase64(e) { for (var t = atob(e), i = new Uint8Array(t.length), a = 0; a < t.length; ++a)i[a] = t.charCodeAt(a); return i }(e.slice(b.length)) } function updateMemoryViews() { var e = c.buffer; a.HEAP8 = h = new Int8Array(e); a.HEAP16 = new Int16Array(e); a.HEAPU8 = l = new Uint8Array(e); a.HEAPU16 = new Uint16Array(e); a.HEAP32 = new Int32Array(e); a.HEAPU32 = C = new Uint32Array(e); a.HEAPF32 = new Float32Array(e); a.HEAPF64 = new Float64Array(e) } var u, d = [], f = [], p = [], m = 0, y = null, w = null, b = "data:application/octet-stream;base64,", isDataURI = e => e.startsWith(b); function instantiateSync(e, t) { var i, a = function getBinarySync(e) { if (e == u && g) return new Uint8Array(g); var t = tryParseAsDataURI(e); if (t) return t; if (s) return s(e); throw 'sync fetching of the wasm failed: you can preload it to Module["wasmBinary"] manually, or emcc.py will do that for you when generating HTML (but not JS)' }(e); i = new WebAssembly.Module(a); return [new WebAssembly.Instance(i, t), i] } var D, callRuntimeCallbacks = e => { for (; e.length > 0;)e.shift()(a) }, F = (a.noExitRuntime, e => { var t = (e - c.buffer.byteLength + 65535) / 65536; try { c.grow(t); updateMemoryViews(); return 1 } catch (e) { } }), S = {}, getEnvStrings = () => { if (!getEnvStrings.strings) { var e = { USER: "web_user", LOGNAME: "web_user", PATH: "/", PWD: "/", HOME: "/home/web_user", LANG: ("object" == typeof navigator && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", _: n || "./this.program" }; for (var t in S) void 0 === S[t] ? delete e[t] : e[t] = S[t]; var i = []; for (var t in e) i.push(`${t}=${e[t]}`); getEnvStrings.strings = i } return getEnvStrings.strings }, k = [null, [], []], R = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0, UTF8ArrayToString = (e, t, i) => { for (var a = t + i, s = t; e[s] && !(s >= a);)++s; if (s - t > 16 && e.buffer && R) return R.decode(e.subarray(t, s)); for (var r = ""; t < s;) { var n = e[t++]; if (128 & n) { var o = 63 & e[t++]; if (192 != (224 & n)) { var g = 63 & e[t++]; if ((n = 224 == (240 & n) ? (15 & n) << 12 | o << 6 | g : (7 & n) << 18 | o << 12 | g << 6 | 63 & e[t++]) < 65536) r += String.fromCharCode(n); else { var c = n - 65536; r += String.fromCharCode(55296 | c >> 10, 56320 | 1023 & c) } } else r += String.fromCharCode((31 & n) << 6 | o) } else r += String.fromCharCode(n) } return r }, printChar = (e, t) => { var i = k[e]; if (0 === t || 10 === t) { (1 === e ? Q : E)(UTF8ArrayToString(i, 0)); i.length = 0 } else i.push(t) }, UTF8ToString = (e, t) => e ? UTF8ArrayToString(l, e, t) : "", N = { f: (e, t, i) => l.copyWithin(e, t, t + i), b: e => { var t = l.length, i = 2147483648; if ((e >>>= 0) > i) return !1; for (var a, s, r = 1; r <= 4; r *= 2) { var n = t * (1 + .2 / r); n = Math.min(n, e + 100663296); var o = Math.min(i, (a = Math.max(e, n)) + ((s = 65536) - a % s) % s); if (F(o)) return !0 } return !1 }, c: (e, t) => { var i = 0; getEnvStrings().forEach(((a, s) => { var r = t + i; C[e + 4 * s >> 2] = r; ((e, t) => { for (var i = 0; i < e.length; ++i)h[t++] = e.charCodeAt(i); h[t] = 0 })(a, r); i += a.length + 1 })); return 0 }, d: (e, t) => { var i = getEnvStrings(); C[e >> 2] = i.length; var a = 0; i.forEach((e => a += e.length + 1)); C[t >> 2] = a; return 0 }, e: (e, t, i, a) => { for (var s = 0, r = 0; r < i; r++) { var n = C[t >> 2], o = C[t + 4 >> 2]; t += 8; for (var g = 0; g < o; g++)printChar(e, l[n + g]); s += o } C[a >> 2] = s; return 0 }, g: function _jsPrintWarning(e) { const t = UTF8ToString(e); (a.warn || console.warn)(`OpenJPEG: ${t}`) }, h: function _setImageData(e, t) { a.imageData = new Uint8ClampedArray(a.HEAPU8.subarray(e, e + t)) }, a: function _storeErrorMessage(e) { const t = UTF8ToString(e); a.errorMessages ? a.errorMessages += "\n" + t : a.errorMessages = t } }, G = function createWasm() { var e = function getWasmImports() { return { a: N } }(); function receiveInstance(e, t) { G = e.exports; c = G.i; updateMemoryViews(); !function addOnInit(e) { f.unshift(e) }(G.j); !function removeRunDependency(e) { m--; a.monitorRunDependencies?.(m); if (0 == m) { if (null !== y) { clearInterval(y); y = null } if (w) { var t = w; w = null; t() } } }(); return G } !function addRunDependency(e) { m++; a.monitorRunDependencies?.(m) }(); if (a.instantiateWasm) try { return a.instantiateWasm(e, receiveInstance) } catch (e) { E(`Module.instantiateWasm callback failed with error: ${e}`); i(e) } u || (u = "data:application/octet-stream;base64,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dEGwnQFqKAIAIQICfiAAKQMIIg5CAFMEQEEMIAFBAWogAUELThshBCADQQFrIQNBfyACdEF/c0EBdCEBQgEMAQsgAUEBa0EAIAFBAUobIQQgDkE/IAJrrYinQX8gAnRBf3NxQQF0QQFyIQEgAyACQQFqIgJrIQMgAq0LIQ8gACADNgIQIAAgBDYCHCAAIA4gD4Y3AwggACAAKQMoQv//////QIMgAa1CI4aENwMoQQYhBSADQQZIDQAgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F/IAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF/c3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAApAyhC////////QIMgAa1CKoaENwMoQQchBSADQQZIDQAgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F/IAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF/c3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAApAyhC/////////0CDIAGtQjGGhDcDKEEIIQULIAAgBUEBazYCICAAIAApAygiDkIHiDcDKCAOp0H/AHELIgEBfyAABEAgACgCDCIBBEAgARAJIABBADYCDAsgABAJCwuFAQIFfwF+AkAgAEKAgICAEFQEQCAAIQcMAQsDQCABQQFrIgEgAEIKgCIHQvYBfiAAfKdBMHI6AAAgAEL/////nwFWIQUgByEAIAUNAAsLIAenIgIEQANAIAFBAWsiASACQQpuIgNB9gFsIAJqQTByOgAAIAJBCUshBiADIQIgBg0ACwsgAQv54gEEen8Gewh+AX0jAEEQayJOJAACQCAALQAIQYABcUUNACAAKALMASABRw0AIAAoApwBIAFBjCxsaiJPKALcKyIVRQRAIE8QKQwBCyAAKALIARogACgC0AEhGSAAKAJMIgdFBEAgACgCSCEHCyAHKAIAIQYgBygCBCELIAcoAgghCSAHKAIMIQ0gACgCPCEHIAAoAkAhCCBPKALgKyEKIwBBEGsiQCQAIBkgATYCJCAZKAIcKAJMIQwgGUEBNgJAIBkgDTYCPCAZIAk2AjggGSALNgI0IBkgBjYCMCAZIAwgAUGMLGxqNgIgIBkoAkQQCUEAIQsgGUEANgJEAkAgBwRAQQQgGSgCGCgCEBAMIgtFBEAMAgtBACENQQAhCSAHQQRPBEAgB0F8cSEMQQAhAQNAIAsgCCAJQQJ0aiIGKAIAQQJ0akEBNgIAIAsgBigCBEECdGpBATYCACALIAYoAghBAnRqQQE2AgAgCyAGKAIMQQJ0akEBNgIAIAlBBGohCSABQQRqIgEgDEcNAAsLIAdBA3EiAQRAA0AgCyAIIAlBAnRqKAIAQQJ0akEBNgIAIAlBAWohCSANQQFqIg0gAUcNAAsLIBkgCzYCRAsCQAJAIBkoAhgiBigCECINRQ0AQQAhCQJAA0ACQCALBEAgCyAJQQJ0aigCAEUNAQsgBigCGCAJQTRsaiIBNQIEIoYBQgF9IooBIBk1Ajx8IIYBgCGLASABNQIAIocBQgF9IogBIBk1Ajh8IIcBgCGMASCKASAZNQI0fCCGAYAhhgEgGSgCFCgCACgCFCAJQcwAbGoiASgCFCABKAIYayIHQR9LDQACQCCIASAZNQIwfCCHAYCnIgggASgCAGsiDEEAIAggDE8bIAd2DQAghgGnIgggASgCBGsiDEEAIAggDE8bIAd2DQAgASgCCCIIIIwBp2siDEEAIAggDE8bIAd2DQAgASgCDCIBIIsBp2siCEEAIAEgCE8bIAd2RQ0BCyAZQQA2AkAMAgsgCUEBaiIJIA1HDQALIBkoAkBFDQAgDUUNAUEAIQ0DQCAZKAIUKAIAKAIUIA1BzABsaiIBKAIcIAEoAhhBmAFsaiIHQZQBaygCACEGIAdBjAFrKAIAIQsgB0GYAWsoAgAhCSAHQZABaygCACEIAkAgGSgCRCIHBEAgByANQQJ0aigCAEUNAQsgCyAGayEHIAggCWshCQJAIAYgC0YNACAHrSAJrX5CIIhQDQAgBUEBQZQWQQAQCAwGCyAHIAlsIgdBgICAgARPBEAgBUEBQZQWQQAQCAwGCyABIAdBAnQiBzYCLAJ/AkACQAJAIAEoAiQiBgRAIAcgASgCME0NBSABKAIoDQELIAEgBxAWIgc2AiQgB0EBIAEoAiwiBxtFDQEgASAHNgIwIAFBKGoMAwsgBhAJIAEgASgCLBAWIgc2AiQgBw0BIAFBADYCMCABQgA3AigLIAVBAUGUFkEAEAgMBwsgASABKAIsNgIwIAFBKGoLQQE2AgALIA1BAWoiDSAZKAIYIgYoAhBJDQALDAELIA1FDQAgBigCGCEPIBkoAhQoAgAoAhQhFkEAIQEDQAJAIAsEQCALIAFBAnRqKAIARQ0BCyAWIAFBzABsaiIHIAcoAgAiCSAPIAFBNGxqIgg1AgAihgFCAX0iigEgGTUCMHwghgGApyIMIAkgDEsbIgk2AjggByAHKAIEIgwgCDUCBCKHAUIBfSKLASAZNQI0fCCHAYCnIgggCCAMSRsiCDYCPCAHIAcoAggiDCCKASAZNQI4fCCGAYCnIhcgDCAXSRsiDDYCQCAHIAcoAgwiFyCLASAZNQI8fCCHAYCnIg4gDiAXSxsiFzYCRCAJIAxLDQMgCCAXSw0DIAcoAhQiDkUNACAOrSGLASAXrSGIASAMrSGMASAIrSGNASAJrSGJASAHKAIcIQlCACGHAQNAIAkghwGnIghBmAFsaiIHQn8gDiAIQX9zaq0ihgGGQn+FIooBIIgBfCCGAYg+ApQBIAcgigEgjAF8IIYBiD4CkAEgByCKASCNAXwghgGIPgKMASAHIIkBIIoBfCCGAYg+AogBIIcBQgF8IocBIIsBUg0ACwsgAUEBaiIBIA1HDQALCyBAQQA2AgggGSgCHCEBQQFBCBAMIhsEQCAbIAE2AgQgGyAGNgIACyAbRQ0BIBkoAiQhESAZKAIUKAIAISAjAEHwAGsiEyQAIBFBjCxsIgEgGygCBCIIKAJMaiIcKAKkAyEoAn8gGygCACIeIRcgBSEzQQAhDSMAQSBrIg8kACABIAgoAkxqIh0oAqQDIRgCQCAXKAIQIhZBkARsEA0iDEUNAAJAIBZBAnQQDSILRQRAIAwhCwwBCwJ/IAgoAkwgEUGMLGxqIgkoAqQDIhpBAWoiAUHwARAMIgcEQAJAIAEEQCAXKAIQIQ4gByEBA0AgASAzNgLsASABIA5BEBAMIgY2AsgBIAZFDQIgASAXKAIQIh82AsQBQQAhBkEAIQ4gHwRAA0AgASgCyAEgBkEEdGoiDiAJKALQKyAGQbgIbGoiHygCBEEQEAwiITYCDCAhRQ0EIA4gHygCBDYCCCAGQQFqIgYgFygCECIOSQ0ACwsgAUHwAWohASASIBpGIXMgEkEBaiESIHNFDQALCyAHDAILIAcoAgQiAQRAIAEQCSAHQQA2AgQLIAchAUEAIQkDQCABKALIASIGBEBBACEOIAEoAsQBIhIEfwNAIAYoAgwiHwRAIB8QCSAGQQA2AgwgASgCxAEhEgsgBkEQaiEGIA5BAWoiDiASSQ0ACyABKALIAQUgBgsQCSABQQA2AsgBCyABQfABaiEBIAkgGkYhdCAJQQFqIQkgdEUNAAsgBxAJC0EACyIHBEACQCAWRQ0AQQAhCSAMIQYgFkEETwRAIAYgFkF8cSIJQZAEbGohBiAMIQEDQCALIBBBAnRqIAH9Ef0MAAAAABACAAAgBAAAMAYAAP2uAf0LAgAgAUHAEGohASAQQQRqIhAgCUcNAAsgCSAWRg0BCwNAIAsgCUECdGogBjYCACAGQZAEaiEGIAlBAWoiCSAWRw0ACwsgCyEOQQAhEiAIKAJMIBFBjCxsaigC0CshASAXKAIYIQkgDyAIKAIEIAgoAgwgESARIAgoAhgiBm4iCyAGbGtsaiIGIBcoAgAiECAGIBBLGzYCFCAPQX8gBiAIKAIMaiIQIAYgEEsbIgYgFygCCCIQIAYgEEkbNgIQIA8gCCgCCCAIKAIQIAtsaiIGIBcoAgQiCyAGIAtLGzYCDCAPQX8gBiAIKAIQaiILIAYgC0sbIgYgFygCDCILIAYgC0kbNgIIIA9BADYCGCAPQQA2AhwgD0H/////BzYCBCAPQf////8HNgIAIBcoAhAEQANAIA4EfyAOIBJBAnRqKAIABUEACyELIAk1AgQihgFCAX0iigEgDzUCCHwghgGAIYsBIAk1AgAihwFCAX0iiAEgDzUCEHwghwGAIYwBIIoBIA81Agx8IIYBgCGGASCIASAPNQIUfCCHAYAhhwEgASgCBCIIIA8oAhxLBEAgDyAINgIcIAEoAgQhCAsgCARAIIsBQv////8PgyGKASCMAUL/////D4MhiwEghgFC/////w+DIYgBIIcBQv////8PgyGMASABQbAHaiEfIAFBrAZqISFBACEaA0AgHyAaQQJ0IhBqKAIAIQYgECAhaigCACERQQAhECALBEAgCyAGNgIEIAsgETYCACALQQhqIRALAkAgESAIQQFrIghqIgtBH0sNACAJKAIAIiJBfyALdksNACAPIA8oAgQiJyAiIAt0IgsgCyAnSxs2AgQLAkAgBiAIaiILQR9LDQAgCSgCBCIiQX8gC3ZLDQAgDyAPKAIAIicgIiALdCILIAsgJ0sbNgIAC0EAIQsgigFCfyAIrSKGAYZCf4UihwF8IIYBiCKNAUL/////D4NCASAGrSKJAYZ8QgF9IIkBiKcghwEgiAF8IIYBiKciIiAGdmtBfyAGdnFBACAiII0Bp0cbIQYghwEgiwF8IIYBiCKNAUL/////D4NCASARrSKJAYZ8QgF9IIkBiKcghwEgjAF8IIYBiKciIiARdmtBfyARdnFBACAiII0Bp0cbIREgEARAIBAgBjYCBCAQIBE2AgAgEEEIaiELCyAGIBFsIgYgDygCGEsEQCAPIAY2AhgLIBpBAWoiGiABKAIESQ0ACwsgCUE0aiEJIAFBuAhqIQEgEkEBaiISIBcoAhBJDQALCyAYQQFqISEgDygCHCERIA8oAhghEiAHQQA2AgQCQCAdKAIIQQFqIgGtIBEgEiAWbCIibCIarX5CIIhQBEAgByABIBpsIgE2AgggByABQQIQDCIBNgIEIAENAQsgDBAJIA4QCSAHKAIEIgEEQCABEAkgB0EANgIECyAhRQRAIAchCwwDC0EAIQsgByEBA0AgASgCyAEiCQRAQQAhBiABKALEASIQBH8DQCAJKAIMIggEQCAIEAkgCUEANgIMIAEoAsQBIRALIAlBEGohCSAGQQFqIgYgEEkNAAsgASgCyAEFIAkLEAkgAUEANgLIAQsgAUHwAWohASALIBhGIXUgC0EBaiELIHVFDQALIAchCwwCCyAXKAIYIRcgByAPKAIUIic2AswBIAcgDygCDCIwNgLQASAHIA8oAhAiLTYC1AEgByAPKAIIIis2AtgBIAcgGjYCDCAHICI2AhAgByASNgIUQQEhHyAHQQE2AhggFgRAIAcoAsgBIQFBACEIIBchCwNAIA4gCEECdGooAgAhCSABIAsoAgA2AgAgASALKAIENgIEAkAgASgCCCINRQ0AIAEoAgwhBiANQQFHBEAgDUF+cSEvQQAhEANAIAYgCSgCADYCACAGIAkoAgQ2AgQgBiAJKAIINgIIIAYgCSgCDDYCDCAGIAkoAhA2AhAgBiAJKAIUNgIUIAYgCSgCGDYCGCAGIAkoAhw2AhwgBkEgaiEGIAlBIGohCSAQQQJqIhAgL0cNAAsLIA1BAXFFDQAgBiAJKAIANgIAIAYgCSgCBDYCBCAGIAkoAgg2AgggBiAJKAIMNgIMCyALQTRqIQsgAUEQaiEBIAhBAWoiCCAWRw0ACwsgIUEBSwRAIAchDQNAIA0gKzYCyAMgDSAtNgLEAyANIDA2AsADIA0gJzYCvAMgDUEBNgKIAiANIBI2AoQCIA0gIjYCgAIgDSAaNgL8ASAWBEAgDSgCuAMhAUEAIQggFyELA0AgDiAIQQJ0aigCACEJIAEgCygCADYCACABIAsoAgQ2AgQCQCABKAIIIiFFDQAgASgCDCEGICFBAUcEQCAhQX5xIS9BACEQA0AgBiAJKAIANgIAIAYgCSgCBDYCBCAGIAkoAgg2AgggBiAJKAIMNgIMIAYgCSgCEDYCECAGIAkoAhQ2AhQgBiAJKAIYNgIYIAYgCSgCHDYCHCAGQSBqIQYgCUEgaiEJIBBBAmoiECAvRw0ACwsgIUEBcUUNACAGIAkoAgA2AgAgBiAJKAIENgIEIAYgCSgCCDYCCCAGIAkoAgw2AgwLIAtBNGohCyABQRBqIQEgCEEBaiIIIBZHDQALCyANIA0pAgQ3AvQBIBggH0chdiANQfABaiENIB9BAWohHyB2DQALCyAMEAkgDhAJIB0oAqQDIQsCQCAdLQCILEEEcQRAIAtBf0YNASAdQagDaiEGIB0oAgghAUEAIRAgByEJA0AgBigCJCENIAlBATYCLCAJIA02AlQgCSAGKAIANgIwIAYoAgQhDSAJQgA3AkQgCSANNgI0IAkgBigCDDYCPCAJIAYoAhA2AkAgBigCCCENIAkgEjYCTCAJIA0gASABIA1LGzYCOCAGQZQBaiEGIAlB8AFqIQkgCyAQRiF3IBBBAWohECB3RQ0ACwwBCyALQX9GDQAgHSgCCCEGIB0oAgQhDSAHIQkgCwRAIAtBAWpBfnEhCEEAIQEDQCAJQgA3AkQgCUEANgI0IAlCATcCLCAJIA02AlQgCSARNgI8IAkgDTYCxAIgCSASNgJMIAkgBjYCOCAJQgA3ArQCIAlBADYCpAIgCUIBNwKcAiAJIBE2AqwCIAkgBjYCqAIgCSASNgK8AiAJIAkoAsQBNgJAIAkgCSgCtAM2ArACIAlB4ANqIQkgAUECaiIBIAhHDQALCyALQQFxDQAgCUIANwJEIAlBADYCNCAJQgE3AiwgCSANNgJUIAkgETYCPCAJIBI2AkwgCSAGNgI4IAkgCSgCxAE2AkALIAchDQwCCyAMEAkLIAsQCQsgD0EgaiQAQQAgDSIHRQ0AGiAoQQFqIQ4gFSEdIAchCwJAAkADQCALKAJUQX9GDQIgHigCEEECdBANIgFFDQIgAUEBIB4oAhBBAnQQDiEJIAsQUARAA0AgICgCFCEIAkACQCALKAIoIBwoAgxPDQAgCygCICIBIAggCygCHEHMAGxqIgYoAhhPDQAgBigCHCABQZgBbGoiDSgCGEUNACANQRxqIQhBACEBAkADQCAZIAsoAhwgCygCICAIIAFBJGxqIgYoAhAgBigCFCALKAIkQShsaiIGKAIAIAYoAgQgBigCCCAGKAIMEDJFBEAgAUEBaiIBIA0oAhhJDQEMAgsLIAkgCygCHEECdGpBADYCACATQQA2AmggGygCBCAgKAIUIBwgCyATQewAaiAdIBNB6ABqIAogMxBPRQ0GIAsoAiAhCCALKAIcIRYgEygCaCEaIBMoAmwEQCATQQA2AmggICgCFCAWQcwAbGooAhwgCEGYAWxqIh8oAhgiAQR/IAogGmshGCAKIB1qISEgH0EcaiEMQQAhEUEAIQ8gGiAdaiIiIRIDQAJAIAwoAgggDCgCAEYNACAMKAIMIAwoAgRGDQAgDCgCFCALKAIkQShsaiIGKAIUIAYoAhBsIihFDQAgBigCGCEBQQAhFgNAIA8EQCABQQA2AjQLIAEoAiQiFwRAIAEoAgAhCAJAIAEgASgCKCIGBH8gCCAGQRhsaiIIQRRrKAIAIAhBDGsoAgBHBEAgCEEYayEIDAILIAZBAWoFQQELNgIoCwJAA0ACQAJAAkAgCCgCFCINIBJBf3NLDQAgDw0AIA0gEmogIU0NAQsgCygCHCEGIAsoAiAhFyALKAIkIQ8gGygCBCgCaARAIBMgBjYCWCATIBc2AlQgEyARNgJQIBMgDzYCTCATIBY2AkggEyAYNgJEIBMgDTYCQCAzQQFBgu4AIBNBQGsQCAwRCyATIAY2AjggEyAXNgI0IBMgETYCMCATIA82AiwgEyAWNgIoIBMgGDYCJCATIA02AiAgM0ECQYLuACATQSBqEAggAUEANgI0IAggCCgCECIGIAgoAgRqNgIEIAEgASgCJCINIAZrIhc2AiRBASEPIAYgDUYNASABIAEoAihBAWoiCDYCKAwDCyABKAIEIRAgASgCNCIPIAEoAjhHBH8gFwUgECAPQQF0QQFyIgZBA3QQECIQRQRAIDNBAUGACEEAEAgMEQsgASAGNgI4IAEgEDYCBCABKAI0IQ8gCCgCFCENIAEoAiQLIQYgECAPQQN0aiIXIA02AgQgFyASNgIAIAEgD0EBajYCNCAIIAgoAgAgDWo2AgAgCCAIKAIQIhAgCCgCBGoiDzYCBCABIAYgEGsiFzYCJCAIIA82AgggDSASaiESQQAhDyAGIBBGDQAgASABKAIoQQFqNgIoIAhBGGohCAsgFw0ACyABKAIoIQgLIAEgCDYCLAsgAUFAayEBIBZBAWoiFiAoRw0ACyAfKAIYIQELIAxBJGohDCARQQFqIhEgAUkNAAsgCygCHCEWIAsoAiAhCCAYIBIgImsgDxsFQQALIBpqIRoLIB4oAhggFkE0bGoiASAIIAEoAiQiASABIAhJGzYCJAwCCyAgKAIUIQgLIBNBADYCaCAbKAIEIAggHCALIBNB7ABqIB0gE0HoAGogCiAzEE9FDQQgCygCHCEWIBMoAmghGiATKAJsRQ0AAkAgICgCFCAWQcwAbGooAhwgCygCICIiQZgBbGoiASgCGCIoRQRAQQAhFwwBCyAKIBprIRAgAUEcaiEMIAsoAiQhIUEAIRdBACEYA0ACQCAMKAIIIAwoAgBGDQAgDCgCDCAMKAIERg0AIAwoAhQgIUEobGoiASgCFCABKAIQbCInRQ0AIAEoAhghEUEAIR8DQCARKAIkIgEEQCARKAIAIQgCQCARIBEoAigiEgR/IAggEkEYbGoiCEEUaygCACAIQQxrKAIARwRAIAhBGGshCAwCCyASQQFqBUEBCyISNgIoCwJAAkAgCCgCFCIPIBdqIg0gD0kNACANIBBLDQADQCANIRcgCCAIKAIQIg0gCCgCBGo2AgQgASANayEGIAEgDUYNAiARIBJBAWoiEjYCKCAIKAIsIg8gF2oiDSAPTwRAIAhBGGohCCAGIQEgDSAQTQ0BCwsgESAGNgIkCyAbKAIEKAJoIQEgEyAWNgIYIBMgIjYCFCATIBg2AhAgEyAhNgIMIBMgHzYCCCATIBA2AgQgEyAPNgIAIDNBAUECIAEbQa3tACATEAggAQ0KIAsoAhwhFgwFCyARIAY2AiQLIBFBQGshESAfQQFqIh8gJ0cNAAsLIAxBJGohDCAYQQFqIhggKEcNAAsLIBcgGmohGgsCQCAJIBZBAnRqKAIARQ0AIB4oAhggFkE0bGoiASgCJA0AIAEgICgCFCAWQcwAbGooAhhBAWs2AiQLIAogGmshCiAaIB1qIR0gCxBQDQALCyAJEAkgC0HwAWohCyAjQQFqIiMgHCgCpANNDQALIAcgDhAzIEAgHSAVazYCCEEBDAILIAcgDhAzIAkQCUEADAELIAcgDhAzQQALIXggE0HwAGokACAbECUgeEUNASAZKAIgKALQKyEJIBkoAhQoAgAiFigCFCEdIEBBATYCDEEAIQ1BACEVIBkoAiAiASgCDCABKAIIRgRAIAkoAhBBBHZBAXEhFQsCQCAWKAIQIjFFDQADQAJAIBkoAkQiAQRAIAEgDUECdGooAgBFDQELIEBBDGohE0EAITECQCAdKAIYIgFFDQAgGSgCLCEQA0AgHSgCHCAxQZgBbGoiDCgCGCILBEAgDEEcaiESIAwoAhQhASAMKAIQIRdBACEOA0AgASAXbARAIBIgDkEkbGohD0EAIQgDQCAZIB0oAhAgMSAPKAIQIA8oAhQgCEEobGoiBygCACAHKAIEIAcoAgggBygCDBAyIQYgBygCFCILIAcoAhAiCmwhAQJAIAYEQCABRQ0BQQAhCgNAAkAgGSAdKAIQIDEgDygCECAHKAIYIApBBnRqIgYoAgggBigCDCAGKAIQIAYoAhQQMkUEQCAGKAI8IgFFDQEgARAJIAZBADYCPAwBCyAZKAJARQRAIAYoAjwNASAGKAIQIAYoAghGDQEgBigCFCAGKAIMRg0BC0EBQSwQDCIBRQRAIEBBADYCDAwKCyAZKAJAIQsgAUEANgIkIAEgEzYCHCABIAk2AhQgASAdNgIQIAEgDzYCDCABIAY2AgggASAxNgIEIAEgCzYCACABIBU2AiggASAzNgIgIAEgECgCBEEBSjYCGCAQQQ4gARAmIEAoAgxFDQkLIApBAWoiCiAHKAIUIAcoAhBsSQ0ACwwBCyABRQ0AQQAhFwNAIAcoAhggF0EGdGoiASgCPCIGBEAgBhAJIAFBADYCPCAHKAIQIQogBygCFCELCyAXQQFqIhcgCiALbEkNAAsLIAhBAWoiCCAMKAIUIgEgDCgCECIXbEkNAAsgDCgCGCELCyAOQQFqIg4gC0kNAAsgHSgCGCEBCyAxQQFqIjEgAUkNAAsLIEAoAgxFDQIgFigCECExCyAJQbgIaiEJIB1BzABqIR0gDUEBaiINIDFJDQALC0EAITEgGSgCLBAaIEAoAgxFDQECQCAZKAJADQAgGSgCGCIdKAIQRQ0AQQAhCQNAIBkoAhQoAgAoAhQgCUHMAGxqIgEoAhwgHSgCGCAJQTRsaigCJEGYAWxqIgcoAogBIQYgBygCkAEhCyAHKAKMASEKIAcoApQBIQcgASgCNBAJIAFBADYCNAJAIBkoAkQiDQRAIA0gCUECdGooAgBFDQELIAYgC0YNACAHIApGDQAgByAKayIHrSALIAZrIgatfkIgiEIAUgRAIDNBAUGUFkEAEAgMBQsgBiAHbCIHQYCAgIAETwRAIDNBAUGUFkEAEAgMBQsgASAHQQJ0EBYiATYCNCABDQAgM0EBQZQWQQAQCAwECyAJQQFqIgkgGSgCGCIdKAIQSQ0ACwsgGSgCICEdIBkoAhQoAgAiFygCEARAIBcoAhQhCSAdKALQKyEdIBkoAhgoAhghDUEAIQsDQAJAIBkoAkQiAQRAIAEgC0ECdGooAgBFDQELIA0oAiRBAWohASAdKAIUQQFGBEAgASEeQQAhBkEAIQz9DAAAAAAAAAAAAAAAAAAAAAAhgAEjAEEgayIlJAACQAJAIBkoAkAEQEEBIQcgAUEBRg0CIAkoAhwiDCAJKAIYQZgBbGoiAUGQAWsoAgAiECABQZgBaygCACITRg0CIAwoAgQhESAMKAIMIRggDCgCACEaIAwoAgghGyAZKAIsIg4oAgQhFiAeQQFrIgohFSAMIQcCQCAKQQRPBEAgCkEDcSEVIAcgCkF8cSIIQZgBbGohB0EAIQEDQCCAASAMIAFBmAFsaiIGQegEaiAGQdADaiAGQbgCaiAG/QkCoAH9VgIAAf1WAgAC/VYCAAMgBkHgBGogBkHIA2ogBkGwAmogBv0JApgB/VYCAAH9VgIAAv1WAgAD/bEB/bkBIAZB7ARqIAZB1ANqIAZBvAJqIAb9CQKkAf1WAgAB/VYCAAL9VgIAAyAGQeQEaiAGQcwDaiAGQbQCaiAG/QkCnAH9VgIAAf1WAgAC/VYCAAP9sQH9uQEhgAEgAUEEaiIBIAhHDQALIIABIIABIIAB/Q0ICQoLDA0ODwABAgMAAQID/bkBIoABIIABIIAB/Q0EBQYHAAECAwABAgMAAQID/bkB/RsAIQYgCCAKRg0BCwNAIAYgBygCoAEgBygCmAFrIgEgASAGSRsiASAHKAKkASAHKAKcAWsiBiABIAZLGyEGIAdBmAFqIQcgFUEBayIVDQALC0EAIQcgBkH///8/Sw0CICUgBkEFdCISECwiDzYCECAPRQ0CICUgDzYCACAKBEAgECATayEQIBggEWshCCAbIBprIQEDQCAJKAIkIRMgJSAIIhU2AgggJSABIgc2AhggDCgCnAEhBiAMKAKkASEIIAwoAqABIQEgJSAMKAKYASIRQQJvNgIcICUgASARayIBIAdrNgIUAkAgFkECSCIaRSAIIAZrIghBAUtxRQRAQQAhBiAIRQ0BA0AgJUEQaiATIAYgEGxBAnRqEFYgBkEBaiIGIAhHDQALDAELIAggFiAIIBZJGyIRQQFrIRsgCCARbiEYQQAhBwNAQSQQDSIGRQ0FICX9AAIQIYABIAYgEzYCGCAGIBA2AhQgBiABNgIQIAYggAH9CwIAIAYgByAYbDYCHCAHIBtGIR8gBiAIIAdBAWoiByAYbCAfGzYCICAGIBIQLCIfNgIAIB9FBEBBACEHIA4QGiAGEAkgDxAJDAcLIA5BCiAGECYgByARRw0ACyAOEBoLICUgCCAVazYCBCAlIAwoApwBQQJvNgIMAkAgGkUgAUEBS3FFBEBBCCEHQQAhBiABQQhPBEADQCAlIBMgBkECdGogEEEIECsgByIGQQhqIgcgAU0NAAsLIAEgBk0NASAlIBMgBkECdGogECABIAZrECsMAQsgASAWIAEgFkkbIhVBAWshGCABIBVuIRFBACEHA0BBJBANIgZFDQUgJf0AAgAhgAEgBiATNgIYIAYgEDYCFCAGIAg2AhAgBiCAAf0LAgAgBiAHIBFsNgIcIAcgGEYhGiAGIAEgB0EBaiIHIBFsIBobNgIgIAYgEhAsIho2AgAgGkUEQEEAIQcgDhAaIAYQCSAPEAkMBwsgDkELIAYQJiAHIBVHDQALIA4QGgsgDEGYAWohDCAKQQFrIgoNAAsLQQEhByAPEAkMAgtBASEHIAkoAhwiCCAeQZgBbGoiNUGYAWsiXygCACA1QZABaygCAEYNASA1QZQBayJgKAIAIDVBjAFrKAIARg0BIAgoAgQhDiAIKAIMIQ8gCCgCACEWIAgoAgghECAJKAJEISEgCSgCQCEiIAkoAjwhKCAJKAI4ITAgCSAeEFUiOUUEQEEAIQcMAgsCQAJAIB5BAUcEQAJAAkAgHkEBayIKQQRJBEAgCiEBIAghBwwBCyAKQQNxIQEgCCAKQXxxIhVBmAFsaiEHA0AggAEgCCAMQZgBbGoiBkHoBGogBkHQA2ogBkG4AmogBv0JAqAB/VYCAAH9VgIAAv1WAgADIAZB4ARqIAZByANqIAZBsAJqIAb9CQKYAf1WAgAB/VYCAAL9VgIAA/2xAf25ASAGQewEaiAGQdQDaiAGQbwCaiAG/QkCpAH9VgIAAf1WAgAC/VYCAAMgBkHkBGogBkHMA2ogBkG0AmogBv0JApwB/VYCAAH9VgIAAv1WAgAD/bEB/bkBIYABIAxBBGoiDCAVRw0ACyCAASCAASCAAf0NCAkKCwwNDg8AAQIDAAECA/25ASKAASCAASCAAf0NBAUGBwABAgMAAQIDAAECA/25Af0bACEGIAogFUYNAQsDQCAGIAcoAqABIAcoApgBayIKIAYgCksbIgYgBygCpAEgBygCnAFrIgogBiAKSxshBiAHQZgBaiEHIAFBAWsiAQ0ACwsgBkGAgICAAU8NAiAGQQR0ECwiFEUNAgJAIB5FDQAgDyAOayESIBAgFmshGiAUQQRrITsgFEEEaiEkIBRBDGohKSAUQRxqIUMgFEEYaiEfIBRBFGohICAUQQxrIUQgFEEIaiEqIBRBEGohNiAUQRBrITcgFEEIayFBICGtIYYBICKtIYcBICitIYoBIDCtIYsBQQEhRgNAIAgoApwBIgFBAm8hRyAIKAKYASIHQQJvITwgCCgCpAEgAWsiJyASayEsIAgoAqABIAdrIi0gGmshLiAwIgwhByAoIgYhCiAiIgEhOiAhIg8hEQJAIAkoAhQiFSBGRg0AIBUgRmshFUEAIQpBACEHIAwEQEJ/IBWtIogBhkJ/hSCLAXwgiAGIpyEHCyAoBEBCfyAVrSKIAYZCf4UgigF8IIgBiKchCgtBACEPQQAhASAiBEBCfyAVrSKIAYZCf4UghwF8IIgBiKchAQsgIQRAQn8gFa0iiAGGQn+FIIYBfCCIAYinIQ8LQQAhOkEAIQxBASAVQQFrdCIOIDBJBEAgMCAOa61CfyAVrSKIAYZCf4V8IIgBiKchDAsgDiAiSQRAICIgDmutQn8gFa0iiAGGQn+FfCCIAYinIToLQQAhEUEAIQYgDiAoSQRAICggDmutQn8gFa0iiAGGQn+FfCCIAYinIQYLIA4gIU8NACAhIA5rrUJ/IBWtIogBhkJ/hXwgiAGIpyERC0F/IDogCCgCtAEiFWsiDkEAIA4gOk0bIg5BAmoiFiAOIBZLGyIOIC4gDiAuSRsiNEF/IAEgCCgC2AEiE2siDkEAIAEgDk8bIgFBAmoiDiABIA5LGyIBIBogASAaSRsiJiA8G0EBdCIBICYgNCA8G0EBdEEBciIOIAEgDksbIkggLUkhGCAMIBVrIgFBACABIAxNGyIBQQJrIgxBACABIAxPGyIQIAcgE2siAUEAIAEgB00bIgFBAmsiDEEAIAEgDE8bIhYgPBtBAXQiDCAWIBAgPBtBAXRBAXIiK0khLyAKIAgoArgBIhtrIhVBACAKIBVPGyIKQQJrIhVBACAKIBVPGyIVISMgBiAIKALcASIKayIOQQAgBiAOTxsiBkECayIOQQAgBiAOTxsiDiE9QX8gDyAbayIGQQAgBiAPTRsiBkECaiIPIAYgD0sbIgYgEiAGIBJJGyIbIT5BfyARIAprIgZBACAGIBFNGyIGQQJqIgogBiAKSxsiBiAsIAYgLEkbIhwhPyBHBEAgFSE9IBwhPiAbIT8gDiEjCyBIIC0gGBshSSAMICsgLxshGCASIBxqIVAgDiASaiFRICcEQCAUIBZBA3QiBmoiRUEEaiA7IC5BA3QiCmoiUiAWIC5IIgwbIVMgBiAkaiIGICYgLiAmIC5IGyIPIAcgEyAHIBNJG0ECIAEgAUECTxtqIgFqIhMgB2tBAmsiEUEDdCIraiAGSSApIAcgAWtBA3RqIgEgK2ogAUlyIBFB/////wFLciFUIDQgGkEBayAaIDRKGyEvQQAhESAaQQFKIC5BAEpyIVUgJCA8QQJ0IgFrIBBBA3RqIVYgASBFaiFXIBYgB0F/cyATaiJKQXxxIjJqITggFkEBaiITIDJqIUIgGiA0aiFYIBAgGmohWSAW/RH9DAAAAAABAAAAAgAAAAMAAAD9rgEhgwEgFCAYQQJ0aiFaIEEgGkEDdCIBaiFLIAEgO2ohTCAKIEFqIU0gGkUgLkEBRnEhWyAUIElBAnQiAWohXCABIDtqIV0gE/0R/QwAAAAAAQAAAAIAAAADAAAA/a4BIYQBIDsgFiAuIAwbQQN0aiFeA0ACQAJAIBEgG0kgESAVT3ENACARIFBJIBEgUU9xDQAgEUEBaiErDAELIC0gSEsEQCBdQQA2AgAgXEEANgIACyA5IBYgESAmIBFBAWoiKyBXQQJBABAXIDkgWSARIFggKyBWQQJBABAXAkACQAJAIDxFBEAgVUUNAyAWICZODQICQAJAIBZBAEoEQCBeKAIAIQcMAQsgJCgCACIHIQEgFkEASA0BCyAHIQEgUygCACEHCyBFIEUoAgAgASAHakECakECdWs2AgAgEyIHIA9ODQFBACEHIIQBIYABIIMBIYIBIBMhASAWIQogSkEUSSBUckUEQANAIBQggAFBAf2rASKBAf0bAEECdGoiASAUIIEB/RsDQQJ0aiIGIBQggQH9GwJBAnRqIgogFCCBAf0bAUECdGoiDCAB/QkCAP1WAgAB/VYCAAL9VgIAAyAUIIIBQQH9qwH9DAEAAAABAAAAAQAAAAEAAAD9UCKFAf0bA0ECdGogFCCFAf0bAkECdGogFCCFAf0bAUECdGogFCCFAf0bAEECdGr9CQIA/VYCAAH9VgIAAv1WAgADIBQggQH9DAEAAAABAAAAAQAAAAEAAAD9UCKBAf0bA0ECdGogFCCBAf0bAkECdGogFCCBAf0bAUECdGogFCCBAf0bAEECdGr9CQIA/VYCAAH9VgIAAv1WAgAD/a4B/QwCAAAAAgAAAAIAAAACAAAA/a4BQQL9rAH9sQEigQH9WgIAACAMIIEB/VoCAAEgCiCBAf1aAgACIAYggQH9WgIAAyCCAf0MBAAAAAQAAAAEAAAABAAAAP2uASGCASCAAf0MBAAAAAQAAAAEAAAABAAAAP2uASGAASAHQQRqIgcgMkcNAAsgQiEBIDghCiAPIQcgMiBKRg0CCwNAIBQgAUEDdGoiByAHKAIAIBQgCkEDdGooAgQgBygCBGpBAmpBAnVrNgIAIAEiCkEBaiIBIA9HDQALIA8hBwwBCwJAIFtFBEAgFiIHICZODQEDQCAUIAdBA3RqIgEoAgQhBiABIAYCfwJAIAdBAE4EQCABIE0gByAuSBsoAgAhOiAHQQFqIQEMAQsgFCgCACE6QQAhASAUIAdBAWoiBw0BGgsgASAuTgRAIAEhByBNDAELIBQgASIHQQN0agsoAgAgOmpBAmpBAnVrNgIEIAcgJkgNAAsMAQsgFCAUKAIAQQJtNgIADAMLIBAiByA0Tg0CA0AgFCAHQQN0aiIBKAIAIQoCfyAHQQBIBEAgJCgCACEGICQMAQsgFCAHQQN0akEEaiBMIAcgGkgbKAIAIQYgJCAHRQ0AGiBMIAFBBGsgByAaShsLIQwgASAMKAIAIAZqQQF1IApqNgIAIAdBAWoiByA0Rw0ACwwCCyAHICZODQADQCAUIAdBA3RqIgEgASgCAAJ/AkAgB0EASgRAIDsgByAuIAcgLkgbQQN0aigCACEKDAELICQoAgAhCiAkIAdBAEgNARoLIFIgByAuTg0AGiAUIAdBA3RqQQRqCygCACAKakECakECdWs2AgAgB0EBaiIHICZHDQALCyAQIDRODQAgLyAQIgEiB0oEQANAIBQgB0EDdGoiASABKAIEIBQgB0EBaiIHQQN0aigCACABKAIAakEBdWo2AgQgByAvRw0ACyAvIQELIAEgNE4NAANAAn8CQCABIgdBAE4EQCAUIAFBA3RqIEsgASAaSBsoAgAhDCABQQFqIQoMAQsgFCgCACEMQQAhCiAUIAdBAWoiAQ0BGgsgCiAaTgRAIAohASBLDAELIBQgCiIBQQN0agshBiAUIAdBA3RqIgcgBygCBCAGKAIAIAxqQQF1ajYCBCABIDRIDQALCyA5IBggESBJICsgWkEBQQBBABAfRQ0GCyArIhEgJ0cNAAsLIAhBmAFqIQggPkEBdCIBID9BAXRBAXIiByABIAdLGyIBICcgASAnSRshSCBDIBVBBXQiAWogOyAsQQV0IgdqIBUgLEgiBhshSiABIB9qIAcgQWogBhshSyABICBqIAcgRGogBhshTCABIDZqIAcgN2ogBhshTSAcIBJBAWsgEiAcShshDCAsQQBKIg8gEkEBSnIhUiABIBRqIisgR0EEdGohUyApIBJBA3QiGkEIayI+QQAgEkEATBtBAnQiCmohVCAKICpqIVUgCiAkaiFWIAogFGohVyApQQAgLEEDdCIKQQhrIj8gDxtBAnQiD2ohWCAPICpqIVkgDyAkaiFaIA8gFGohWyAUQQQgR0ECdGtBAnRqIA5BBXRqIVwgGyAsIBsgLEgbIQ8gFUEBaiEQIBQgI0EBdCIWID1BAXRBAXIiEyATIBZLGyJdQQR0aiFeIAEgKWohPSABICpqISMgASAkaiEvIBpBAWshOCAaQQJrIUIgGkEDayEuIBQgEkEFdGohYSAaQQRrITQgCkEFayFiIApBBmshYyAKQQdrIWQgEkUgLEEBRnEhZSApIAdBEGsiAWohJiABICpqITogASAkaiE8IAEgFGohRSApID5BAnQiAWohaCABICpqIWkgASAkaiFqIAEgFGohayA7IBUgLCAGG0EFdCIBaiFsIAEgQWohEyABIERqIREgASA3aiFtICkgP0ECdCIBaiFuIAEgKmohbyABICRqIXAgASAUaiFxA0ACQAJAAn8CQCAYIhYgSUkEQCA5IBYgFUEEIEkgFmsiASABQQRPGyAWaiIYIBsgU0EBQQgQFyA5IBYgUSAYIFAgXEEBQQgQFyBHRQRAIFJFDQUgFSAbTg0EAn8gFUEASgRAIG0oAgAhByATIQYgESEKIGwMAQsgNigCACEHIBVBAEgNAyAfIQYgICEKIEMLIXkgKyArKAIAIAcgTSgCAGpBAmpBAnVrNgIAIC8gLygCACAKKAIAIEwoAgBqQQJqQQJ1azYCACAjICMoAgAgBigCACBLKAIAakECakECdWs2AgAgSigCACEHIHkoAgAMAwsgZQRAIBQgFCgCAEECbTYCACAkICQoAgBBAm02AgAgKiAqKAIAQQJtNgIAICkgKSgCAEECbTYCAAwFCyAbIBUiB0oEQANAIAdBA3QhAQJ/AkAgB0EASARAIAdBf0YNASAUIAFBAnRqIgEgASgCECAUKAIAQQF0QQJqQQJ1azYCECABIAEoAhQgJCgCAEEBdEECakECdWs2AhQgASABKAIYICooAgBBAXRBAmpBAnVrNgIYICkoAgBBAXRBAmohBiABQRxqDAILICwgB0EBaiIGTARAIBQgAUECdGoiCiAKKAIQIBQgASA/IAcgLEgiBhtBAnRqKAIAIHEoAgBqQQJqQQJ1azYCECAKIAooAhQgFCABQQFyIGQgBhtBAnRqKAIAIHAoAgBqQQJqQQJ1azYCFCAKIAooAhggFCABQQJyIGMgBhtBAnRqKAIAIG8oAgBqQQJqQQJ1azYCGCAUIAFBA3IgYiAGG0ECdGooAgAgbigCAGpBAmohBiAKQRxqDAILIBQgAUECdGoiASABKAIQIAEoAgAgFCAGQQV0aiIGKAIAakECakECdWs2AhAgASABKAIUIAEoAgQgBigCBGpBAmpBAnVrNgIUIAEgASgCGCABKAIIIAYoAghqQQJqQQJ1azYCGCABKAIMIAYoAgxqQQJqIQYgAUEcagwBCyA3IDcoAgAgFCgCACBbKAIAakECakECdWs2AgAgRCBEKAIAICQoAgAgWigCAGpBAmpBAnVrNgIAIEEgQSgCACAqKAIAIFkoAgBqQQJqQQJ1azYCACApKAIAIFgoAgBqQQJqIQYgOwsiASABKAIAIAZBAnVrNgIAIAdBAWoiByAbRw0ACwsgHCAOIgdMDQQDQCAHQQN0IQECfyAHQQBIBEAgFCABQQJ0aiIBIAEoAgAgNigCAEEBdEEBdWo2AgAgASABKAIEIBQoAhRBAXRBAXVqNgIEIAEgASgCCCAUKAIYQQF0QQF1ajYCCCAUKAIcQQF0IQogAUEMagwBCyAHBEAgFCABQQJ0aiIGIAYoAgAgYSAGIAcgEkoiMhtBEGsoAgAgFCABQQRyIDQgByASSCIKG0ECdGooAgBqQQF1ajYCACAGIAYoAgQgRCAaIAEgMhtBAnQiMmooAgAgFCABQQVyIC4gChtBAnRqKAIAakEBdWo2AgQgBiAGKAIIIDIgQWooAgAgFCABQQZyIEIgChtBAnRqKAIAakEBdWo2AgggMiA7aigCACAUIAFBB3IgOCAKG0ECdGooAgBqIQogBkEMagwBCyAUIBQoAgAgNigCACAUQQQgNCAHIBJIIgEbQQJ0aigCAGpBAXVqNgIAICQgJCgCACAUKAIUIBRBBSAuIAEbQQJ0aigCAGpBAXVqNgIAICogKigCACAUKAIYIBRBBiBCIAEbQQJ0aigCAGpBAXVqNgIAIBQoAhwgFEEHIDggARtBAnRqKAIAaiEKICkLIgEgASgCACAKQQF1ajYCACAHQQFqIgcgHEcNAAsMBAsgLSEaICchEiBGQQFqIkYgHkcNBQwGCyArICsoAgAgB0EBdEECakECdWs2AgAgLyAvKAIAICAoAgBBAXRBAmpBAnVrNgIAICMgIygCACAfKAIAQQF0QQJqQQJ1azYCACBDKAIAIgcLIQEgPSA9KAIAIAEgB2pBAmpBAnVrNgIAIBUhBiAQIgEiByAPSARAA0AgFCABQQV0aiIHIAf9AAIAIDYgBkEFdGr9AAIAIAf9AAIQ/a4B/QwCAAAAAgAAAAIAAAACAAAA/a4BQQL9rAH9sQH9CwIAIAEiBkEBaiIBIA9HDQALIA8hBwsgByAbTg0AA0AgB0EDdCEBIAcgLEghBgJAIAdBAEwEQCA2KAIAIQogB0EATgRAIBQgAUECdCIBaiIyIDIoAgAgCiABIDZqIEUgBhsoAgBqQQJqQQJ1azYCACABICRqIgogCigCACAgKAIAIAEgIGogPCAGGygCAGpBAmpBAnVrNgIAIAEgKmoiCiAKKAIAIB8oAgAgASAfaiA6IAYbKAIAakECakECdWs2AgAgQygCACABIENqICYgBhsoAgBqQQJqIQYgASApaiEBDAILIBQgAUECdCIBaiIGIAYoAgAgCkEBdEECakECdWs2AgAgASAkaiIGIAYoAgAgFCgCFEEBdEECakECdWs2AgAgASAqaiIGIAYoAgAgFCgCGEEBdEECakECdWs2AgAgASApaiEBIBQoAhxBAXRBAmohBgwBCyAUIAcgLCAGG0EDdEEEa0ECdCIKaigCACEyIAZFBEAgFCABQQJ0IgFqIgYgBigCACAyIEUoAgBqQQJqQQJ1azYCACABICRqIgYgBigCACAKICRqKAIAIDwoAgBqQQJqQQJ1azYCACABICpqIgYgBigCACAKICpqKAIAIDooAgBqQQJqQQJ1azYCACABIClqIQEgCiApaigCACAmKAIAakECaiEGDAELIBQgAUECdCIBaiIGIAYoAgAgMiAGKAIQakECakECdWs2AgAgASAkaiIGIAYoAgAgCiAkaigCACAGKAIQakECakECdWs2AgAgASAqaiIGIAYoAgAgCiAqaigCACAGKAIQakECakECdWs2AgAgCiApaigCACABIClqIgEoAhBqQQJqIQYLIAEgASgCACAGQQJ1azYCACAHQQFqIgcgG0cNAAsLIA4gHE4NACAMIA4iASIHSgRAA0AgFCABQQV0aiIHIAf9AAIgIAf9AAIA/a4BQQH9rAEgB/0AAhD9rgH9CwIQIAFBAWoiASAMRw0ACyAMIQcLIAcgHE4NAANAIEMgB0EDdCIBQQJ0aiIyAn8gB0EASARAIBQoAgAhBiAHQX9HBEAgNiABQQJ0IgFqIgogCigCACAGajYCACABICBqIgYgBigCACAkKAIAajYCACABIB9qIgEgASgCACAqKAIAajYCACApKAIADAILIDYgAUECdCIB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LQAAQYD+A3I2AgwLIABBADYCEEEBCwtJAQF/AkBBAUEsEAwiAQRAIAFBADYCEAJAIABBAEwEQCABQQFBCBAMIgA2AiQgAEUNAQwDCyABQQA2AgwLIAEQCQtBACEBCyABC34CAX8BfiAAvSIDQjSIp0H/D3EiAkH/D0cEfCACRQRAIAEgAEQAAAAAAAAAAGEEf0EABSAARAAAAAAAAPBDoiABEF8hACABKAIAQUBqCzYCACAADwsgASACQf4HazYCACADQv////////+HgH+DQoCAgICAgIDwP4S/BSAACwuRAgAgAEUEQEEADwsCfwJAIAFB/wBNDQACQEGUzwEoAgAoAgBFBEAgAUGAf3FBgL8DRg0CDAELIAFB/w9NBEAgACABQT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIMAwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMMAwsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQMAwsLQZTGAUEZNgIAQX8MAQsgACABOgAAQQELC7wCAAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4SAAgJCggJAQIDBAoJCgoICQUGBwsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAwALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC3MBBn8gACgCACIDLAAAQTBrIgFBCUsEQEEADwsDQEF/IQQgAkHMmbPmAE0EQEF/IAEgAkEKbCIFaiABIAVB/////wdzSxshBAsgACADQQFqIgU2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VP0gAiACKgJ0/SAD/QsCACABIAMgF2pBAnRqIAL9CQIYIAIqAjj9IAEgAioCWP0gAiACKgJ4/SAD/QsCACABIAMgFmpBAnRqIAL9CQIcIAIqAjz9IAEgAioCXP0gAiACKgJ8/SAD/QsCACADQQRqIgMgBEcNAAsgBCALRg0BCwNAIAEgBCAbakECdGogBiAEQQV0aiIDKgIQOAIAIAEgBCAYakECdGogAyoCFDgCACABIAQgF2pBAnRqIAMqAhg4AgAgASAEIBZqQQJ0aiADKgIcOAIAIARBAWoiBCALRw0ACwsgHUEBaiEdIAEgJEECdGohASAcQQhqIhwgACgCLE0NAAsLIAAoAgAQCSAAEAkLcwECfyAAKAIcIgFBCGoiAyAAKAIgIgJNBEADQCAAIAAoAhggAUECdGogACgCFEEIECsgAyIBQQhqIgMgACgCICICTQ0ACwsgASACSQRAIAAgACgCGCABQQJ0aiAAKAIUIAIgAWsQKwsgACgCABAJIAAQCQtEACAAKAIcIgEgACgCIEkEQANAIAAgACgCGCAAKAIUIAFsQQJ0ahBWIAFBAWoiASAAKAIgSQ0ACwsgACgCABAJIAAQCQuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGEAsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEEAsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC54FAgZ+BH8gASABKAIAQQdqQXhxIgFBEGo2AgAgACELIAEpAwAhAyABKQMIIQcjAEEgayIIJAAgB0L///////8/gyEEAn4gB0IwiEL//wGDIgWnIgpBgfgAa0H9D00EQCAEQgSGIANCPIiEIQIgCkGA+ABrrSEFAkAgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILQgAgAiACQv////////8HViIAGyECIACtIAV8DAELAkAgAyAEhFANACAFQv//AVINACAEQgSGIANCPIiEQoCAgICAgIAEhCECQv8PDAELQv8PIApB/ocB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JWQpIAAlc30KAAkJIH0KAFtERVZdIER1bXAgYW4gaW1hZ2VfY29tcF9oZWFkZXIgc3RydWN0IHsKAFtERVZdIER1bXAgYW4gaW1hZ2VfaGVhZGVyIHN0cnVjdCB7CgBJbWFnZSBpbmZvIHsKAAkgZGVmYXVsdCB0aWxlIHsKACVzCSBjb21wb25lbnQgJWQgewoACQkgY29tcCAlZCB7CgAJIFRpbGUgaW5kZXg6IHsKAAkgTWFya2VyIGxpc3Q6IHsKAENvZGVzdHJlYW0gaW5kZXggZnJvbSBtYWluIGhlYWRlcjogewoAQ29kZXN0cmVhbSBpbmZvIGZyb20gbWFpbiBoZWFkZXI6IHsKAFN0cmVhbSBlcnJvciB3aGlsZSByZWFkaW5nIEpQMiBIZWFkZXIgYm94CgBGb3VuZCBhIG1pc3BsYWNlZCAnJWMlYyVjJWMnIGJveCBvdXRzaWRlIGpwMmggYm94CgBNYWxmb3JtZWQgSlAyIGZpbGUgZm9ybWF0OiBmaXJzdCBib3ggbXVzdCBiZSBKUEVHIDIwMDAgc2lnbmF0dXJlIGJveAoATWFsZm9ybWVkIEpQMiBmaWxlIGZvcm1hdDogc2Vjb25kIGJveCBtdXN0IGJlIGZpbGUgdHlwZSBib3gKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBqcGVnMjAwMCBib3gKAE5vdCBlbm91Z2ggbWVtb3J5IHdpdGggRlRZUCBCb3gKAEEgbWFya2VyIElEIHdhcyBleHBlY3RlZCAoMHhmZi0tKSBpbnN0ZWFkIG9mICUuOHgKAAkJIG1jdD0leAoACQkJIGNibGtzdHk9JSN4CgAJCQkgY3N0eT0lI3gKAAkJIHByZz0lI3gKAEludGVnZXIgb3ZlcmZsb3cKAAkgdGR4PSV1LCB0ZHk9JXUKAAkgdHc9JXUsIHRoPSV1CgAJIHR4MD0ldSwgdHkwPSV1CgBJbnZhbGlkIGNvbXBvbmVudCBpbmRleDogJXUKAFN0cmVhbSB0b28gc2hvcnQKAE1hcmtlciBoYW5kbGVyIGZ1bmN0aW9uIGZhaWxlZCB0byByZWFkIHRoZSBtYXJrZXIgc2VnbWVudAoATm90IGVub3VnaCBtZW1vcnkgZm9yIGN1cnJlbnQgcHJlY2luY3QgY29kZWJsb2NrIGVsZW1lbnQKAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudAoARXJyb3IgcmVhZGluZyBTUWNkIG9yIFNRY2MgZWxlbWVudAoAQSBCUENDIGhlYWRlciBib3ggaXMgYXZhaWxhYmxlIGFsdGhvdWdoIEJQQyBnaXZlbiBieSB0aGUgSUhEUiBib3ggKCVkKSBpbmRpY2F0ZSBjb21wb25lbnRzIGJpdCBkZXB0aCBpcyBjb25zdGFudAoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBpbGxlZ2FsIHRpbGUgb2Zmc2V0CgBJbnZhbGlkIHByZWNpbmN0CgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUgYmFuZCBwcmVjaW50cwoARmFpbGVkIHRvIGRlY29kZSBhbGwgdXNlZCBjb21wb25lbnRzCgBTaXplIG9mIGNvZGUgYmxvY2sgZGF0YSBleGNlZWRzIHN5c3RlbSBsaW1pdHMKAFNpemUgb2YgdGlsZSBkYXRhIGV4Y2VlZHMgc3lzdGVtIGxpbWl0cwoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIE1DVCBtYXJrZXJzCgBDb3JydXB0ZWQgUFBNIG1hcmtlcnMKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciB0aWxlIHJlc29sdXRpb25zCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgY29sbGVjdGlvbnMKAEludmFsaWQgUENMUiBib3guIFJlcG9ydHMgMCBwYWxldHRlIGNvbHVtbnMKAFdlIGRvIG5vdCBzdXBwb3J0IFJPSSBpbiBkZWNvZGluZyBIVCBjb2RlYmxvY2tzCgBDYW5ub3QgaGFuZGxlIGJveCBvZiB1bmRlZmluZWQgc2l6ZXMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRob3V0IHNhbWUgbnVtYmVyIG9mIGluZGl4ZXMKAEludmFsaWQgdGlsZWMtPndpbl94eHggdmFsdWVzCgBDYW5ub3QgaGFuZGxlIGJveCBvZiBsZXNzIHRoYW4gOCBieXRlcwoAQ2Fubm90IGhhbmRsZSBYTCBib3ggb2YgbGVzcyB0aGFuIDE2IGJ5dGVzCgBDb21wb25lbnQgaW5kZXggJXUgdXNlZCBzZXZlcmFsIHRpbWVzCgBJbnZhbGlkIFBDTFIgYm94LiBSZXBvcnRzICVkIGVudHJpZXMKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGNyZWF0ZSBUYWctdHJlZSBub2RlcwoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG1jdCBkYXRhIHdpdGhpbiBtdWx0aXBsZSBNQ1QgcmVjb3JkcwoAQ2Fubm90IGRlY29kZSB0aWxlLCBtZW1vcnkgZXJyb3IKAG9wal9qMmtfYXBwbHlfbmJfdGlsZV9wYXJ0c19jb3JyZWN0aW9uIGVycm9yCgBQcm9ibGVtIHdpdGggc2tpcHBpbmcgSlBFRzIwMDAgYm94LCBzdHJlYW0gZXJyb3IKAFByb2JsZW0gd2l0aCByZWFkaW5nIEpQRUcyMDAwIGJveCwgc3RyZWFtIGVycm9yCgBVbmtub3duIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIHRsIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIG1oIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gdGFrZSBpbiBjaGFyZ2UgU0laIG1hcmtlcgoARXJyb3IgcmVhZGluZyBQUFQgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIFBQVCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgU09UIG1hcmtlcgoARXJyb3IgcmVhZGluZyBQTFQgbWFya2VyCgBFcnJvciByZWFkaW5nIE1DVCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgTUNUIG1hcmtlcgoATm90IGVub3VnaCBzcGFjZSBmb3IgZXhwZWN0ZWQgU09QIG1hcmtlcgoARXhwZWN0ZWQgU09QIG1hcmtlcgoARXJyb3IgcmVhZGluZyBNQ08gbWFya2VyCgBFcnJvciByZWFkaW5nIFJHTiBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUFBNIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBQUE0gbWFya2VyCgBFcnJvciByZWFkaW5nIFRMTSBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUExNIG1hcmtlcgoATm90IGVub3VnaCBzcGFjZSBmb3IgZXhwZWN0ZWQgRVBIIG1hcmtlcgoARXhwZWN0ZWQgRVBIIG1hcmtlcgoARXJyb3IgcmVhZGluZyBDUkcgbWFya2VyCgBVbmtub3duIHByb2dyZXNzaW9uIG9yZGVyIGluIENPRCBtYXJrZXIKAFVua25vd24gU2NvZCB2YWx1ZSBpbiBDT0QgbWFya2VyCgBFcnJvciByZWFkaW5nIENPRCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUUNEIG1hcmtlcgoAQ3Jyb3IgcmVhZGluZyBDQkQgbWFya2VyCgBFcnJvciByZWFkaW5nIFBPQyBtYXJrZXIKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlcgoARXJyb3IgcmVhZGluZyBRQ0MgbWFya2VyCgBFcnJvciByZWFkaW5nIE1DQyBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgTUNDIG1hcmtlcgoAcmVxdWlyZWQgU0laIG1hcmtlciBub3QgZm91bmQgaW4gbWFpbiBoZWFkZXIKAHJlcXVpcmVkIENPRCBtYXJrZXIgbm90IGZvdW5kIGluIG1haW4gaGVhZGVyCgByZXF1aXJlZCBRQ0QgbWFya2VyIG5vdCBmb3VuZCBpbiBtYWluIGhlYWRlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGpwZWcyMDAwIGZpbGUgaGVhZGVyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIGhlYWRlcgoARXJyb3Igd2l0aCBKUCBTaWduYXR1cmUgOiBiYWQgbWFnaWMgbnVtYmVyCgBJbiBTT1QgbWFya2VyLCBUUFNvdCAoJWQpIGlzIG5vdCB2YWxpZCByZWdhcmRzIHRvIHRoZSBjdXJyZW50IG51bWJlciBvZiB0aWxlLXBhcnQgKCVkKSwgZ2l2aW5nIHVwCgBJbiBTT1QgbWFya2VyLCBUUFNvdCAoJWQpIGlzIG5vdCB2YWxpZCByZWdhcmRzIHRvIHRoZSBwcmV2aW91cyBudW1iZXIgb2YgdGlsZS1wYXJ0ICglZCksIGdpdmluZyB1cAoASW4gU09UIG1hcmtlciwgVFBTb3QgKCVkKSBpcyBub3QgdmFsaWQgcmVnYXJkcyB0byB0aGUgY3VycmVudCBudW1iZXIgb2YgdGlsZS1wYXJ0IChoZWFkZXIpICglZCksIGdpdmluZyB1cAoAdGlsZXMgcmVxdWlyZSBhdCBsZWFzdCBvbmUgcmVzb2x1dGlvbgoATWFya2VyIGlzIG5vdCBjb21wbGlhbnQgd2l0aCBpdHMgcG9zaXRpb24KAFByb2JsZW0gd2l0aCBzZWVrIGZ1bmN0aW9uCgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQsIEludmFsaWQgY2Jsa3cvY2Jsa2ggY29tYmluYXRpb24KAEludmFsaWQgbXVsdGlwbGUgY29tcG9uZW50IHRyYW5zZm9ybWF0aW9uCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgY29sbGVjdGlvbnMgb3RoZXIgdGhhbiBhcnJheSBkZWNvcnJlbGF0aW9uCgBUb28gbGFyZ2UgdmFsdWUgZm9yIE5wcG0KAE5vdCBlbm91Z2ggYnl0ZXMgdG8gcmVhZCBOcHBtCgBiYWQgcGxhY2VkIGpwZWcgY29kZXN0cmVhbQoACSBNYWluIGhlYWRlciBzdGFydCBwb3NpdGlvbj0lbGxpCgkgTWFpbiBoZWFkZXIgZW5kIHBvc2l0aW9uPSVsbGkKAE1hcmtlciBzaXplIGluY29uc2lzdGVudCB3aXRoIHN0cmVhbSBsZW5ndGgKAFRpbGUgcGFydCBsZW5ndGggc2l6ZSBpbmNvbnNpc3RlbnQgd2l0aCBzdHJlYW0gbGVuZ3RoCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgZGF0YSBzcGFubmluZwoAV3JvbmcgZmxhZwoARXJyb3Igd2l0aCBGVFlQIHNpZ25hdHVyZSBCb3ggc2l6ZQoARXJyb3Igd2l0aCBKUCBzaWduYXR1cmUgQm94IHNpemUKAEludmFsaWQgcHJlY2luY3Qgc2l6ZQoASW5jb25zaXN0ZW50IG1hcmtlciBzaXplCgBJbnZhbGlkIG1hcmtlciBzaXplCgBFcnJvciB3aXRoIFNJWiBtYXJrZXIgc2l6ZQoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIGEgbmV3IHZhbGlkYXRpb24gcHJvY2VkdXJlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBkZWNvZGUgdGlsZQoARmFpbGVkIHRvIGRlY29kZSB0aGUgY29kZXN0cmVhbSBpbiB0aGUgSlAyIGZpbGUKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRoIGluZGl4IHNodWZmbGUKAENhbm5vdCBhbGxvY2F0ZSBUaWVyIDEgaGFuZGxlCgBObyBkZWNvZGVkIGFyZWEgcGFyYW1ldGVycywgc2V0IHRoZSBkZWNvZGVkIGFyZWEgdG8gdGhlIHdob2xlIGltYWdlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgVGFnLXRyZWUKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlaW5pdGlhbGl6ZSB0aGUgdGFnIHRyZWUKAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudCwgSW52YWxpZCB0cmFuc2Zvcm1hdGlvbiBmb3VuZAoARXJyb3IgcmVhZGluZyBTUENvZCBTUENvYyBlbGVtZW50LiBVbnN1cHBvcnRlZCBNaXhlZCBIVCBjb2RlLWJsb2NrIHN0eWxlIGZvdW5kCgBUaWxlIFkgY29vcmRpbmF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKAFRpbGUgWCBjb29yZGluYXRlcyBhcmUgbm90IHN1cHBvcnRlZAoASW1hZ2UgY29vcmRpbmF0ZXMgYWJvdmUgSU5UX01BWCBhcmUgbm90IHN1cHBvcnRlZAoASlBFRzIwMDAgSGVhZGVyIGJveCBub3QgcmVhZCB5ZXQsICclYyVjJWMlYycgYm94IHdpbGwgYmUgaWdub3JlZAoAb3BqX2oya19tZXJnZV9wcHQoKSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZAoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBTT1QgbWFya2VyLiBUaWxlIGluZGV4IGFsbG9jYXRpb24gZmFpbGVkCgBJZ25vcmluZyBpaGRyIGJveC4gRmlyc3QgaWhkciBib3ggYWxyZWFkeSByZWFkCgBacHB0ICV1IGFscmVhZHkgcmVhZAoAWnBwbSAldSBhbHJlYWR5IHJlYWQKAFBURVJNIGNoZWNrIGZhaWx1cmU6ICVkIHN5bnRoZXRpemVkIDB4RkYgbWFya2VycyByZWFkCgAJCQkgY2Jsa3c9Ml4lZAoACQkJIGNibGtoPTJeJWQKAAkJCSBxbnRzdHk9JWQKACVzIGR4PSVkLCBkeT0lZAoACQkJIHJvaXNoaWZ0PSVkCgAJCQkgbnVtZ2JpdHM9JWQKAAkJIG51bWxheWVycz0lZAoAJXMgbnVtY29tcHM9JWQKAG9wal9qcDJfYXBwbHlfY2RlZjogYWNuPSVkLCBudW1jb21wcz0lZAoAb3BqX2pwMl9hcHBseV9jZGVmOiBjbj0lZCwgbnVtY29tcHM9JWQKAAkJCSBudW1yZXNvbHV0aW9ucz0lZAoACQkgdHlwZT0lI3gsIHBvcz0lbGxpLCBsZW49JWQKACVzIHNnbmQ9JWQKAAkJCSBxbWZiaWQ9JWQKACVzIHByZWM9JWQKAAkJIG5iIG9mIHRpbGUtcGFydCBpbiB0aWxlIFslZF09JWQKACVzIHgxPSVkLCB5MT0lZAoAJXMgeDA9JWQsIHkwPSVkCgBGYWlsZWQgdG8gZGVjb2RlIHRpbGUgJWQvJWQKAFNldHRpbmcgZGVjb2RpbmcgYXJlYSB0byAlZCwlZCwlZCwlZAoARmFpbGVkIHRvIGRlY29kZSBjb21wb25lbnQgJWQKAEludmFsaWQgdmFsdWUgZm9yIG51bXJlc29sdXRpb25zIDogJWQsIG1heCB2YWx1ZSBpcyBzZXQgaW4gb3BlbmpwZWcuaCBhdCAlZAoASW52YWxpZCBjb21wb25lbnQgbnVtYmVyOiAlZCwgcmVnYXJkaW5nIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cyAlZAoAVG9vIG1hbnkgUE9DcyAlZAoASW52YWxpZCB0aWxlIG51bWJlciAlZAoASW52YWxpZCB0aWxlIHBhcnQgaW5kZXggZm9yIHRpbGUgbnVtYmVyICVkLiBHb3QgJWQsIGV4cGVjdGVkICVkCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG51bWJlciBvZiBjb21wb25lbnQgaXMgaWxsZWdhbCAtPiAlZAoATm90IGVub3VnaCBtZW1vcnkgZm9yIGNpZWxhYgoAQ2Fubm90IGFsbG9jYXRlIGNibGstPmRlY29kZWRfZGF0YQoARmFpbGVkIHRvIG1lcmdlIFBQVCBkYXRhCgBGYWlsZWQgdG8gbWVyZ2UgUFBNIGRhdGEKAEludmFsaWQgbnVtYmVyIG9mIGxheWVycyBpbiBDT0QgbWFya2VyIDogJWQgbm90IGluIHJhbmdlIFsxLTY1NTM1XQoAU3RyZWFtIHRvbyBzaG9ydCwgZXhwZWN0ZWQgU09UCgBVbmFibGUgdG8gc2V0IHQxIGhhbmRsZSBhcyBUTFMKAFN0cmVhbSBkb2VzIG5vdCBlbmQgd2l0aCBFT0MKAENhbm5vdCBoYW5kbGUgYm94IHNpemVzIGhpZ2hlciB0aGFuIDJeMzIKAG9wal9waV9uZXh0X2xyY3AoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3JsY3AoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X2NwcmwoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3BjcmwoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3JwY2woKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal90MV9kZWNvZGVfY2JsaygpOiB1bnN1cHBvcnRlZCBicG5vX3BsdXNfb25lID0gJWQgPj0gMzEKAEZhaWxlZCB0byBkZWNvZGUgdGlsZSAxLzEKAEluc3VmZmljaWVudCBkYXRhIGZvciBDTUFQIGJveC4KAE5lZWQgdG8gcmVhZCBhIFBDTFIgYm94IGJlZm9yZSB0aGUgQ01BUCBib3guCgBJbnN1ZmZpY2llbnQgZGF0YSBmb3IgQ0RFRiBib3guCgBOdW1iZXIgb2YgY2hhbm5lbCBkZXNjcmlwdGlvbiBpcyBlcXVhbCB0byB6ZXJvIGluIENERUYgYm94LgoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3g6IG5vICdpaGRyJyBib3guCgBOb24gY29uZm9ybWFudCBjb2Rlc3RyZWFtIFRQc290PT1UTnNvdC4KAFN0cmVhbSBlcnJvciB3aGlsZSByZWFkaW5nIEpQMiBIZWFkZXIgYm94OiBib3ggbGVuZ3RoIGlzIGluY29uc2lzdGVudC4KAEJveCBsZW5ndGggaXMgaW5jb25zaXN0ZW50LgoAUmVzb2x1dGlvbiBmYWN0b3IgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHJlc29sdXRpb24gaW4gdGhlIGNvbXBvbmVudC4KAENvbXBvbmVudCBtYXBwaW5nIHNlZW1zIHdyb25nLiBUcnlpbmcgdG8gY29ycmVjdC4KAEluY29tcGxldGUgY2hhbm5lbCBkZWZpbml0aW9ucy4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIEludmFsaWQgY29kZWJsb2NrIGxlbmd0aCB2YWx1ZXMuCgBXZSBkbyBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gMyBjb2RpbmcgcGFzc2VzIGluIGFuIEhUIGNvZGVibG9jazsgVGhpcyBjb2RlYmxvY2tzIGhhcyAlZCBwYXNzZXMuCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBEZWNvZGluZyB0aGlzIGNvZGVibG9jayBpcyBzdG9wcGVkLiBUaGVyZSBhcmUgJWQgemVybyBiaXRwbGFuZXMgaW4gJWQgYml0cGxhbmVzLgoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIHRyYW5zZm9ybWF0aW9uIHN0YWdlcy4KAFVua25vd24gbWFya2VyIGhhcyBiZWVuIGRldGVjdGVkIGFuZCBnZW5lcmF0ZWQgZXJyb3IuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3NldF9kZWNvZGVkX2NvbXBvbmVudHMgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3NldHVwX2RlY29kZXIgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3JlYWRfaGVhZGVyIGZ1bmN0aW9uIGlzIG5vdCBhIGRlY29tcHJlc3NvciBoYW5kbGVyLgoAVGlsZXMgZG9uJ3QgYWxsIGhhdmUgdGhlIHNhbWUgZGltZW5zaW9uLiBTa2lwIHRoZSBNQ1Qgc3RlcC4KAE51bWJlciBvZiBjb21wb25lbnRzICglZCkgaXMgaW5jb25zaXN0ZW50IHdpdGggYSBNQ1QuIFNraXAgdGhlIE1DVCBzdGVwLgoASlAyIGJveCB3aGljaCBhcmUgYWZ0ZXIgdGhlIGNvZGVzdHJlYW0gd2lsbCBub3QgYmUgcmVhZCBieSB0aGlzIGZ1bmN0aW9uLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gV2hlbiB0aGUgbnVtYmVyIG9mIHplcm8gcGxhbmVzIGJpdHBsYW5lcyBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGJpdHBsYW5lcywgb25seSB0aGUgY2xlYW51cCBwYXNzIG1ha2VzIHNlbnNlLCBidXQgd2UgaGF2ZSAlZCBwYXNzZXMgaW4gdGhpcyBjb2RlYmxvY2suIFRoZXJlZm9yZSwgb25seSB0aGUgY2xlYW51cCBwYXNzIHdpbGwgYmUgZGVjb2RlZC4gVGhpcyBtZXNzYWdlIHdpbGwgbm90IGJlIGRpc3BsYXllZCBhZ2Fpbi4KAEltYWdlIGhhcyBsZXNzIGNvbXBvbmVudHMgdGhhbiBjb2Rlc3RyZWFtLgoATmVlZCB0byBkZWNvZGUgdGhlIG1haW4gaGVhZGVyIGJlZm9yZSBiZWdpbiB0byBkZWNvZGUgdGhlIHJlbWFpbmluZyBjb2Rlc3RyZWFtLgoAUHNvdCB2YWx1ZSBvZiB0aGUgY3VycmVudCB0aWxlLXBhcnQgaXMgZXF1YWwgdG8gemVybywgd2UgYXNzdW1pbmcgaXQgaXMgdGhlIGxhc3QgdGlsZS1wYXJ0IG9mIHRoZSBjb2Rlc3RyZWFtLgoAQSBtYWxmb3JtZWQgY29kZWJsb2NrIHRoYXQgaGFzIG1vcmUgdGhhbiBvbmUgY29kaW5nIHBhc3MsIGJ1dCB6ZXJvIGxlbmd0aCBmb3IgMm5kIGFuZCBwb3RlbnRpYWxseSB0aGUgM3JkIHBhc3MgaW4gYW4gSFQgY29kZWJsb2NrLgoACQkJIHRpbGUtcGFydFslZF06IHN0YXJfcG9zPSVsbGksIGVuZF9oZWFkZXI9JWxsaSwgZW5kX3Bvcz0lbGxpLgoAVGlsZSAldSBoYXMgVFBzb3QgPT0gMCBhbmQgVE5zb3QgPT0gMCwgYnV0IG5vIG90aGVyIHRpbGUtcGFydHMgd2VyZSBmb3VuZC4gRU9DIGlzIGFsc28gbWlzc2luZy4KAENvbXBvbmVudCAlZCBkb2Vzbid0IGhhdmUgYSBtYXBwaW5nLgoAQSBjb25mb3JtaW5nIEpQMiByZWFkZXIgc2hhbGwgaWdub3JlIGFsbCBDb2xvdXIgU3BlY2lmaWNhdGlvbiBib3hlcyBhZnRlciB0aGUgZmlyc3QsIHNvIHdlIGlnbm9yZSB0aGlzIG9uZS4KAFRoZSBzaWduYXR1cmUgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAFRoZSAgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAFRoZSBmdHlwIGJveCBtdXN0IGJlIHRoZSBzZWNvbmQgYm94IGluIHRoZSBmaWxlLgoARmFpbGVkIHRvIGRlY29kZS4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIEluY29ycmVjdCBNRUwgc2VnbWVudCBzZXF1ZW5jZS4KAENvbXBvbmVudCAlZCBpcyBtYXBwZWQgdHdpY2UuCgBPbmx5IG9uZSBDTUFQIGJveCBpcyBhbGxvd2VkLgoAYXBwbHlfY29sb3JfdHJhbnNmb3JtcyA9IE9QSl9UUlVFIGlzIG5vdCBzdXBwb3J0ZWQuCgBXZSBuZWVkIGFuIGltYWdlIHByZXZpb3VzbHkgY3JlYXRlZC4KAElIRFIgYm94X21pc3NpbmcuIFJlcXVpcmVkLgoASlAySCBib3ggbWlzc2luZy4gUmVxdWlyZWQuCgBOb3Qgc3VyZSBob3cgdGhhdCBoYXBwZW5lZC4KAE1haW4gaGVhZGVyIGhhcyBiZWVuIGNvcnJlY3RseSBkZWNvZGVkLgoAVGlsZSAlZC8lZCBoYXMgYmVlbiBkZWNvZGVkLgoASGVhZGVyIG9mIHRpbGUgJWQgLyAlZCBoYXMgYmVlbiByZWFkLgoARW1wdHkgU09UIG1hcmtlciBkZXRlY3RlZDogUHNvdD0lZC4KAERpcmVjdCB1c2UgYXQgIyVkIGhvd2V2ZXIgcGNvbD0lZC4KAEltcGxlbWVudGF0aW9uIGxpbWl0YXRpb246IGZvciBwYWxldHRlIG1hcHBpbmcsIHBjb2xbJWRdIHNob3VsZCBiZSBlcXVhbCB0byAlZCwgYnV0IGlzIGVxdWFsIHRvICVkLgoASW52YWxpZCBjb21wb25lbnQvcGFsZXR0ZSBpbmRleCBmb3IgZGlyZWN0IG1hcHBpbmcgJWQuCgBJbnZhbGlkIHZhbHVlIGZvciBjbWFwWyVkXS5tdHlwID0gJWQuCgBQc290IHZhbHVlIGlzIG5vdCBjb3JyZWN0IHJlZ2FyZHMgdG8gdGhlIEpQRUcyMDAwIG5vcm06ICVkLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gVkxDIGNvZGUgcHJvZHVjZXMgc2lnbmlmaWNhbnQgc2FtcGxlcyBvdXRzaWRlIHRoZSBjb2RlYmxvY2sgYXJlYS4KAFVuZXhwZWN0ZWQgT09NLgoAMzIgYml0cyBhcmUgbm90IGVub3VnaCB0byBkZWNvZGUgdGhpcyBjb2RlYmxvY2ssIHNpbmNlIHRoZSBudW1iZXIgb2YgYml0cGxhbmUsICVkLCBpcyBsYXJnZXIgdGhhbiAzMC4KAEJvdHRvbSBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTE9JWQpIHNob3VsZCBiZSA+IDAuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIHNob3VsZCBiZSA+IDAuCgBVcCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTA9JWQpIHNob3VsZCBiZSA+PSAwLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIHNob3VsZCBiZSA+PSAwLgoARXJyb3IgcmVhZGluZyBQUFQgbWFya2VyOiBwYWNrZXQgaGVhZGVyIGhhdmUgYmVlbiBwcmV2aW91c2x5IGZvdW5kIGluIHRoZSBtYWluIGhlYWRlciAoUFBNIG1hcmtlcikuCgBTdGFydCB0byByZWFkIGoyayBtYWluIGhlYWRlciAoJWxsZCkuCgBCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZc2l6PSVkKS4KAFVwIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MD0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWXNpej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLgoAQm90dG9tIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWU9zaXo9JWQpLgoAVXAgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhPc2l6PSVkKS4KAExlZnQgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3gwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChYT3Npej0lZCkuCgBTaXplIHggb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0udz0lZCkuCgBTaXplIHkgb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0uaD0lZCkuCgBUaWxlIHJlYWQsIGRlY29kZWQgYW5kIHVwZGF0ZWQgaXMgbm90IHRoZSBkZXNpcmVkIG9uZSAoJWQgdnMgJWQpLgoASW52YWxpZCBjb21wb25lbnQgaW5kZXggJWQgKD49ICVkKS4KAG9wal9yZWFkX2hlYWRlcigpIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIG9wal9zZXRfZGVjb2RlZF9jb21wb25lbnRzKCkuCgBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGluIG9wal9qcDJfYXBwbHlfcGNscigpLgoAaW1hZ2UtPmNvbXBzWyVkXS5kYXRhID09IE5VTEwgaW4gb3BqX2pwMl9hcHBseV9wY2xyKCkuCgBpbnZhbGlkIGJveCBzaXplICVkICgleCkKAEZhaWwgdG8gcmVhZCB0aGUgY3VycmVudCBtYXJrZXIgc2VnbWVudCAoJSN4KQoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBJSERSIHcoJXUpIGgoJXUpIHZzLiBTSVogdygldSkgaCgldSkKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlciAoYmFkIG51bWJlciBvZiBjb21wb25lbnRzKQoASW52YWxpZCBudW1iZXIgb2YgdGlsZXMgOiAldSB4ICV1IChtYXhpbXVtIGZpeGVkIGJ5IGpwZWcyMDAwIG5vcm0gaXMgNjU1MzUgdGlsZXMpCgBJbnZhbGlkIG51bWJlciBvZiBjb21wb25lbnRzIChpaGRyKQoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGltYWdlIGhlYWRlciAoaWhkcikKAFdyb25nIHZhbHVlcyBmb3I6IHcoJWQpIGgoJWQpIG51bWNvbXBzKCVkKSAoaWhkcikKAEludmFsaWQgdmFsdWVzIGZvciBjb21wID0gJWQgOiBkeD0ldSBkeT0ldSAoc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMjU1IGFjY29yZGluZyB0byB0aGUgSlBFRzIwMDAgbm9ybSkKAEJhZCBpbWFnZSBoZWFkZXIgYm94IChiYWQgc2l6ZSkKAEJhZCBDT0xSIGhlYWRlciBib3ggKGJhZCBzaXplKQoAQmFkIEJQQ0MgaGVhZGVyIGJveCAoYmFkIHNpemUpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG5lZ2F0aXZlIG9yIHplcm8gaW1hZ2Ugc2l6ZSAoJWxsZCB4ICVsbGQpCgBza2lwOiBzZWdtZW50IHRvbyBsb25nICglZCkgd2l0aCBtYXggKCVkKSBmb3IgY29kZWJsb2NrICVkIChwPSVkLCBiPSVkLCByPSVkLCBjPSVkKQoAcmVhZDogc2VnbWVudCB0b28gbG9uZyAoJWQpIHdpdGggbWF4ICglZCkgZm9yIGNvZGVibG9jayAlZCAocD0lZCwgYj0lZCwgcj0lZCwgYz0lZCkKAERlc3BpdGUgSlAyIEJQQyE9MjU1LCBwcmVjaXNpb24gYW5kL29yIHNnbmQgdmFsdWVzIGZvciBjb21wWyVkXSBpcyBkaWZmZXJlbnQgdGhhbiBjb21wWzBdOgogICAgICAgIFswXSBwcmVjKCVkKSBzZ25kKCVkKSBbJWRdIHByZWMoJWQpIHNnbmQoJWQpCgBiYWQgY29tcG9uZW50IG51bWJlciBpbiBSR04gKCVkIHdoZW4gdGhlcmUgYXJlIG9ubHkgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG51bWJlciBvZiBjb21wb25lbnQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBwYXJhbWV0ZXJzICggJWQgdnMgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IGludmFsaWQgdGlsZSBzaXplICh0ZHg6ICVkLCB0ZHk6ICVkKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoYmFkIHNpemU6ICVkKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoQ0lFTGFiLCBiYWQgc2l6ZTogJWQpCgBQVEVSTSBjaGVjayBmYWlsdXJlOiAlZCByZW1haW5pbmcgYnl0ZXMgaW4gY29kZSBibG9jayAoJWQgdXNlZCAvICVkKQoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gT25lIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uIGlzIG5vdCBtZXQ6IDIgPD0gU2N1cCA8PSBtaW4oTGN1cCwgNDA3OSkKAEludmFsaWQgdmFsdWVzIGZvciBjb21wID0gJWQgOiBwcmVjPSV1IChzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAzOCBhY2NvcmRpbmcgdG8gdGhlIEpQRUcyMDAwIG5vcm0uIE9wZW5KcGVnIG9ubHkgc3VwcG9ydHMgdXAgdG8gMzEpCgBJbnZhbGlkIGJpdCBudW1iZXIgJWQgaW4gb3BqX3QyX3JlYWRfcGFja2V0X2hlYWRlcigpCgBTdHJlYW0gZXJyb3IhCgBFcnJvciBvbiB3cml0aW5nIHN0cmVhbSEKAFN0cmVhbSByZWFjaGVkIGl0cyBlbmQgIQoARXhwZWN0ZWQgYSBTT0MgbWFya2VyIAoASW52YWxpZCBib3ggc2l6ZSAlZCBmb3IgYm94ICclYyVjJWMlYycuIE5lZWQgJWQgYnl0ZXMsICVkIGJ5dGVzIHJlbWFpbmluZyAKAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIERlY29kaW5nIHRoaXMgY29kZWJsb2NrIGlzIHN0b3BwZWQuIFVfcSBpcyBsYXJnZXIgdGhhbiB6ZXJvIGJpdHBsYW5lcyArIDEgCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBEZWNvZGluZyB0aGlzIGNvZGVibG9jayBpcyBzdG9wcGVkLiBVX3EgaXNsYXJnZXIgdGhhbiBiaXRwbGFuZXMgKyAxIAoAQ09MUiBCT1ggbWV0aCB2YWx1ZSBpcyBub3QgYSByZWd1bGFyIHZhbHVlICglZCksIHNvIHdlIHdpbGwgaWdub3JlIHRoZSBlbnRpcmUgQ29sb3VyIFNwZWNpZmljYXRpb24gYm94LiAKAFdoaWxlIHJlYWRpbmcgQ0NQX1FOVFNUWSBlbGVtZW50IGluc2lkZSBRQ0Qgb3IgUUNDIG1hcmtlciBzZWdtZW50LCBudW1iZXIgb2Ygc3ViYmFuZHMgKCVkKSBpcyBncmVhdGVyIHRvIE9QSl9KMktfTUFYQkFORFMgKCVkKS4gU28gd2UgbGltaXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgdG8gT1BKX0oyS19NQVhCQU5EUyAoJWQpIGFuZCBza2lwIHRoZSByZXN0LiAKAEpQMiBJSERSIGJveDogY29tcHJlc3Npb24gdHlwZSBpbmRpY2F0ZSB0aGF0IHRoZSBmaWxlIGlzIG5vdCBhIGNvbmZvcm1pbmcgSlAyIGZpbGUgKCVkKSAKAFRpbGUgaW5kZXggcHJvdmlkZWQgYnkgdGhlIHVzZXIgaXMgaW5jb3JyZWN0ICVkIChtYXggPSAlZCkgCgBFcnJvciBkZWNvZGluZyBjb21wb25lbnQgJWQuClRoZSBudW1iZXIgb2YgcmVzb2x1dGlvbnMgdG8gcmVtb3ZlICglZCkgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHRoZSBudW1iZXIgb2YgcmVzb2x1dGlvbnMgb2YgdGhpcyBjb21wb25lbnQg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AAABVAAAAQAAABBQAADQUAAAAUgAAAAAAAAgUAAAwFAAAAFIAAABAAAAMFAAANBQAAABOAAAAAAAAEBQAADAUAAAATgAAAEAAABQUAAA0FAAAAEwAAAAAAAAYFAAACBRAAABMAAAAQAAAHBQAAAwUQAAASQAAAAAAACAUAAAQFEAAAEkAAABAAAAkFAAAFBRAAABHAAAAAAAAKBQAACAUQAAARwAAAEAAACwUAAAkFEAAAEWAAAAAAAAoFIAAKBRAAABFgAAAQAAALBSAACwUQAAAVYAAAAAAADgUAAA0FAAAAFWAAABAAAA8FAAAMBQAAABVAAAAAAAAABRAADAUAAAAVQAAAEAAAAQUQAA0FAAAAFRAAAAAAAAIFEAAOBQAAABUQAAAQAAADBRAADwUAAAAUgAAAAAAABAUQAAAFEAAAFIAAABAAAAUFEAABBRAAABOAAAAAAAAGBRAAAgUQAAATgAAAEAAABwUQAAMFEAAAE0AAAAAAAAgFEAAEBRAAABNAAAAQAAAJBRAABQUQAAATAAAAAAAACgUQAAYFEAAAEwAAABAAAAsFEAAHBRAAABKAAAAAAAAMBRAABgUQAAASgAAAEAAADQUQAAcFEAAAEkAAAAAAAA4FEAAIBRAAABJAAAAQAAAPBRAACQUQAAASIAAAAAAAAAUgAAoFEAAAEiAAABAAAAEFIAALBRAAABHAAAAAAAACBSAADAUQAAARwAAAEAAAAwUgAA0FEAAAEYAAAAAAAAQFIAAOBRAAABGAAAAQAAAFBSAADwUQAAARYAAAAAAABgUgAAAFIAAAEWAAABAAAAcFIAABBSAAABFAAAAAAAAIBSAAAgUgAAARQAAAEAAACQUgAAMFIAAAESAAAAAAAAoFIAAEBSAAABEgAAAQAAALBSAABQUgAAAREAAAAAAADAUgAAYFIAAAERAAABAAAA0FIAAHBSAADBCgAAAAAAAOBSAACAUgAAwQoAAAEAAADwUgAAkFIAAMEJAAAAAAAAAFMAAKBSAADBCQAAAQAAABBTAACwUgAAoQgAAAAAAAAgUwAAwFIAAKEIAAABAAAAMFMAANBSAAAhBQAAAAAAAEBTAADgUgAAIQUAAAEAAABQUwAA8FIAAEEEAAAAAAAAYFMAAABTAABBBAAAAQAAAHBTAAAQUwAAoQIAAAAAAACAUwAAIFMAAKECAAABAAAAkFMAADBTAAAhAgAAAAAAAKBTAABAUwAAIQIAAAEAAACwUwAAUFMAAEEBAAAAAAAAwFMAAGBTAABBAQAAAQAAANBTAABwUwAAEQEAAAAAAADgUwAAgFMAABEBAAABAAAA8FMAAJBTAACFAAAAAAAAAABUAACgUwAAhQAAAAEAAAAQVAAAsFMAAEkAAAAAAAAAIFQAAMBTAABJAAAAAQAAADBUAADQUwAAJQAAAAAAAABAVAAA4FMAACUAAAABAAAAUFQAAPBTAAAVAAAAAAAAAGBUAAAAVAAAFQAAAAEAAABwVAAAEFQAAAkAAAAAAAAAgFQAACBUAAAJAAAAAQAAAJBUAAAwVAAABQAAAAAAAACgVAAAQFQAAAUAAAABAAAAsFQAAFBUAAABAAAAAAAAAKBUAABgVAAAAQAAAAEAAACwVAAAcFQAAAFWAAAAAAAAwFQAAMBUAAABVgAAAQAAANBUAADQVAAAAAEDAwECAwMFBgcHBgYHBwABAwMBAgMDBQYHBwYGBwcFBgcHBgYHBwgICAgICAgIBQYHBwYGBwcICAgICAgICAECAwMCAgMDBgYHBwYGBwcBAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAECAwMCAgMDBgYHBwYGBwcBAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgCAgMDAgIDAwYGBwcGBgcHAgIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgAAQUGAQIGBgMDBwcDAwcHAAEFBgECBgYDAwcHAwMHBwMDBwcDAwcHBAQHBwQEBwcDAwcHAwMHBwQEBwcEBAcHAQIGBgICBgYDAwcHAwMHBwECBgYCAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwUGCAgGBggIBwcICAcHCAgFBggIBgYICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgGBggIBgYICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIAQIGBgICBgYDAwcHAwMHBwECBgYCAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwICBgYCAgYGAwMHBwMDBwcCAgYGAgIGBgMDBwcDAwcHAwMHBwMDBwcEBAcHBAQHBwMDBwcDAwcHBAQHBwQEBwcGBggIBgYICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAABAwMBAgMDBQYHBwYGBwcAAQMDAQIDAwUGBwcGBgcHBQYHBwYGBwcICAgICAgICAUGBwcGBgcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAgIDAwICAwMGBgcHBgYHBwICAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAAMBBAMGBAcBBAIFBAcFBwADAQQDBgQHAQQCBQQHBQcBBAIFBAcFBwIFAgUFBwUHAQQCBQQHBQcCBQIFBQcFBwMGBAcGCAcIBAcFBwcIBwgDBgQHBggHCAQHBQcHCAcIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgBBAIFBAcFBwIFAgUFBwUHAQQCBQQHBQcCBQIFBQcFBwIFAgUFBwUHAgUCBQUHBQcCBQIFBQcFBwIFAgUFBwUHBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAMGBAcGCAcIBAcFBwcIBwgDBgQHBggHCAQHBQcHCAcIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgGCAcICAgICAcIBwgICAgIBggHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgJCQoKCQkKCgwMDQsMDA0LCQkKCgkJCgoMDAsNDAwLDQwMDQ0MDAsLDAkNCgkMCgsMDAsLDAwNDQwJCwoJDAoNCQkKCgkJCgoMDA0LDAwNCwkJCgoJCQoKDAwLDQwMCw0MDA0NDAwLCwwJDQoJDAoLDAwLCwwMDQ0MCQsKCQwKDQoKCgoKCgoKDQsNCw0LDQsKCgkJCgoJCQ0LDAwNCwwMDQ0NDQsLCwsNCg0KCgsKCw0NDAwLCwwMDQoMCQoLCQwKCgkJCgoJCQsNDAwLDQwMCgoKCgoKCgoLDQsNCw0LDQsLDAwNDQwMCwoMCQoNCQwLCwsLDQ0NDQsKCwoKDQoNAEHpuwELNwEAAQABAAEAAAEBAAABAQABAAEAAQABAAAAAAEBAQEAAAAAAAEAAQAAAAABAQEBAAAAAQABAQEAQam8AQs3AQABAAEAAQAAAQEAAAEBAAEAAQABAAEAAAAAAQEBAQAAAAAAAQABAAAAAAEBAQEAAAABAAEBAQBB6bwBCwcBAAEAAQABAEH5vAELlQIBAAEAAQABAAAAAAEBAQEAAAAAAAEAAQAAAAABAQEBAAAAAAABAAEBAQAAAQEAAAABAAEAAQABAQEBAQEBAQEAAQABAAEAAQAAAAABAQEBAAEAAAEBAAEAAAAAAQEBAQABAAEBAQEBAgAAAAQAAAAEAAAACAAAAJD/AAAMAAAAGAAAAFL/AAAUAAAAGQAAAFP/AAAUAAAAGgAAAF7/AAAUAAAAGwAAAFz/AAAUAAAAHAAAAF3/AAAUAAAAHQAAAF//AAAUAAAAHgAAAFH/AAACAAAAHwAAAFX/AAAEAAAAIAAAAFf/AAAEAAAAIQAAAFj/AAAQAAAAIgAAAGD/AAAEAAAAIwAAAGH/AAAQAAAAJAAAAJH/AEGYvwELZWP/AAAEAAAAJQAAAGT/AAAUAAAAJgAAAHT/AAAUAAAAJwAAAHj/AAAEAAAAKAAAAFD/AAAEAAAAKQAAAFn/AAAEAAAAKgAAAHX/AAAUAAAAKwAAAHf/AAAUAAAALAAAAAAAAAAUAEGQwAELNS0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAAICBQajYAAABweXRmNwAAAGgycGo4AEHQwAELMnJkaGk5AAAAcmxvYzoAAABjY3BiOwAAAHJsY3A8AAAAcGFtYz0AAABmZWRjPgAAAHhiAEGQwQELQRkACwAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQAKChkZGQMKBwABAAkLGAAACQYLAAALAAYZAAAAGRkZAEHhwQELIQ4AAAAAAAAAABkACw0ZGRkADQAAAgAJDgAAAAkADgAADgBBm8IBCwEMAEGnwgELFRMAAAAAEwAAAAAJDAAAAAAADAAADABB1cIBCwEQAEHhwgELFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABBj8MBCwESAEGbwwELHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBB0sMBCw4aAAAAGhoaAAAAAAAACQBBg8QBCwEUAEGPxAELFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABBvcQBCwEWAEHJxAELJxUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgBB8cQBCwhsAQAAAAAABQBBhMUBCwFpAEGcxQELDmoAAABrAAAA+GcAAAAEAEG0xQELAQEAQcTFAQsF/////wo="); return receiveInstance(instantiateSync(u, e)[0]) }(); G.j, a._malloc = G.k, a._free = G.l, a._jp2_decode = G.n, G._emscripten_stack_restore, G._emscripten_stack_alloc, G.emscripten_stack_get_current; w = function runCaller() { D || run(); D || (w = runCaller) }; function run() { if (!(m > 0)) { !function preRun() { if (a.preRun) { "function" == typeof a.preRun && (a.preRun = [a.preRun]); for (; a.preRun.length;)e = a.preRun.shift(), d.unshift(e) } var e; callRuntimeCallbacks(d) }(); if (!(m > 0)) if (a.setStatus) { a.setStatus("Running..."); setTimeout((function () { setTimeout((function () { a.setStatus("") }), 1); doRun() }), 1) } else doRun() } function doRun() { if (!D) { D = !0; a.calledRun = !0; !function initRuntime() { callRuntimeCallbacks(f) }(); t(a); a.onRuntimeInitialized && a.onRuntimeInitialized(); !function postRun() { if (a.postRun) { "function" == typeof a.postRun && (a.postRun = [a.postRun]); for (; a.postRun.length;)e = a.postRun.shift(), p.unshift(e) } var e; callRuntimeCallbacks(p) }() } } } if (a.preInit) { "function" == typeof a.preInit && (a.preInit = [a.preInit]); for (; a.preInit.length > 0;)a.preInit.pop()() } run(); return a }); const Ii = gi; class JpxError extends rt { constructor(e) { super(e, "JpxError") } } class JpxImage { static #y = null; static decode(e, t = !1) { this.#y ||= Ii({ warn }); const i = this.#y.decode(e, t); if ("string" == typeof i) throw new JpxError(i); return i } static cleanup() { this.#y = null } static parseImageProperties(e) { let t = e.getByte(); for (; t >= 0;) { const i = t; t = e.getByte(); if (65361 === (i << 8 | t)) { e.skip(4); const t = e.getInt32() >>> 0, i = e.getInt32() >>> 0, a = e.getInt32() >>> 0, s = e.getInt32() >>> 0; e.skip(16); return { width: t - a, height: i - s, bitsPerComponent: 8, componentsCount: e.getUint16() } } } throw new JpxError("No size marker found in JPX stream") } } class JpxStream extends DecodeStream { constructor(e, t, i) { super(t); this.stream = e; this.dict = e.dict; this.maybeLength = t; this.params = i } get bytes() { return shadow(this, "bytes", this.stream.getBytes(this.maybeLength)) } ensureBuffer(e) { } readBlock(e) { if (!this.eof) { this.buffer = JpxImage.decode(this.bytes, e); this.bufferLength = this.buffer.length; this.eof = !0 } } } class LZWStream extends DecodeStream { constructor(e, t, i) { super(t); this.str = e; this.dict = e.dict; this.cachedData = 0; this.bitsCached = 0; const a = 4096, s = { earlyChange: i, codeLength: 9, nextCode: 258, dictionaryValues: new Uint8Array(a), dictionaryLengths: new Uint16Array(a), dictionaryPrevCodes: new Uint16Array(a), currentSequence: new Uint8Array(a), currentSequenceLength: 0 }; for (let e = 0; e < 256; ++e) { s.dictionaryValues[e] = e; s.dictionaryLengths[e] = 1 } this.lzwState = s } readBits(e) { let t = this.bitsCached, i = this.cachedData; for (; t < e;) { const e = this.str.getByte(); if (-1 === e) { this.eof = !0; return null } i = i << 8 | e; t += 8 } this.bitsCached = t -= e; this.cachedData = i; this.lastCode = null; return i >>> t & (1 << e) - 1 } readBlock() { let e, t, i, a = 1024; const s = this.lzwState; if (!s) return; const r = s.earlyChange; let n = s.nextCode; const o = s.dictionaryValues, g = s.dictionaryLengths, c = s.dictionaryPrevCodes; let h = s.codeLength, l = s.prevCode; const C = s.currentSequence; let Q = s.currentSequenceLength, E = 0, u = this.bufferLength, d = this.ensureBuffer(this.bufferLength + a); for (e = 0; e < 512; e++) { const e = this.readBits(h), s = Q > 0; if (e < 256) { C[0] = e; Q = 1 } else { if (!(e >= 258)) { if (256 === e) { h = 9; n = 258; Q = 0; continue } this.eof = !0; delete this.lzwState; break } if (e < n) { Q = g[e]; for (t = Q - 1, i = e; t >= 0; t--) { C[t] = o[i]; i = c[i] } } else C[Q++] = C[0] } if (s) { c[n] = l; g[n] = g[l] + 1; o[n] = C[0]; n++; h = n + r & n + r - 1 ? h : 0 | Math.min(Math.log(n + r) / .6931471805599453 + 1, 12) } l = e; E += Q; if (a < E) { do { a += 512 } while (a < E); d = this.ensureBuffer(this.bufferLength + a) } for (t = 0; t < Q; t++)d[u++] = C[t] } s.nextCode = n; s.codeLength = h; s.prevCode = l; s.currentSequenceLength = Q; this.bufferLength = u } } class PredictorStream extends DecodeStream { constructor(e, t, i) { super(t); if (!(i instanceof Dict)) return e; const a = this.predictor = i.get("Predictor") || 1; if (a <= 1) return e; if (2 !== a && (a < 10 || a > 15)) throw new FormatError(`Unsupported predictor: ${a}`); this.readBlock = 2 === a ? this.readBlockTiff : this.readBlockPng; this.str = e; this.dict = e.dict; const s = this.colors = i.get("Colors") || 1, r = this.bits = i.get("BPC", "BitsPerComponent") || 8, n = this.columns = i.get("Columns") || 1; this.pixBytes = s * r + 7 >> 3; this.rowBytes = n * s * r + 7 >> 3; return this } readBlockTiff() { const e = this.rowBytes, t = this.bufferLength, i = this.ensureBuffer(t + e), a = this.bits, s = this.colors, r = this.str.getBytes(e); this.eof = !r.length; if (this.eof) return; let n, o = 0, g = 0, c = 0, h = 0, l = t; if (1 === a && 1 === s) for (n = 0; n < e; ++n) { let e = r[n] ^ o; e ^= e >> 1; e ^= e >> 2; e ^= e >> 4; o = (1 & e) << 7; i[l++] = e } else if (8 === a) { for (n = 0; n < s; ++n)i[l++] = r[n]; for (; n < e; ++n) { i[l] = i[l - s] + r[n]; l++ } } else if (16 === a) { const t = 2 * s; for (n = 0; n < t; ++n)i[l++] = r[n]; for (; n < e; n += 2) { const e = ((255 & r[n]) << 8) + (255 & r[n + 1]) + ((255 & i[l - t]) << 8) + (255 & i[l - t + 1]); i[l++] = e >> 8 & 255; i[l++] = 255 & e } } else { const e = new Uint8Array(s + 1), l = (1 << a) - 1; let C = 0, Q = t; const E = this.columns; for (n = 0; n < E; ++n)for (let t = 0; t < s; ++t) { if (c < a) { o = o << 8 | 255 & r[C++]; c += 8 } e[t] = e[t] + (o >> c - a) & l; c -= a; g = g << a | e[t]; h += a; if (h >= 8) { i[Q++] = g >> h - 8 & 255; h -= 8 } } h > 0 && (i[Q++] = (g << 8 - h) + (o & (1 << 8 - h) - 1)) } this.bufferLength += e } readBlockPng() { const e = this.rowBytes, t = this.pixBytes, i = this.str.getByte(), a = this.str.getBytes(e); this.eof = !a.length; if (this.eof) return; const s = this.bufferLength, r = this.ensureBuffer(s + e); let n = r.subarray(s - e, s); 0 === n.length && (n = new Uint8Array(e)); let o, g, c, h = s; switch (i) { case 0: for (o = 0; o < e; ++o)r[h++] = a[o]; break; case 1: for (o = 0; o < t; ++o)r[h++] = a[o]; for (; o < e; ++o) { r[h] = r[h - t] + a[o] & 255; h++ } break; case 2: for (o = 0; o < e; ++o)r[h++] = n[o] + a[o] & 255; break; case 3: for (o = 0; o < t; ++o)r[h++] = (n[o] >> 1) + a[o]; for (; o < e; ++o) { r[h] = (n[o] + r[h - t] >> 1) + a[o] & 255; h++ } break; case 4: for (o = 0; o < t; ++o) { g = n[o]; c = a[o]; r[h++] = g + c } for (; o < e; ++o) { g = n[o]; const e = n[o - t], i = r[h - t], s = i + g - e; let l = s - i; l < 0 && (l = -l); let C = s - g; C < 0 && (C = -C); let Q = s - e; Q < 0 && (Q = -Q); c = a[o]; r[h++] = l <= C && l <= Q ? i + c : C <= Q ? g + c : e + c } break; default: throw new FormatError(`Unsupported predictor: ${i}`) }this.bufferLength += e } } class RunLengthStream extends 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, i = this.bufferLength, a = e[0]; if (a < 128) { t = this.ensureBuffer(i + a + 1); t[i++] = e[1]; if (a > 0) { const e = this.str.getBytes(a); t.set(e, i); i += a } } else { a = 257 - a; const s = e[1]; t = this.ensureBuffer(i + a + 1); for (let e = 0; e < a; e++)t[i++] = s } this.bufferLength = i } } class Parser { constructor({ lexer: e, xref: t, allowStreams: i = !1, recoveryMode: a = !1 }) { this.lexer = e; this.xref = t; this.allowStreams = i; this.recoveryMode = a; 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 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 MissingDataException) throw e; return !1 } } getObj(e = null) { const t = this.buf1; this.shift(); if (t instanceof Cmd) switch (t.cmd) { case "BI": return this.makeInlineImage(e); case "[": const i = []; for (; !isCmd(this.buf1, "]") && this.buf1 !== pt;)i.push(this.getObj(e)); if (this.buf1 === pt) { if (this.recoveryMode) return i; throw new ParserEOFException("End of file inside array.") } this.shift(); return i; case "<<": const a = new Dict(this.xref); for (; !isCmd(this.buf1, ">>") && this.buf1 !== pt;) { if (!(this.buf1 instanceof Name)) { info("Malformed dictionary: key must be a name object"); this.shift(); continue } const t = this.buf1.name; this.shift(); if (this.buf1 === pt) break; a.set(t, this.getObj(e)) } if (this.buf1 === pt) { if (this.recoveryMode) return a; throw new ParserEOFException("End of file inside dictionary.") } if (isCmd(this.buf2, "stream")) return this.allowStreams ? this.makeStream(a, e) : a; this.shift(); return a; default: return t }if (Number.isInteger(t)) { if (Number.isInteger(this.buf1) && isCmd(this.buf2, "R")) { const e = 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, i = e.pos; let a, s, r = 0; for (; -1 !== (a = e.getByte());)if (0 === r) r = 69 === a ? 1 : 0; else if (1 === r) r = 73 === a ? 2 : 0; else if (32 === a || 10 === a || 13 === a) { s = e.pos; const i = e.peekBytes(15), n = i.length; if (0 === n) break; for (let e = 0; e < n; e++) { a = i[e]; if ((0 !== a || 0 === i[e + 1]) && (10 !== a && 13 !== a && (a < 32 || a > 127))) { r = 0; break } } if (2 !== r) continue; if (!t) { warn("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined."); continue } const o = new Lexer(new Stream(i.slice()), t); o._hexStringWarn = () => { }; let g = 0; for (; ;) { const e = o.getObj(); if (e === pt) { r = 0; break } if (e instanceof Cmd) { const i = t[e.cmd]; if (!i) { r = 0; break } if (i.variableArgs ? g <= i.numArgs : g === i.numArgs) break; g = 0 } else g++ } if (2 === r) break } else r = 0; if (-1 === a) { warn("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker"); if (s) { warn('... trying to recover by using the last "EI" occurrence.'); e.skip(-(e.pos - s)) } } let n = 4; e.skip(-n); a = e.peekByte(); e.skip(n); isWhiteSpace(a) || n--; return e.pos - n - i } findDCTDecodeInlineStreamEnd(e) { const t = e.pos; let i, a, s = !1; for (; -1 !== (i = e.getByte());)if (255 === i) { switch (e.getByte()) { case 0: break; case 255: e.skip(-1); break; case 217: s = !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: a = e.getUint16(); a > 2 ? e.skip(a - 2) : e.skip(-2) }if (s) break } const r = e.pos - t; if (-1 === i) { warn("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead."); e.skip(-r); return this.findDefaultInlineStreamEnd(e) } this.inlineStreamSkipEI(e); return r } findASCII85DecodeInlineStreamEnd(e) { const t = e.pos; let i; for (; -1 !== (i = e.getByte());)if (126 === i) { const t = e.pos; i = e.peekByte(); for (; isWhiteSpace(i);) { e.skip(); i = e.peekByte() } if (62 === i) { e.skip(); break } if (e.pos > t) { const t = e.peekBytes(2); if (69 === t[0] && 73 === t[1]) break } } const a = e.pos - t; if (-1 === i) { warn("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead."); e.skip(-a); return this.findDefaultInlineStreamEnd(e) } this.inlineStreamSkipEI(e); return a } findASCIIHexDecodeInlineStreamEnd(e) { const t = e.pos; let i; for (; -1 !== (i = e.getByte()) && 62 !== i;); const a = e.pos - t; if (-1 === i) { warn("Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead."); e.skip(-a); return this.findDefaultInlineStreamEnd(e) } this.inlineStreamSkipEI(e); return a } inlineStreamSkipEI(e) { let t, i = 0; for (; -1 !== (t = e.getByte());)if (0 === i) i = 69 === t ? 1 : 0; else if (1 === i) i = 73 === t ? 2 : 0; else if (2 === i) break } makeInlineImage(e) { const t = this.lexer, i = t.stream, a = Object.create(null); let s; for (; !isCmd(this.buf1, "ID") && this.buf1 !== pt;) { if (!(this.buf1 instanceof Name)) throw new FormatError("Dictionary key must be a name object"); const t = this.buf1.name; this.shift(); if (this.buf1 === pt) break; a[t] = this.getObj(e) } -1 !== t.beginInlineImagePos && (s = i.pos - t.beginInlineImagePos); const r = this.xref.fetchIfRef(a.F || a.Filter); let n; if (r instanceof Name) n = r.name; else if (Array.isArray(r)) { const e = this.xref.fetchIfRef(r[0]); e instanceof Name && (n = e.name) } const o = i.pos; let g, c; switch (n) { case "DCT": case "DCTDecode": g = this.findDCTDecodeInlineStreamEnd(i); break; case "A85": case "ASCII85Decode": g = this.findASCII85DecodeInlineStreamEnd(i); break; case "AHx": case "ASCIIHexDecode": g = this.findASCIIHexDecodeInlineStreamEnd(i); break; default: g = this.findDefaultInlineStreamEnd(i) }if (g < 1e3 && s > 0) { const e = i.pos; i.pos = t.beginInlineImagePos; c = function getInlineImageCacheKey(e) { const t = [], i = e.length; let a = 0; for (; a < i - 1;)t.push(e[a++] << 8 | e[a++]); a < i && t.push(e[a]); return i + "_" + String.fromCharCode.apply(null, t) }(i.getBytes(s + g)); i.pos = e; const a = this.imageCache[c]; if (void 0 !== a) { this.buf2 = Cmd.get("EI"); this.shift(); a.reset(); return a } } const h = new Dict(this.xref); for (const e in a) h.set(e, a[e]); let l = i.makeSubStream(o, g, h); e && (l = e.createStream(l, g)); l = this.filter(l, h, g); l.dict = h; if (void 0 !== c) { l.cacheKey = "inline_img_" + ++this._imageId; this.imageCache[c] = l } this.buf2 = Cmd.get("EI"); this.shift(); return l } #w(e) { const { stream: t } = this.lexer; t.pos = e; const i = new Uint8Array([101, 110, 100]), a = i.length, s = [new Uint8Array([115, 116, 114, 101, 97, 109]), new Uint8Array([115, 116, 101, 97, 109]), new Uint8Array([115, 116, 114, 101, 97])], r = 9 - a; for (; t.pos < t.end;) { const n = t.peekBytes(2048), o = n.length - 9; if (o <= 0) break; let g = 0; for (; g < o;) { let o = 0; for (; o < a && n[g + o] === i[o];)o++; if (o >= a) { let a = !1; for (const e of s) { const t = e.length; let s = 0; for (; s < t && n[g + o + s] === e[s];)s++; if (s >= r) { a = !0; break } if (s >= t) { if (isWhiteSpace(n[g + o + s])) { info(`Found "${bytesToString([...i, ...e])}" when searching for endstream command.`); a = !0 } break } } if (a) { t.pos += g; return t.pos - e } } g++ } t.pos += o } return -1 } makeStream(e, t) { const i = this.lexer; let a = i.stream; i.skipToNextLine(); const s = a.pos - 1; let r = e.get("Length"); if (!Number.isInteger(r)) { info(`Bad length "${r && r.toString()}" in stream.`); r = 0 } a.pos = s + r; i.nextChar(); if (this.tryShift() && isCmd(this.buf2, "endstream")) this.shift(); else { r = this.#w(s); if (r < 0) throw new FormatError("Missing endstream command."); i.nextChar(); this.shift(); this.shift() } this.shift(); a = a.makeSubStream(s, r, e); t && (a = t.createStream(a, r)); a = this.filter(a, e, r); a.dict = e; return a } filter(e, t, i) { let a = t.get("F", "Filter"), s = t.get("DP", "DecodeParms"); if (a instanceof Name) { Array.isArray(s) && warn("/DecodeParms should not be an Array, when /Filter is a Name."); return this.makeFilter(e, a.name, i, s) } let r = i; if (Array.isArray(a)) { const t = a, i = s; for (let n = 0, o = t.length; n < o; ++n) { a = this.xref.fetchIfRef(t[n]); if (!(a instanceof Name)) throw new FormatError(`Bad filter name "${a}"`); s = null; Array.isArray(i) && n in i && (s = this.xref.fetchIfRef(i[n])); e = this.makeFilter(e, a.name, r, s); r = null } } return e } makeFilter(e, t, i, a) { if (0 === i) { warn(`Empty "${t}" stream.`); return new NullStream } try { switch (t) { case "Fl": case "FlateDecode": return a ? new PredictorStream(new FlateStream(e, i), i, a) : new FlateStream(e, i); case "LZW": case "LZWDecode": let t = 1; if (a) { a.has("EarlyChange") && (t = a.get("EarlyChange")); return new PredictorStream(new LZWStream(e, i, t), i, a) } return new LZWStream(e, i, t); case "DCT": case "DCTDecode": return new JpegStream(e, i, a); case "JPX": case "JPXDecode": return new JpxStream(e, i, a); case "A85": case "ASCII85Decode": return new Ascii85Stream(e, i); case "AHx": case "ASCIIHexDecode": return new AsciiHexStream(e, i); case "CCF": case "CCITTFaxDecode": return new CCITTFaxStream(e, i, a); case "RL": case "RunLengthDecode": return new RunLengthStream(e, i); case "JBIG2Decode": return new Jbig2Stream(e, i, a) }warn(`Filter "${t}" is not supported.`); return e } catch (e) { if (e instanceof MissingDataException) throw e; warn(`Invalid stream: "${e}"`); return new NullStream } } } const ci = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; function toHexDigit(e) { return e >= 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, i = 0, a = 1; if (45 === e) { a = -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) { i = 10; e = this.nextChar() } if (e < 48 || e > 57) { const t = `Invalid number: ${String.fromCharCode(e)} (charCode ${e})`; if (isWhiteSpace(e) || -1 === e) { info(`Lexer.getNumber - "${t}".`); return 0 } throw new FormatError(t) } let s = e - 48, r = 0, n = 1; for (; (e = this.nextChar()) >= 0;)if (e >= 48 && e <= 57) { const a = e - 48; if (t) r = 10 * r + a; else { 0 !== i && (i *= 10); s = 10 * s + a } } else if (46 === e) { if (0 !== i) break; i = 1 } else if (45 === e) warn("Badly formatted number: minus sign in the middle"); else { if (69 !== e && 101 !== e) break; e = this.peekChar(); if (43 === e || 45 === e) { n = 45 === e ? -1 : 1; this.nextChar() } else if (e < 48 || e > 57) break; t = !0 } 0 !== i && (s /= i); t && (s *= 10 ** (n * r)); return a * s } getString() { let e = 1, t = !1; const i = this.strBuf; i.length = 0; let a = this.nextChar(); for (; ;) { let s = !1; switch (0 | a) { case -1: warn("Unterminated string"); t = !0; break; case 40: ++e; i.push("("); break; case 41: if (0 == --e) { this.nextChar(); t = !0 } else i.push(")"); break; case 92: a = this.nextChar(); switch (a) { case -1: warn("Unterminated string"); t = !0; break; case 110: i.push("\n"); break; case 114: i.push("\r"); break; case 116: i.push("\t"); break; case 98: i.push("\b"); break; case 102: i.push("\f"); break; case 92: case 40: case 41: i.push(String.fromCharCode(a)); break; case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: let e = 15 & a; a = this.nextChar(); s = !0; if (a >= 48 && a <= 55) { e = (e << 3) + (15 & a); a = this.nextChar(); if (a >= 48 && a <= 55) { s = !1; e = (e << 3) + (15 & a) } } i.push(String.fromCharCode(e)); break; case 13: 10 === this.peekChar() && this.nextChar(); break; case 10: break; default: i.push(String.fromCharCode(a)) }break; default: i.push(String.fromCharCode(a)) }if (t) break; s || (a = this.nextChar()) } return i.join("") } getName() { let e, t; const i = this.strBuf; i.length = 0; for (; (e = this.nextChar()) >= 0 && !ci[e];)if (35 === e) { e = this.nextChar(); if (ci[e]) { warn("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number."); i.push("#"); break } const a = toHexDigit(e); if (-1 !== a) { t = e; e = this.nextChar(); const s = toHexDigit(e); if (-1 === s) { warn(`Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`); i.push("#", String.fromCharCode(t)); if (ci[e]) break; i.push(String.fromCharCode(e)); continue } i.push(String.fromCharCode(a << 4 | s)) } else i.push("#", String.fromCharCode(e)) } else i.push(String.fromCharCode(e)); i.length > 127 && warn(`Name token is longer than allowed by the spec: ${i.length}`); return Name.get(i.join("")) } _hexStringWarn(e) { 5 != this._hexStringNumWarn++ ? this._hexStringNumWarn > 5 || warn(`getHexString - ignoring invalid character: ${e}`) : warn("getHexString - ignoring additional invalid characters.") } getHexString() { const e = this.strBuf; e.length = 0; let t, i, a = this.currentChar, s = !0; this._hexStringNumWarn = 0; for (; ;) { if (a < 0) { warn("Unterminated hex string"); break } if (62 === a) { this.nextChar(); break } if (1 !== ci[a]) { if (s) { t = toHexDigit(a); if (-1 === t) { this._hexStringWarn(a); a = this.nextChar(); continue } } else { i = toHexDigit(a); if (-1 === i) { this._hexStringWarn(a); a = this.nextChar(); continue } e.push(String.fromCharCode(t << 4 | i)) } s = !s; a = this.nextChar() } else a = this.nextChar() } return e.join("") } getObj() { let e = !1, t = this.currentChar; for (; ;) { if (t < 0) return pt; if (e) 10 !== t && 13 !== t || (e = !1); else if (37 === t) e = !0; else if (1 !== ci[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 Cmd.get("["); case 93: this.nextChar(); return Cmd.get("]"); case 60: t = this.nextChar(); if (60 === t) { this.nextChar(); return Cmd.get("<<") } return this.getHexString(); case 62: t = this.nextChar(); if (62 === t) { this.nextChar(); return Cmd.get(">>") } return Cmd.get(">"); case 123: this.nextChar(); return Cmd.get("{"); case 125: this.nextChar(); return Cmd.get("}"); case 41: this.nextChar(); throw new FormatError(`Illegal character: ${t}`) }let i = String.fromCharCode(t); if (t < 32 || t > 127) { const e = this.peekChar(); if (e >= 32 && e <= 127) { this.nextChar(); return Cmd.get(i) } } const a = this.knownCommands; let s = void 0 !== a?.[i]; for (; (t = this.nextChar()) >= 0 && !ci[t];) { const e = i + String.fromCharCode(t); if (s && void 0 === a[e]) break; if (128 === i.length) throw new FormatError(`Command token too long: ${i.length}`); i = e; s = void 0 !== a?.[i] } if ("true" === i) return !0; if ("false" === i) return !1; if ("null" === i) return null; "BI" === i && (this.beginInlineImagePos = this.stream.pos); return Cmd.get(i) } 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() } } } class Linearization { static create(e) { function getInt(e, t, i = !1) { const a = e.get(t); if (Number.isInteger(a) && (i ? a >= 0 : a > 0)) return a; throw new Error(`The "${t}" parameter in the linearization dictionary is invalid.`) } const t = new Parser({ lexer: new Lexer(e), xref: null }), i = t.getObj(), a = t.getObj(), s = t.getObj(), r = t.getObj(); let n, o; if (!(Number.isInteger(i) && Number.isInteger(a) && isCmd(s, "obj") && r instanceof Dict && "number" == typeof (n = r.get("Linearized")) && n > 0)) return null; if ((o = getInt(r, "L")) !== e.length) throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.'); return { length: o, hints: function getHints(e) { const t = e.get("H"); let i; if (Array.isArray(t) && (2 === (i = t.length) || 4 === i)) { for (let e = 0; e < i; e++) { const i = t[e]; if (!(Number.isInteger(i) && i > 0)) throw new Error(`Hint (${e}) in the linearization dictionary is invalid.`) } return t } throw new Error("Hint array in the linearization dictionary is invalid.") }(r), objectNumberFirst: getInt(r, "O"), endFirst: getInt(r, "E"), numPages: getInt(r, "N"), mainXRefEntriesOffset: getInt(r, "T"), pageFirst: r.has("P") ? getInt(r, "P", !0) : 0 } } } const hi = ["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"], li = 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, i) { this.codespaceRanges[e - 1].push(t, i); this.numCodespaceRanges++ } mapCidRange(e, t, i) { if (t - e > li) throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE."); for (; e <= t;)this._map[e++] = i++ } mapBfRange(e, t, i) { if (t - e > li) throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE."); const a = i.length - 1; for (; e <= t;) { this._map[e++] = i; const t = i.charCodeAt(a) + 1; t > 255 ? i = i.substring(0, a - 1) + String.fromCharCode(i.charCodeAt(a - 1) + 1) + "\0" : i = i.substring(0, a) + String.fromCharCode(t) } } mapBfRangeToArray(e, t, i) { if (t - e > li) throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE."); const a = i.length; let s = 0; for (; e <= t && s < a;) { this._map[e] = i[s++]; ++e } } mapOne(e, t) { this._map[e] = t } lookup(e) { return this._map[e] } contains(e) { return void 0 !== this._map[e] } forEach(e) { const t = this._map, i = t.length; if (i <= 65536) for (let a = 0; a < i; a++)void 0 !== t[a] && e(a, t[a]); else for (const i in t) e(i, t[i]) } charCodeOf(e) { const t = this._map; if (t.length <= 65536) return t.indexOf(e); for (const i in t) if (t[i] === e) return 0 | i; return -1 } getMap() { return this._map } readCharCode(e, t, i) { let a = 0; const s = this.codespaceRanges; for (let r = 0, n = s.length; r < n; r++) { a = (a << 8 | e.charCodeAt(t + r)) >>> 0; const n = s[r]; for (let e = 0, t = n.length; e < t;) { const t = n[e++], s = n[e++]; if (a >= t && a <= s) { i.charcode = a; i.length = r + 1; return } } } i.charcode = 0; i.length = 1 } getCharCodeLength(e) { const t = this.codespaceRanges; for (let i = 0, a = t.length; i < a; i++) { const a = t[i]; for (let t = 0, s = a.length; t < s;) { const s = a[t++], r = a[t++]; if (e >= s && e <= r) return i + 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 } } class IdentityCMap extends CMap { constructor(e, t) { super(); this.vertical = e; this.addCodespaceRange(t, 0, 65535) } mapCidRange(e, t, i) { unreachable("should not call mapCidRange") } mapBfRange(e, t, i) { unreachable("should not call mapBfRange") } mapBfRangeToArray(e, t, i) { unreachable("should not call mapBfRangeToArray") } mapOne(e, t) { 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() { unreachable("should not access .isIdentityCMap") } } function strToInt(e) { let t = 0; for (let i = 0; i < e.length; i++)t = t << 8 | e.charCodeAt(i); return t >>> 0 } function expectString(e) { if ("string" != typeof e) throw new FormatError("Malformed CMap: expected string.") } function expectInt(e) { if (!Number.isInteger(e)) throw new FormatError("Malformed CMap: expected int.") } function parseBfChar(e, t) { for (; ;) { let i = t.getObj(); if (i === pt) break; if (isCmd(i, "endbfchar")) return; expectString(i); const a = strToInt(i); i = t.getObj(); expectString(i); const s = i; e.mapOne(a, s) } } function parseBfRange(e, t) { for (; ;) { let i = t.getObj(); if (i === pt) break; if (isCmd(i, "endbfrange")) return; expectString(i); const a = strToInt(i); i = t.getObj(); expectString(i); const s = strToInt(i); i = t.getObj(); if (Number.isInteger(i) || "string" == typeof i) { const t = Number.isInteger(i) ? String.fromCharCode(i) : i; e.mapBfRange(a, s, t) } else { if (!isCmd(i, "[")) break; { i = t.getObj(); const r = []; for (; !isCmd(i, "]") && i !== pt;) { r.push(i); i = t.getObj() } e.mapBfRangeToArray(a, s, r) } } } throw new FormatError("Invalid bf range.") } function parseCidChar(e, t) { for (; ;) { let i = t.getObj(); if (i === pt) break; if (isCmd(i, "endcidchar")) return; expectString(i); const a = strToInt(i); i = t.getObj(); expectInt(i); const s = i; e.mapOne(a, s) } } function parseCidRange(e, t) { for (; ;) { let i = t.getObj(); if (i === pt) break; if (isCmd(i, "endcidrange")) return; expectString(i); const a = strToInt(i); i = t.getObj(); expectString(i); const s = strToInt(i); i = t.getObj(); expectInt(i); const r = i; e.mapCidRange(a, s, r) } } function parseCodespaceRange(e, t) { for (; ;) { let i = t.getObj(); if (i === pt) break; if (isCmd(i, "endcodespacerange")) return; if ("string" != typeof i) break; const a = strToInt(i); i = t.getObj(); if ("string" != typeof i) break; const s = strToInt(i); e.addCodespaceRange(i.length, a, s) } throw new FormatError("Invalid codespace range.") } function parseWMode(e, t) { const i = t.getObj(); Number.isInteger(i) && (e.vertical = !!i) } function parseCMapName(e, t) { const i = t.getObj(); i instanceof Name && (e.name = i.name) } async function parseCMap(e, t, i, a) { let s, r; A: for (; ;)try { const i = t.getObj(); if (i === pt) break; if (i instanceof Name) { "WMode" === i.name ? parseWMode(e, t) : "CMapName" === i.name && parseCMapName(e, t); s = i } else if (i instanceof Cmd) switch (i.cmd) { case "endcmap": break A; case "usecmap": s instanceof Name && (r = 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 MissingDataException) throw e; warn("Invalid cMap data: " + e); continue } !a && r && (a = r); return a ? extendCMap(e, i, a) : e } async function extendCMap(e, t, i) { e.useCMap = await createBuiltInCMap(i, t); if (0 === e.numCodespaceRanges) { const t = e.useCMap.codespaceRanges; for (let i = 0; i < t.length; i++)e.codespaceRanges[i] = t[i].slice(); e.numCodespaceRanges = e.useCMap.numCodespaceRanges } e.useCMap.forEach((function (t, i) { e.contains(t) || e.mapOne(t, e.useCMap.lookup(t)) })); return e } async function createBuiltInCMap(e, t) { if ("Identity-H" === e) return new IdentityCMap(!1, 2); if ("Identity-V" === e) return new IdentityCMap(!0, 2); if (!hi.includes(e)) throw new Error("Unknown CMap name: " + e); if (!t) throw new Error("Built-in CMap parameters are not provided."); const { cMapData: i, compressionType: a } = await t(e), s = new CMap(!0); if (a === mA.BINARY) return (new BinaryCMapReader).process(i, s, (e => extendCMap(s, t, e))); if (a === mA.NONE) { const e = new Lexer(new Stream(i)); return parseCMap(s, e, t, null) } throw new Error(`Invalid CMap "compressionType" value: ${a}`) } class CMapFactory { static async create({ encoding: e, fetchBuiltInCMap: t, useCMap: i }) { if (e instanceof Name) return createBuiltInCMap(e.name, t); if (e instanceof BaseStream) { const a = await parseCMap(new CMap, new Lexer(e), t, i); return a.isIdentityCMap ? createBuiltInCMap(a.name, t) : a } throw new Error("Encoding required.") } } const Ci = [".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"], Bi = [".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"], Qi = [".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"], Ei = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "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"], ui = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "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", "", "", "", ""], di = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "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"], fi = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "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", "", "", "", ""], pi = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "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"], mi = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "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", ""], yi = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "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", ""]; function getEncoding(e) { switch (e) { case "WinAnsiEncoding": return pi; case "StandardEncoding": return fi; case "MacRomanEncoding": return di; case "SymbolSetEncoding": return mi; case "ZapfDingbatsEncoding": return yi; case "ExpertEncoding": return Ei; case "MacExpertEncoding": return ui; default: return null } } const wi = [".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"], bi = 391, Di = [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 }], Fi = [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 }]; class CFFParser { constructor(e, t, i) { this.bytes = e.getBytes(); this.properties = t; this.seacAnalysisEnabled = !!i } parse() { const e = this.properties, t = new CFF; this.cff = t; const i = this.parseHeader(), a = this.parseIndex(i.endPos), s = this.parseIndex(a.endPos), r = this.parseIndex(s.endPos), n = this.parseIndex(r.endPos), o = this.parseDict(s.obj.get(0)), g = this.createDict(CFFTopDict, o, t.strings); t.header = i.obj; t.names = this.parseNameIndex(a.obj); t.strings = this.parseStringIndex(r.obj); t.topDict = g; t.globalSubrIndex = n.obj; this.parsePrivateDict(t.topDict); t.isCIDFont = g.hasName("ROS"); const c = g.getByName("CharStrings"), h = this.parseIndex(c).obj, l = g.getByName("FontMatrix"); l && (e.fontMatrix = l); const C = g.getByName("FontBBox"); if (C) { e.ascent = Math.max(C[3], C[1]); e.descent = Math.min(C[1], C[3]); e.ascentScaled = !0 } let Q, E; if (t.isCIDFont) { const e = this.parseIndex(g.getByName("FDArray")).obj; for (let i = 0, a = e.count; i < a; ++i) { const a = e.get(i), s = this.createDict(CFFTopDict, this.parseDict(a), t.strings); this.parsePrivateDict(s); t.fdArray.push(s) } E = null; Q = this.parseCharsets(g.getByName("charset"), h.count, t.strings, !0); t.fdSelect = this.parseFDSelect(g.getByName("FDSelect"), h.count) } else { Q = this.parseCharsets(g.getByName("charset"), h.count, t.strings, !1); E = this.parseEncoding(g.getByName("Encoding"), e, t.strings, Q.charset) } t.charset = Q; t.encoding = E; const u = this.parseCharStrings({ charStrings: h, localSubrIndex: g.privateDict.subrsIndex, globalSubrIndex: n.obj, fdSelect: t.fdSelect, fdArray: t.fdArray, privateDict: g.privateDict }); t.charStrings = u.charStrings; t.seacs = u.seacs; t.widths = u.widths; return t } parseHeader() { let e = this.bytes; const t = e.length; let i = 0; for (; i < t && 1 !== e[i];)++i; if (i >= t) throw new FormatError("Invalid CFF header"); if (0 !== i) { info("cff data is shifted"); e = e.subarray(i); this.bytes = e } const a = e[0], s = e[1], r = e[2], n = e[3]; return { obj: new CFFHeader(a, s, r, n), endPos: r } } parseDict(e) { let t = 0; function parseOperand() { let i = e[t++]; if (30 === i) return function parseFloatOperand() { let i = ""; const a = 15, s = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "E", "E-", null, "-"], r = e.length; for (; t < r;) { const r = e[t++], n = r >> 4, o = 15 & r; if (n === a) break; i += s[n]; if (o === a) break; i += s[o] } return parseFloat(i) }(); if (28 === i) { i = e[t++]; i = (i << 24 | e[t++] << 16) >> 16; return i } if (29 === i) { i = e[t++]; i = i << 8 | e[t++]; i = i << 8 | e[t++]; i = i << 8 | e[t++]; return i } if (i >= 32 && i <= 246) return i - 139; if (i >= 247 && i <= 250) return 256 * (i - 247) + e[t++] + 108; if (i >= 251 && i <= 254) return -256 * (i - 251) - e[t++] - 108; warn('CFFParser_parseDict: "' + i + '" is a reserved command.'); return NaN } let i = []; const a = []; t = 0; const s = e.length; for (; t < s;) { let s = e[t]; if (s <= 21) { 12 === s && (s = s << 8 | e[++t]); a.push([s, i]); i = []; ++t } else i.push(parseOperand()) } return a } parseIndex(e) { const t = new CFFIndex, i = this.bytes, a = i[e++] << 8 | i[e++], s = []; let r, n, o = e; if (0 !== a) { const t = i[e++], g = e + (a + 1) * t - 1; for (r = 0, n = a + 1; r < n; ++r) { let a = 0; for (let s = 0; s < t; ++s) { a <<= 8; a += i[e++] } s.push(g + a) } o = s[a] } for (r = 0, n = s.length - 1; r < n; ++r) { const e = s[r], a = s[r + 1]; t.add(i.subarray(e, a)) } return { obj: t, endPos: o } } parseNameIndex(e) { const t = []; for (let i = 0, a = e.count; i < a; ++i) { const a = e.get(i); t.push(bytesToString(a)) } return t } parseStringIndex(e) { const t = new CFFStrings; for (let i = 0, a = e.count; i < a; ++i) { const a = e.get(i); t.add(bytesToString(a)) } return t } createDict(e, t, i) { const a = new e(i); for (const [e, i] of t) a.setByKey(e, i); return a } parseCharString(e, t, i, a) { if (!t || e.callDepth > 10) return !1; let s = e.stackSize; const r = e.stack; let n = t.length; for (let o = 0; o < n;) { const g = t[o++]; let c = null; if (12 === g) { const e = t[o++]; if (0 === e) { t[o - 2] = 139; t[o - 1] = 22; s = 0 } else c = Fi[e] } else if (28 === g) { r[s] = (t[o] << 24 | t[o + 1] << 16) >> 16; o += 2; s++ } else if (14 === g) { if (s >= 4) { s -= 4; if (this.seacAnalysisEnabled) { e.seac = r.slice(s, s + 4); return !1 } } c = Di[g] } else if (g >= 32 && g <= 246) { r[s] = g - 139; s++ } else if (g >= 247 && g <= 254) { r[s] = g < 251 ? (g - 247 << 8) + t[o] + 108 : -(g - 251 << 8) - t[o] - 108; o++; s++ } else if (255 === g) { r[s] = (t[o] << 24 | t[o + 1] << 16 | t[o + 2] << 8 | t[o + 3]) / 65536; o += 4; s++ } else if (19 === g || 20 === g) { e.hints += s >> 1; if (0 === e.hints) { t.copyWithin(o - 1, o, -1); o -= 1; n -= 1; continue } o += e.hints + 7 >> 3; s %= 2; c = Di[g] } else { if (10 === g || 29 === g) { const t = 10 === g ? i : a; if (!t) { c = Di[g]; warn("Missing subrsIndex for " + c.id); return !1 } let n = 32768; t.count < 1240 ? n = 107 : t.count < 33900 && (n = 1131); const o = r[--s] + n; if (o < 0 || o >= t.count || isNaN(o)) { c = Di[g]; warn("Out of bounds subrIndex for " + c.id); return !1 } e.stackSize = s; e.callDepth++; if (!this.parseCharString(e, t.get(o), i, a)) return !1; e.callDepth--; s = e.stackSize; continue } if (11 === g) { e.stackSize = s; return !0 } if (0 === g && o === t.length) { t[o - 1] = 14; c = Di[14] } else { if (9 === g) { t.copyWithin(o - 1, o, -1); o -= 1; n -= 1; continue } c = Di[g] } } if (c) { if (c.stem) { e.hints += s >> 1; if (3 === g || 23 === g) e.hasVStems = !0; else if (e.hasVStems && (1 === g || 18 === g)) { warn("CFF stem hints are in wrong order"); t[o - 1] = 1 === g ? 3 : 23 } } if ("min" in c && !e.undefStack && s < c.min) { warn("Not enough parameters for " + c.id + "; actual: " + s + ", expected: " + c.min); if (0 === s) { t[o - 1] = 14; return !0 } return !1 } if (e.firstStackClearing && c.stackClearing) { e.firstStackClearing = !1; s -= c.min; s >= 2 && c.stem ? s %= 2 : s > 1 && warn("Found too many parameters for stack-clearing command"); s > 0 && (e.width = r[s - 1]) } if ("stackDelta" in c) { "stackFn" in c && c.stackFn(r, s); s += c.stackDelta } else if (c.stackClearing) s = 0; else if (c.resetStack) { s = 0; e.undefStack = !1 } else if (c.undefStack) { s = 0; e.undefStack = !0; e.firstStackClearing = !1 } } } n < t.length && t.fill(14, n); e.stackSize = s; return !0 } parseCharStrings({ charStrings: e, localSubrIndex: t, globalSubrIndex: i, fdSelect: a, fdArray: s, privateDict: r }) { const n = [], o = [], g = e.count; for (let c = 0; c < g; c++) { const g = e.get(c), h = { callDepth: 0, stackSize: 0, stack: [], undefStack: !0, hints: 0, firstStackClearing: !0, seac: null, width: null, hasVStems: !1 }; let l = !0, C = null, Q = r; if (a && s.length) { const e = a.getFDIndex(c); if (-1 === e) { warn("Glyph index is not in fd select."); l = !1 } if (e >= s.length) { warn("Invalid fd index for glyph index."); l = !1 } if (l) { Q = s[e].privateDict; C = Q.subrsIndex } } else t && (C = t); l && (l = this.parseCharString(h, g, C, i)); if (null !== h.width) { const e = Q.getByName("nominalWidthX"); o[c] = e + h.width } else { const e = Q.getByName("defaultWidthX"); o[c] = e } null !== h.seac && (n[c] = h.seac); l || e.set(c, new Uint8Array([14])) } return { charStrings: e, seacs: n, widths: o } } 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 i = t[0], a = t[1]; if (0 === i || a >= this.bytes.length) { this.emptyPrivateDictionary(e); return } const s = a + i, r = this.bytes.subarray(a, s), n = this.parseDict(r), o = this.createDict(CFFPrivateDict, n, e.strings); e.privateDict = o; 0 === o.getByName("ExpansionFactor") && o.setByName("ExpansionFactor", .06); if (!o.getByName("Subrs")) return; const g = o.getByName("Subrs"), c = a + g; if (0 === g || c >= this.bytes.length) { this.emptyPrivateDictionary(e); return } const h = this.parseIndex(c); o.subrsIndex = h.obj } parseCharsets(e, t, i, a) { if (0 === e) return new CFFCharset(!0, Ri.ISO_ADOBE, Ci); if (1 === e) return new CFFCharset(!0, Ri.EXPERT, Bi); if (2 === e) return new CFFCharset(!0, Ri.EXPERT_SUBSET, Qi); const s = this.bytes, r = e, n = s[e++], o = [a ? 0 : ".notdef"]; let g, c, h; t -= 1; switch (n) { case 0: for (h = 0; h < t; h++) { g = s[e++] << 8 | s[e++]; o.push(a ? g : i.get(g)) } break; case 1: for (; o.length <= t;) { g = s[e++] << 8 | s[e++]; c = s[e++]; for (h = 0; h <= c; h++)o.push(a ? g++ : i.get(g++)) } break; case 2: for (; o.length <= t;) { g = s[e++] << 8 | s[e++]; c = s[e++] << 8 | s[e++]; for (h = 0; h <= c; h++)o.push(a ? g++ : i.get(g++)) } break; default: throw new FormatError("Unknown charset format") }const l = e, C = s.subarray(r, l); return new CFFCharset(!1, n, o, C) } parseEncoding(e, t, i, a) { const s = Object.create(null), r = this.bytes; let n, o, g, c = !1, h = null; if (0 === e || 1 === e) { c = !0; n = e; const t = e ? Ei : fi; for (o = 0, g = a.length; o < g; o++) { const e = t.indexOf(a[o]); -1 !== e && (s[e] = o) } } else { const t = e; n = r[e++]; switch (127 & n) { case 0: const t = r[e++]; for (o = 1; o <= t; o++)s[r[e++]] = o; break; case 1: const i = r[e++]; let a = 1; for (o = 0; o < i; o++) { const t = r[e++], i = r[e++]; for (let e = t; e <= t + i; e++)s[e] = a++ } break; default: throw new FormatError(`Unknown encoding format: ${n} in CFF`) }const g = e; if (128 & n) { r[t] &= 127; !function readSupplement() { const t = r[e++]; for (o = 0; o < t; o++) { const t = r[e++], n = (r[e++] << 8) + (255 & r[e++]); s[t] = a.indexOf(i.get(n)) } }() } h = r.subarray(t, g) } n &= 127; return new CFFEncoding(c, n, s, h) } parseFDSelect(e, t) { const i = this.bytes, a = i[e++], s = []; let r; switch (a) { case 0: for (r = 0; r < t; ++r) { const t = i[e++]; s.push(t) } break; case 3: const n = i[e++] << 8 | i[e++]; for (r = 0; r < n; ++r) { let t = i[e++] << 8 | i[e++]; if (0 === r && 0 !== t) { warn("parseFDSelect: The first range must have a first GID of 0 -- trying to recover."); t = 0 } const a = i[e++], n = i[e] << 8 | i[e + 1]; for (let e = t; e < n; ++e)s.push(a) } e += 2; break; default: throw new FormatError(`parseFDSelect: Unknown format "${a}".`) }if (s.length !== t) throw new FormatError("parseFDSelect: Invalid font data."); return new CFFFDSelect(a, s) } } class CFF { constructor() { this.header = null; this.names = []; this.topDict = null; this.strings = new CFFStrings; this.globalSubrIndex = null; this.encoding = null; this.charset = null; this.charStrings = null; this.fdArray = []; this.fdSelect = null; this.isCIDFont = !1 } duplicateFirstGlyph() { if (this.charStrings.count >= 65535) { 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 } } class CFFHeader { constructor(e, t, i, a) { this.major = e; this.minor = t; this.hdrSize = i; this.offSize = a } } class CFFStrings { constructor() { this.strings = [] } get(e) { return e >= 0 && e <= 390 ? wi[e] : e - bi <= this.strings.length ? this.strings[e - bi] : wi[0] } getSID(e) { let t = wi.indexOf(e); if (-1 !== t) return t; t = this.strings.indexOf(e); return -1 !== t ? t + bi : -1 } add(e) { this.strings.push(e) } get count() { return this.strings.length } } 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 } } 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 i of t) if (isNaN(i)) { warn(`Invalid CFFDict value: "${t}" for key "${e}".`); return !0 } const i = this.types[e]; "num" !== i && "sid" !== i && "offset" !== i || (t = t[0]); this.values[e] = t; return !0 } setByName(e, t) { if (!(e in this.nameToKeyMap)) throw new 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 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 i of e) { const e = Array.isArray(i[0]) ? (i[0][0] << 8) + i[0][1] : i[0]; t.keyToNameMap[e] = i[1]; t.nameToKeyMap[i[1]] = e; t.types[e] = i[2]; t.defaults[e] = i[3]; t.opcodes[e] = Array.isArray(i[0]) ? i[0] : [i[0]]; t.order.push(e) } return t } } const Si = [[[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 shadow(this, "tables", this.createTables(Si)) } constructor(e) { super(CFFTopDict.tables, e); this.privateDict = null } } const ki = [[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 shadow(this, "tables", this.createTables(ki)) } constructor(e) { super(CFFPrivateDict.tables, e); this.subrsIndex = null } } const Ri = { ISO_ADOBE: 0, EXPERT: 1, EXPERT_SUBSET: 2 }; class CFFCharset { constructor(e, t, i, a) { this.predefined = e; this.format = t; this.charset = i; this.raw = a } } class CFFEncoding { constructor(e, t, i, a) { this.predefined = e; this.format = t; this.encoding = i; this.raw = a } } class CFFFDSelect { constructor(e, t) { this.format = e; this.fdSelect = t } getFDIndex(e) { return e < 0 || e >= this.fdSelect.length ? -1 : this.fdSelect[e] } } 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 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, i) { if (!(e in this.offsets)) throw new FormatError(`Not tracking location of ${e}`); const a = i.data, s = this.offsets[e]; for (let e = 0, i = t.length; e < i; ++e) { const i = 5 * e + s, r = i + 1, n = i + 2, o = i + 3, g = i + 4; if (29 !== a[i] || 0 !== a[r] || 0 !== a[n] || 0 !== a[o] || 0 !== a[g]) throw new FormatError("writing to an offset that is not empty"); const c = t[e]; a[i] = 29; a[r] = c >> 24 & 255; a[n] = c >> 16 & 255; a[o] = c >> 8 & 255; a[g] = 255 & c } } } 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 } }, i = this.compileHeader(e.header); t.add(i); const a = this.compileNameIndex(e.names); t.add(a); if (e.isCIDFont && e.topDict.hasName("FontMatrix")) { const t = e.topDict.getByName("FontMatrix"); e.topDict.removeByName("FontMatrix"); for (const i of e.fdArray) { let e = t.slice(0); i.hasName("FontMatrix") && (e = Util.transform(e, i.getByName("FontMatrix"))); i.setByName("FontMatrix", e) } } const s = e.topDict.getByName("XUID"); s?.length > 16 && e.topDict.removeByName("XUID"); e.topDict.setByName("charset", 0); let r = this.compileTopDicts([e.topDict], t.length, e.isCIDFont); t.add(r.output); const n = r.trackers[0], o = this.compileStringIndex(e.strings.strings); t.add(o); const g = this.compileIndex(e.globalSubrIndex); t.add(g); if (e.encoding && e.topDict.hasName("Encoding")) if (e.encoding.predefined) n.setEntryLocation("Encoding", [e.encoding.format], t); else { const i = this.compileEncoding(e.encoding); n.setEntryLocation("Encoding", [t.length], t); t.add(i) } const c = this.compileCharset(e.charset, e.charStrings.count, e.strings, e.isCIDFont); n.setEntryLocation("charset", [t.length], t); t.add(c); const h = this.compileCharStrings(e.charStrings); n.setEntryLocation("CharStrings", [t.length], t); t.add(h); if (e.isCIDFont) { n.setEntryLocation("FDSelect", [t.length], t); const i = this.compileFDSelect(e.fdSelect); t.add(i); r = this.compileTopDicts(e.fdArray, t.length, !0); n.setEntryLocation("FDArray", [t.length], t); t.add(r.output); const a = r.trackers; this.compilePrivateDicts(e.fdArray, a, t) } this.compilePrivateDicts([e.topDict], [n], t); t.add([0]); return t.data } encodeNumber(e) { return Number.isInteger(e) ? this.encodeInteger(e) : this.encodeFloat(e) } static get EncodeFloatRegExp() { return shadow(this, "EncodeFloatRegExp", /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/) } encodeFloat(e) { let t = e.toString(); const i = CFFCompiler.EncodeFloatRegExp.exec(t); if (i) { const a = parseFloat("1e" + ((i[2] ? +i[2] : 0) + i[1].length)); t = (Math.round(e * a) / a).toString() } let a, s, r = ""; for (a = 0, s = t.length; a < s; ++a) { const e = t[a]; r += "e" === e ? "-" === t[++a] ? "c" : "b" : "." === e ? "a" : "-" === e ? "e" : e } r += 1 & r.length ? "f" : "ff"; const n = [30]; for (a = 0, s = r.length; a < s; a += 2)n.push(parseInt(r.substring(a, a + 2), 16)); return n } encodeInteger(e) { let t; t = e >= -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 i of e) { const e = Math.min(i.length, 127); let a = new Array(e); for (let t = 0; t < e; t++) { let e = i[t]; (e < "!" || e > "~" || "[" === e || "]" === e || "(" === e || ")" === e || "{" === e || "}" === e || "<" === e || ">" === e || "/" === e || "%" === e) && (e = "_"); a[t] = e } a = a.join(""); "" === a && (a = "Bad_Font_Name"); t.add(stringToBytes(a)) } return this.compileIndex(t) } compileTopDicts(e, t, i) { const a = []; let s = new CFFIndex; for (const r of e) { if (i) { r.removeByName("CIDFontVersion"); r.removeByName("CIDFontRevision"); r.removeByName("CIDFontType"); r.removeByName("CIDCount"); r.removeByName("UIDBase") } const e = new CFFOffsetTracker, n = this.compileDict(r, e); a.push(e); s.add(n); e.offset(t) } s = this.compileIndex(s, a); return { trackers: a, output: s } } compilePrivateDicts(e, t, i) { for (let a = 0, s = e.length; a < s; ++a) { const s = e[a], r = s.privateDict; if (!r || !s.hasName("Private")) throw new FormatError("There must be a private dictionary."); const n = new CFFOffsetTracker, o = this.compileDict(r, n); let g = i.length; n.offset(g); o.length || (g = 0); t[a].setEntryLocation("Private", [o.length, g], i); i.add(o); if (r.subrsIndex && r.hasName("Subrs")) { const e = this.compileIndex(r.subrsIndex); n.setEntryLocation("Subrs", [o.length], i); i.add(e) } } } compileDict(e, t) { const i = []; for (const a of e.order) { if (!(a in e.values)) continue; let s = e.values[a], r = e.types[a]; Array.isArray(r) || (r = [r]); Array.isArray(s) || (s = [s]); if (0 !== s.length) { for (let n = 0, o = r.length; n < o; ++n) { const o = r[n], g = s[n]; switch (o) { case "num": case "sid": i.push(...this.encodeNumber(g)); break; case "offset": const r = e.keyToNameMap[a]; t.isTracking(r) || t.track(r, i.length); i.push(29, 0, 0, 0, 0); break; case "array": case "delta": i.push(...this.encodeNumber(g)); for (let e = 1, t = s.length; e < t; ++e)i.push(...this.encodeNumber(s[e])); break; default: throw new FormatError(`Unknown data type of ${o}`) } } i.push(...e.opcodes[a]) } } return i } compileStringIndex(e) { const t = new CFFIndex; for (const i of e) t.add(stringToBytes(i)); return this.compileIndex(t) } compileCharStrings(e) { const t = new CFFIndex; for (let i = 0; i < e.count; i++) { const a = e.get(i); 0 !== a.length ? t.add(a) : t.add(new Uint8Array([139, 14])) } return this.compileIndex(t) } compileCharset(e, t, i, a) { let s; const r = t - 1; if (a) s = new Uint8Array([2, 0, 0, r >> 8 & 255, 255 & r]); else { s = new Uint8Array(1 + 2 * r); s[0] = 0; let t = 0; const a = e.charset.length; let n = !1; for (let r = 1; r < s.length; r += 2) { let o = 0; if (t < a) { const a = e.charset[t++]; o = i.getSID(a); if (-1 === o) { o = 0; if (!n) { n = !0; warn(`Couldn't find ${a} in CFF strings`) } } } s[r] = o >> 8 & 255; s[r + 1] = 255 & o } } return this.compileTypedArray(s) } compileEncoding(e) { return this.compileTypedArray(e.raw) } compileFDSelect(e) { const t = e.format; let i, a; switch (t) { case 0: i = new Uint8Array(1 + e.fdSelect.length); i[0] = t; for (a = 0; a < e.fdSelect.length; a++)i[a + 1] = e.fdSelect[a]; break; case 3: const s = 0; let r = e.fdSelect[0]; const n = [t, 0, 0, s >> 8 & 255, 255 & s, r]; for (a = 1; a < e.fdSelect.length; a++) { const t = e.fdSelect[a]; if (t !== r) { n.push(a >> 8 & 255, 255 & a, t); r = t } } const o = (n.length - 3) / 3; n[1] = o >> 8 & 255; n[2] = 255 & o; n.push(a >> 8 & 255, 255 & a); i = new Uint8Array(n) }return this.compileTypedArray(i) } compileTypedArray(e) { return Array.from(e) } compileIndex(e, t = []) { const i = e.objects, a = i.length; if (0 === a) return [0, 0]; const s = [a >> 8 & 255, 255 & a]; let r, n, o = 1; for (r = 0; r < a; ++r)o += i[r].length; n = o < 256 ? 1 : o < 65536 ? 2 : o < 16777216 ? 3 : 4; s.push(n); let g = 1; for (r = 0; r < a + 1; r++) { 1 === n ? s.push(255 & g) : 2 === n ? s.push(g >> 8 & 255, 255 & g) : 3 === n ? s.push(g >> 16 & 255, g >> 8 & 255, 255 & g) : s.push(g >>> 24 & 255, g >> 16 & 255, g >> 8 & 255, 255 & g); i[r] && (g += i[r].length) } for (r = 0; r < a; r++) { t[r] && t[r].offset(s.length); s.push(...i[r]) } return s } } const Ni = 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 })), Gi = 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 })), xi = 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 })); function getUnicodeForGlyph(e, t) { let i = t[e]; if (void 0 !== i) return i; if (!e) return -1; if ("u" === e[0]) { const t = e.length; let a; if (7 === t && "n" === e[1] && "i" === e[2]) a = e.substring(3); else { if (!(t >= 5 && t <= 7)) return -1; a = e.substring(1) } if (a === a.toUpperCase()) { i = parseInt(a, 16); if (i >= 0) return i } } return -1 } const Mi = [[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]]; function getUnicodeRangeFor(e, t = -1) { if (-1 !== t) { const i = Mi[t]; for (let a = 0, s = i.length; a < s; a += 2)if (e >= i[a] && e <= i[a + 1]) return t } for (let t = 0, i = Mi.length; t < i; t++) { const i = Mi[t]; for (let a = 0, s = i.length; a < s; a += 2)if (e >= i[a] && e <= i[a + 1]) return t } return -1 } const Ji = new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$", "u"), Hi = new Map; const Yi = !0, vi = 1, Ki = 2, Ti = 4, qi = 32, Oi = [".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 i = getUnicodeForGlyph(e, t); if (-1 !== i) for (const e in t) if (t[e] === i) return e; info("Unable to recover a standard glyph name for: " + e); return e } function type1FontGlyphMapping(e, t, i) { const a = Object.create(null); let s, r, n; const o = !!(e.flags & Ti); if (e.isInternalFont) { n = t; for (r = 0; r < n.length; r++) { s = i.indexOf(n[r]); a[r] = s >= 0 ? s : 0 } } else if (e.baseEncodingName) { n = getEncoding(e.baseEncodingName); for (r = 0; r < n.length; r++) { s = i.indexOf(n[r]); a[r] = s >= 0 ? s : 0 } } else if (o) for (r in t) a[r] = t[r]; else { n = fi; for (r = 0; r < n.length; r++) { s = i.indexOf(n[r]); a[r] = s >= 0 ? s : 0 } } const g = e.differences; let c; if (g) for (r in g) { const e = g[r]; s = i.indexOf(e); if (-1 === s) { c || (c = Ni()); const t = recoverGlyphName(e, c); t !== e && (s = i.indexOf(t)) } a[r] = s >= 0 ? s : 0 } return a } function normalizeFontName(e) { return e.replaceAll(/[,_]/g, "-").replaceAll(/\s/g, "") } const Pi = 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" })), Wi = 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" })), Xi = 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" })), ji = 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 })), Zi = getLookupTableFactory((function (e) { e.Dingbats = !0; e.Symbol = !0; e.ZapfDingbats = !0; e.Wingdings = !0; e["Wingdings-Bold"] = !0; e["Wingdings-Regular"] = !0 })), Vi = 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 })), zi = getLookupTableFactory((function (e) { e[227] = 322; e[264] = 261; e[291] = 346 })), _i = 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 })); function getStandardFontName(e) { const t = normalizeFontName(e); return Pi()[t] } function isKnownFontName(e) { const t = normalizeFontName(e); return !!(Pi()[t] || Xi()[t] || ji()[t] || Zi()[t]) } 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 i in t) if (t[i] === e) return 0 | i; return -1 } amend(e) { for (const t in e) this._map[t] = e[t] } } 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, i = this.lastChar; t <= i; 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) { unreachable("Should not call amend()") } } class CFFFont { constructor(e, t) { this.properties = t; const i = new CFFParser(e, t, Yi); this.cff = i.parse(); this.cff.duplicateFirstGlyph(); const a = new CFFCompiler(this.cff); this.seacs = this.cff.seacs; try { this.data = a.compile() } catch { 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: i, cMap: a } = t, s = e.charset.charset; let r, n; if (t.composite) { let t, o; if (i?.length > 0) { t = Object.create(null); for (let e = 0, a = i.length; e < a; e++) { const a = i[e]; void 0 !== a && (t[a] = e) } } r = Object.create(null); if (e.isCIDFont) for (n = 0; n < s.length; n++) { const e = s[n]; o = a.charCodeOf(e); void 0 !== t?.[o] && (o = t[o]); r[o] = n } else for (n = 0; n < e.charStrings.count; n++) { o = a.charCodeOf(n); r[o] = n } return r } let o = e.encoding ? e.encoding.encoding : null; t.isInternalFont && (o = t.defaultEncoding); r = type1FontGlyphMapping(t, o, s); return r } hasGlyphId(e) { return this.cff.hasGlyphId(e) } _createBuiltInEncoding() { const { charset: e, encoding: t } = this.cff; if (!e || !t) return; const i = e.charset, a = t.encoding, s = []; for (const e in a) { const t = a[e]; if (t >= 0) { const a = i[t]; a && (s[e] = a) } } s.length > 0 && (this.properties.builtInEncoding = s) } } 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 i = 32768; t < 1240 ? i = 107 : t < 33900 && (i = 1131); return i } function parseCmap(e, t, i) { const a = 1 === getUint16(e, t + 2) ? getUint32(e, t + 8) : getUint32(e, t + 16), s = getUint16(e, t + a); let r, n, o; if (4 === s) { getUint16(e, t + a + 2); const i = getUint16(e, t + a + 6) >> 1; n = t + a + 14; r = []; for (o = 0; o < i; o++, n += 2)r[o] = { end: getUint16(e, n) }; n += 2; for (o = 0; o < i; o++, n += 2)r[o].start = getUint16(e, n); for (o = 0; o < i; o++, n += 2)r[o].idDelta = getUint16(e, n); for (o = 0; o < i; o++, n += 2) { let t = getUint16(e, n); if (0 !== t) { r[o].ids = []; for (let i = 0, a = r[o].end - r[o].start + 1; i < a; i++) { r[o].ids[i] = getUint16(e, n + t); t += 2 } } } return r } if (12 === s) { const i = getUint32(e, t + a + 12); n = t + a + 16; r = []; for (o = 0; o < i; o++) { t = getUint32(e, n); r.push({ start: t, end: getUint32(e, n + 4), idDelta: getUint32(e, n + 8) - t }); n += 12 } return r } throw new FormatError(`unsupported cmap: ${s}`) } function parseCff(e, t, i, a) { const s = new CFFParser(new Stream(e, t, i - t), {}, a).parse(); return { glyphs: s.charStrings.objects, subrs: s.topDict.privateDict?.subrsIndex?.objects, gsubrs: s.globalSubrIndex?.objects, isCFFCIDFont: s.isCIDFont, fdSelect: s.fdSelect, fdArray: s.fdArray } } function lookupCmap(e, t) { const i = t.codePointAt(0); let a = 0, s = 0, r = e.length - 1; for (; s < r;) { const t = s + r + 1 >> 1; i < e[t].start ? r = t - 1 : s = t } e[s].start <= i && i <= e[s].end && (a = e[s].idDelta + (e[s].ids ? e[s].ids[i - e[s].start] : i) & 65535); return { charCode: i, glyphId: a } } function compileGlyf(e, t, i) { function moveTo(e, i) { t.add(ht, [e, i]) } function lineTo(e, i) { t.add(lt, [e, i]) } function quadraticCurveTo(e, i, a, s) { t.add(Ct, [e, i, a, s]) } let a = 0; const s = getInt16(e, a); let r, n = 0, o = 0; a += 10; if (s < 0) do { r = getUint16(e, a); const s = getUint16(e, a + 2); a += 4; let g, c; if (1 & r) { if (2 & r) { g = getInt16(e, a); c = getInt16(e, a + 2) } else { g = getUint16(e, a); c = getUint16(e, a + 2) } a += 4 } else if (2 & r) { g = getInt8(e, a++); c = getInt8(e, a++) } else { g = e[a++]; c = e[a++] } if (2 & r) { n = g; o = c } else { n = 0; o = 0 } let h = 1, l = 1, C = 0, Q = 0; if (8 & r) { h = l = getFloat214(e, a); a += 2 } else if (64 & r) { h = getFloat214(e, a); l = getFloat214(e, a + 2); a += 4 } else if (128 & r) { h = getFloat214(e, a); C = getFloat214(e, a + 2); Q = getFloat214(e, a + 4); l = getFloat214(e, a + 6); a += 8 } const E = i.glyphs[s]; if (E) { t.add(Qt); t.add(ut, [h, C, Q, l, n, o]); compileGlyf(E, t, i); t.add(Bt) } } while (32 & r); else { const t = []; let i, g; for (i = 0; i < s; i++) { t.push(getUint16(e, a)); a += 2 } a += 2 + getUint16(e, a); const c = t.at(-1) + 1, h = []; for (; h.length < c;) { r = e[a++]; let t = 1; 8 & r && (t += e[a++]); for (; t-- > 0;)h.push({ flags: r }) } for (i = 0; i < c; i++) { switch (18 & h[i].flags) { case 0: n += getInt16(e, a); a += 2; break; case 2: n -= e[a++]; break; case 18: n += e[a++] }h[i].x = n } for (i = 0; i < c; i++) { switch (36 & h[i].flags) { case 0: o += getInt16(e, a); a += 2; break; case 4: o -= e[a++]; break; case 36: o += e[a++] }h[i].y = o } let l = 0; for (a = 0; a < s; a++) { const e = t[a], s = h.slice(l, e + 1); if (1 & s[0].flags) s.push(s[0]); else if (1 & s.at(-1).flags) s.unshift(s.at(-1)); else { const e = { flags: 1, x: (s[0].x + s.at(-1).x) / 2, y: (s[0].y + s.at(-1).y) / 2 }; s.unshift(e); s.push(e) } moveTo(s[0].x, s[0].y); for (i = 1, g = s.length; i < g; i++)if (1 & s[i].flags) lineTo(s[i].x, s[i].y); else if (1 & s[i + 1].flags) { quadraticCurveTo(s[i].x, s[i].y, s[i + 1].x, s[i + 1].y); i++ } else quadraticCurveTo(s[i].x, s[i].y, (s[i].x + s[i + 1].x) / 2, (s[i].y + s[i + 1].y) / 2); l = e + 1 } } } function compileCharString(e, t, i, a) { function moveTo(e, i) { t.add(ht, [e, i]) } function lineTo(e, i) { t.add(lt, [e, i]) } function bezierCurveTo(e, i, a, s, r, n) { t.add(ct, [e, i, a, s, r, n]) } const s = []; let r = 0, n = 0, o = 0; !function parse(e) { let g = 0; for (; g < e.length;) { let c, h, l, C, Q, E, u, d, f, p = !1, m = e[g++]; switch (m) { case 1: case 3: case 18: case 23: o += s.length >> 1; p = !0; break; case 4: n += s.pop(); moveTo(r, n); p = !0; break; case 5: for (; s.length > 0;) { r += s.shift(); n += s.shift(); lineTo(r, n) } break; case 6: for (; s.length > 0;) { r += s.shift(); lineTo(r, n); if (0 === s.length) break; n += s.shift(); lineTo(r, n) } break; case 7: for (; s.length > 0;) { n += s.shift(); lineTo(r, n); if (0 === s.length) break; r += s.shift(); lineTo(r, n) } break; case 8: for (; s.length > 0;) { c = r + s.shift(); l = n + s.shift(); h = c + s.shift(); C = l + s.shift(); r = h + s.shift(); n = C + s.shift(); bezierCurveTo(c, l, h, C, r, n) } break; case 10: d = s.pop(); f = null; if (i.isCFFCIDFont) { const e = i.fdSelect.getFDIndex(a); if (e >= 0 && e < i.fdArray.length) { const t = i.fdArray[e]; let a; t.privateDict?.subrsIndex && (a = t.privateDict.subrsIndex.objects); if (a) { d += getSubroutineBias(a); f = a[d] } } else warn("Invalid fd index for glyph index.") } else f = i.subrs[d + i.subrsBias]; f && parse(f); break; case 11: return; case 12: m = e[g++]; switch (m) { case 34: c = r + s.shift(); h = c + s.shift(); Q = n + s.shift(); r = h + s.shift(); bezierCurveTo(c, n, h, Q, r, Q); c = r + s.shift(); h = c + s.shift(); r = h + s.shift(); bezierCurveTo(c, Q, h, n, r, n); break; case 35: c = r + s.shift(); l = n + s.shift(); h = c + s.shift(); C = l + s.shift(); r = h + s.shift(); n = C + s.shift(); bezierCurveTo(c, l, h, C, r, n); c = r + s.shift(); l = n + s.shift(); h = c + s.shift(); C = l + s.shift(); r = h + s.shift(); n = C + s.shift(); bezierCurveTo(c, l, h, C, r, n); s.pop(); break; case 36: c = r + s.shift(); Q = n + s.shift(); h = c + s.shift(); E = Q + s.shift(); r = h + s.shift(); bezierCurveTo(c, Q, h, E, r, E); c = r + s.shift(); h = c + s.shift(); u = E + s.shift(); r = h + s.shift(); bezierCurveTo(c, E, h, u, r, n); break; case 37: const e = r, t = n; c = r + s.shift(); l = n + s.shift(); h = c + s.shift(); C = l + s.shift(); r = h + s.shift(); n = C + s.shift(); bezierCurveTo(c, l, h, C, r, n); c = r + s.shift(); l = n + s.shift(); h = c + s.shift(); C = l + s.shift(); r = h; n = C; Math.abs(r - e) > Math.abs(n - t) ? r += s.shift() : n += s.shift(); bezierCurveTo(c, l, h, C, r, n); break; default: throw new FormatError(`unknown operator: 12 ${m}`) }break; case 14: if (s.length >= 4) { const e = s.pop(), a = s.pop(); n = s.pop(); r = s.pop(); t.add(Qt); t.add(dt, [r, n]); let o = lookupCmap(i.cmap, String.fromCharCode(i.glyphNameMap[fi[e]])); compileCharString(i.glyphs[o.glyphId], t, i, o.glyphId); t.add(Bt); o = lookupCmap(i.cmap, String.fromCharCode(i.glyphNameMap[fi[a]])); compileCharString(i.glyphs[o.glyphId], t, i, o.glyphId) } return; case 19: case 20: o += s.length >> 1; g += o + 7 >> 3; p = !0; break; case 21: n += s.pop(); r += s.pop(); moveTo(r, n); p = !0; break; case 22: r += s.pop(); moveTo(r, n); p = !0; break; case 24: for (; s.length > 2;) { c = r + s.shift(); l = n + s.shift(); h = c + s.shift(); C = l + s.shift(); r = h + s.shift(); n = C + s.shift(); bezierCurveTo(c, l, h, C, r, n) } r += s.shift(); n += s.shift(); lineTo(r, n); break; case 25: for (; s.length > 6;) { r += s.shift(); n += s.shift(); lineTo(r, n) } c = r + s.shift(); l = n + s.shift(); h = c + s.shift(); C = l + s.shift(); r = h + s.shift(); n = C + s.shift(); bezierCurveTo(c, l, h, C, r, n); break; case 26: s.length % 2 && (r += s.shift()); for (; s.length > 0;) { c = r; l = n + s.shift(); h = c + s.shift(); C = l + s.shift(); r = h; n = C + s.shift(); bezierCurveTo(c, l, h, C, r, n) } break; case 27: s.length % 2 && (n += s.shift()); for (; s.length > 0;) { c = r + s.shift(); l = n; h = c + s.shift(); C = l + s.shift(); r = h + s.shift(); n = C; bezierCurveTo(c, l, h, C, r, n) } break; case 28: s.push((e[g] << 24 | e[g + 1] << 16) >> 16); g += 2; break; case 29: d = s.pop() + i.gsubrsBias; f = i.gsubrs[d]; f && parse(f); break; case 30: for (; s.length > 0;) { c = r; l = n + s.shift(); h = c + s.shift(); C = l + s.shift(); r = h + s.shift(); n = C + (1 === s.length ? s.shift() : 0); bezierCurveTo(c, l, h, C, r, n); if (0 === s.length) break; c = r + s.shift(); l = n; h = c + s.shift(); C = l + s.shift(); n = C + s.shift(); r = h + (1 === s.length ? s.shift() : 0); bezierCurveTo(c, l, h, C, r, n) } break; case 31: for (; s.length > 0;) { c = r + s.shift(); l = n; h = c + s.shift(); C = l + s.shift(); n = C + s.shift(); r = h + (1 === s.length ? s.shift() : 0); bezierCurveTo(c, l, h, C, r, n); if (0 === s.length) break; c = r; l = n + s.shift(); h = c + s.shift(); C = l + s.shift(); r = h + s.shift(); n = C + (1 === s.length ? s.shift() : 0); bezierCurveTo(c, l, h, C, r, n) } break; default: if (m < 32) throw new FormatError(`unknown operator: ${m}`); if (m < 247) s.push(m - 139); else if (m < 251) s.push(256 * (m - 247) + e[g++] + 108); else if (m < 255) s.push(256 * -(m - 251) - e[g++] - 108); else { s.push((e[g] << 24 | e[g + 1] << 16 | e[g + 2] << 8 | e[g + 3]) / 65536); g += 4 } }p && (s.length = 0) } }(e) } const $i = []; class Commands { cmds = []; add(e, t) { if (t) if (isNumberArray(t, null)) this.cmds.push(e, ...t); else { warn(`Commands.add - "${e}" has at least one non-number arg: "${t}".`); const i = t.map((e => "number" == typeof e ? e : 0)); this.cmds.push(e, ...i) } else this.cmds.push(e) } } class CompiledFont { constructor(e) { this.constructor === CompiledFont && unreachable("Cannot initialize CompiledFont."); this.fontMatrix = e; this.compiledGlyphs = Object.create(null); this.compiledCharCodeToGlyphId = Object.create(null) } getPathJs(e) { const { charCode: t, glyphId: i } = lookupCmap(this.cmap, e); let a, s = this.compiledGlyphs[i]; if (!s) { try { s = this.compileGlyph(this.glyphs[i], i) } catch (e) { s = $i; a = e } this.compiledGlyphs[i] = s } this.compiledCharCodeToGlyphId[t] ??= i; if (a) throw a; return s } compileGlyph(e, t) { if (!e || 0 === e.length || 14 === e[0]) return $i; let i = this.fontMatrix; if (this.isCFFCIDFont) { const e = this.fdSelect.getFDIndex(t); if (e >= 0 && e < this.fdArray.length) { i = this.fdArray[e].getByName("FontMatrix") || a } else warn("Invalid fd index for glyph index.") } const s = new Commands; s.add(Qt); s.add(ut, i.slice()); s.add(Et); this.compileGlyphImpl(e, s, t); s.add(Bt); return s.cmds } compileGlyphImpl() { unreachable("Children classes should implement this.") } hasBuiltPath(e) { const { charCode: t, glyphId: i } = lookupCmap(this.cmap, e); return void 0 !== this.compiledGlyphs[i] && void 0 !== this.compiledCharCodeToGlyphId[t] } } class TrueTypeCompiled extends CompiledFont { constructor(e, t, i) { super(i || [488e-6, 0, 0, 488e-6, 0, 0]); this.glyphs = e; this.cmap = t } compileGlyphImpl(e, t) { compileGlyf(e, t, this) } } class Type2Compiled extends CompiledFont { constructor(e, t, i, a) { super(i || [.001, 0, 0, .001, 0, 0]); this.glyphs = e.glyphs; this.gsubrs = e.gsubrs || []; this.subrs = e.subrs || []; this.cmap = t; this.glyphNameMap = a || Ni(); this.gsubrsBias = getSubroutineBias(this.gsubrs); this.subrsBias = getSubroutineBias(this.subrs); this.isCFFCIDFont = e.isCFFCIDFont; this.fdSelect = e.fdSelect; this.fdArray = e.fdArray } compileGlyphImpl(e, t, i) { compileCharString(e, t, this, i) } } class FontRendererFactory { static create(e, t) { const i = new Uint8Array(e.data); let a, s, r, n, o, g; const c = getUint16(i, 4); for (let e = 0, h = 12; e < c; e++, h += 16) { const e = bytesToString(i.subarray(h, h + 4)), c = getUint32(i, h + 8), l = getUint32(i, h + 12); switch (e) { case "cmap": a = parseCmap(i, c); break; case "glyf": s = i.subarray(c, c + l); break; case "loca": r = i.subarray(c, c + l); break; case "head": g = getUint16(i, c + 18); o = getUint16(i, c + 50); break; case "CFF ": n = parseCff(i, c, c + l, t) } } if (s) { const t = g ? [1 / g, 0, 0, 1 / g, 0, 0] : e.fontMatrix; return new TrueTypeCompiled(function parseGlyfTable(e, t, i) { let a, s; if (i) { a = 4; s = getUint32 } else { a = 2; s = (e, t) => 2 * getUint16(e, t) } const r = []; let n = s(t, 0); for (let i = a; i < t.length; i += a) { const a = s(t, i); r.push(e.subarray(n, a)); n = a } return r }(s, r, o), a, t) } return new Type2Compiled(n, a, e.fontMatrix, e.glyphNameMap) } } const Aa = getLookupTableFactory((function (e) { e.Courier = 600; e["Courier-Bold"] = 600; e["Courier-BoldOblique"] = 600; e["Courier-Oblique"] = 600; e.Helvetica = 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"] = 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"] = 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"] = 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 = 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"] = 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"] = 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"] = 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"] = 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 = 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 })) })), ea = 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 } })); class GlyfTable { constructor({ glyfTable: e, isGlyphLocationsLong: t, locaTable: i, numGlyphs: a }) { this.glyphs = []; const s = new DataView(i.buffer, i.byteOffset, i.byteLength), r = new DataView(e.buffer, e.byteOffset, e.byteLength), n = t ? 4 : 2; let o = t ? s.getUint32(0) : 2 * s.getUint16(0), g = 0; for (let e = 0; e < a; e++) { g += n; const e = t ? s.getUint32(g) : 2 * s.getUint16(g); if (e === o) { this.glyphs.push(new Glyph({})); continue } const i = Glyph.parse(o, r); this.glyphs.push(i); o = e } } getSize() { return this.glyphs.reduce(((e, t) => e + (t.getSize() + 3 & -4)), 0) } write() { const e = this.getSize(), t = new DataView(new ArrayBuffer(e)), i = e > 131070, a = i ? 4 : 2, s = new DataView(new ArrayBuffer((this.glyphs.length + 1) * a)); i ? s.setUint32(0, 0) : s.setUint16(0, 0); let r = 0, n = 0; for (const e of this.glyphs) { r += e.write(r, t); r = r + 3 & -4; n += a; i ? s.setUint32(n, r) : s.setUint16(n, r >> 1) } return { isLocationLong: i, loca: new Uint8Array(s.buffer), glyf: new Uint8Array(t.buffer) } } scale(e) { for (let t = 0, i = this.glyphs.length; t < i; t++)this.glyphs[t].scale(e[t]) } } class Glyph { constructor({ header: e = null, simple: t = null, composites: i = null }) { this.header = e; this.simple = t; this.composites = i } static parse(e, t) { const [i, a] = GlyphHeader.parse(e, t); e += i; if (a.numberOfContours < 0) { const i = []; for (; ;) { const [a, s] = CompositeGlyph.parse(e, t); e += a; i.push(s); if (!(32 & s.flags)) break } return new Glyph({ header: a, composites: i }) } const s = SimpleGlyph.parse(e, t, a.numberOfContours); return new Glyph({ header: a, simple: s }) } getSize() { if (!this.header) return 0; const e = this.simple ? this.simple.getSize() : this.composites.reduce(((e, t) => e + t.getSize()), 0); return this.header.getSize() + e } write(e, t) { if (!this.header) return 0; const i = e; e += this.header.write(e, t); if (this.simple) e += this.simple.write(e, t); else for (const i of this.composites) e += i.write(e, t); return e - i } 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 i of this.composites) i.scale(t, e) } } class GlyphHeader { constructor({ numberOfContours: e, xMin: t, yMin: i, xMax: a, yMax: s }) { this.numberOfContours = e; this.xMin = t; this.yMin = i; this.xMax = a; this.yMax = s } 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: i }) { this.xCoordinates = t; this.yCoordinates = i; this.flags = e } } class SimpleGlyph { constructor({ contours: e, instructions: t }) { this.contours = e; this.instructions = t } static parse(e, t, i) { const a = []; for (let s = 0; s < i; s++) { const i = t.getUint16(e); e += 2; a.push(i) } const s = a[i - 1] + 1, r = t.getUint16(e); e += 2; const n = new Uint8Array(t).slice(e, e + r); e += r; const o = []; for (let i = 0; i < s; e++, i++) { let a = t.getUint8(e); o.push(a); if (8 & a) { const s = t.getUint8(++e); a ^= 8; for (let e = 0; e < s; e++)o.push(a); i += s } } const g = []; let c = [], h = [], l = []; const C = []; let Q = 0, E = 0; for (let i = 0; i < s; i++) { const s = o[i]; if (2 & s) { const i = t.getUint8(e++); E += 16 & s ? i : -i; c.push(E) } else if (16 & s) c.push(E); else { E += t.getInt16(e); e += 2; c.push(E) } if (a[Q] === i) { Q++; g.push(c); c = [] } } E = 0; Q = 0; for (let i = 0; i < s; i++) { const s = o[i]; if (4 & s) { const i = t.getUint8(e++); E += 32 & s ? i : -i; h.push(E) } else if (32 & s) h.push(E); else { E += t.getInt16(e); e += 2; h.push(E) } l.push(1 & s | 64 & s); if (a[Q] === i) { c = g[Q]; Q++; C.push(new Contour({ flags: l, xCoordinates: c, yCoordinates: h })); h = []; l = [] } } return new SimpleGlyph({ contours: C, instructions: n }) } getSize() { let e = 2 * this.contours.length + 2 + this.instructions.length, t = 0, i = 0; for (const a of this.contours) { e += a.flags.length; for (let s = 0, r = a.xCoordinates.length; s < r; s++) { const r = a.xCoordinates[s], n = a.yCoordinates[s]; let o = Math.abs(r - t); o > 255 ? e += 2 : o > 0 && (e += 1); t = r; o = Math.abs(n - i); o > 255 ? e += 2 : o > 0 && (e += 1); i = n } } return e } write(e, t) { const i = e, a = [], s = [], r = []; let n = 0, o = 0; for (const i of this.contours) { for (let e = 0, t = i.xCoordinates.length; e < t; e++) { let t = i.flags[e]; const g = i.xCoordinates[e]; let c = g - n; if (0 === c) { t |= 16; a.push(0) } else { const e = Math.abs(c); if (e <= 255) { t |= c >= 0 ? 18 : 2; a.push(e) } else a.push(c) } n = g; const h = i.yCoordinates[e]; c = h - o; if (0 === c) { t |= 32; s.push(0) } else { const e = Math.abs(c); if (e <= 255) { t |= c >= 0 ? 36 : 4; s.push(e) } else s.push(c) } o = h; r.push(t) } t.setUint16(e, a.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 i of r) t.setUint8(e++, i); for (let i = 0, s = a.length; i < s; i++) { const s = a[i], n = r[i]; if (2 & n) t.setUint8(e++, s); else if (!(16 & n)) { t.setInt16(e, s); e += 2 } } for (let i = 0, a = s.length; i < a; i++) { const a = s[i], n = r[i]; if (4 & n) t.setUint8(e++, a); else if (!(32 & n)) { t.setInt16(e, a); e += 2 } } return e - i } scale(e, t) { for (const i of this.contours) if (0 !== i.xCoordinates.length) for (let a = 0, s = i.xCoordinates.length; a < s; a++)i.xCoordinates[a] = Math.round(e + (i.xCoordinates[a] - e) * t) } } class CompositeGlyph { constructor({ flags: e, glyphIndex: t, argument1: i, argument2: a, transf: s, instructions: r }) { this.flags = e; this.glyphIndex = t; this.argument1 = i; this.argument2 = a; this.transf = s; this.instructions = r } static parse(e, t) { const i = e, a = []; let s = t.getUint16(e); const r = t.getUint16(e + 2); e += 4; let n, o; if (1 & s) { if (2 & s) { n = t.getInt16(e); o = t.getInt16(e + 2) } else { n = t.getUint16(e); o = t.getUint16(e + 2) } e += 4; s ^= 1 } else { if (2 & s) { n = t.getInt8(e); o = t.getInt8(e + 1) } else { n = t.getUint8(e); o = t.getUint8(e + 1) } e += 2 } if (8 & s) { a.push(t.getUint16(e)); e += 2 } else if (64 & s) { a.push(t.getUint16(e), t.getUint16(e + 2)); e += 4 } else if (128 & s) { a.push(t.getUint16(e), t.getUint16(e + 2), t.getUint16(e + 4), t.getUint16(e + 6)); e += 8 } let g = null; if (256 & s) { const i = t.getUint16(e); e += 2; g = new Uint8Array(t).slice(e, e + i); e += i } return [e - i, new CompositeGlyph({ flags: s, glyphIndex: r, argument1: n, argument2: o, transf: a, instructions: g })] } getSize() { let e = 4 + 2 * this.transf.length; 256 & this.flags && (e += 2 + this.instructions.length); e += 2; 2 & this.flags ? this.argument1 >= -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 i = 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 - i } scale(e, t) { } } function writeInt16(e, t, i) { e[t] = i >> 8 & 255; e[t + 1] = 255 & i } function writeInt32(e, t, i) { e[t] = i >> 24 & 255; e[t + 1] = i >> 16 & 255; e[t + 2] = i >> 8 & 255; e[t + 3] = 255 & i } function writeData(e, t, i) { if (i instanceof Uint8Array) e.set(i, t); else if ("string" == typeof i) for (let a = 0, s = i.length; a < s; a++)e[t++] = 255 & i.charCodeAt(a); else for (const a of i) e[t++] = 255 & a } class OpenTypeFileBuilder { constructor(e) { this.sfnt = e; this.tables = Object.create(null) } static getSearchParams(e, t) { let i = 1, a = 0; for (; (i ^ e) > i;) { i <<= 1; a++ } const s = i * t; return { range: s, entry: a, rangeShift: t * e - s } } toArray() { let e = this.sfnt; const t = this.tables, i = Object.keys(t); i.sort(); const a = i.length; let s, r, n, o, g, c = 12 + 16 * a; const h = [c]; for (s = 0; s < a; s++) { o = t[i[s]]; c += (o.length + 3 & -4) >>> 0; h.push(c) } const l = new Uint8Array(c); for (s = 0; s < a; s++) { o = t[i[s]]; writeData(l, h[s], o) } "true" === e && (e = string32(65536)); l[0] = 255 & e.charCodeAt(0); l[1] = 255 & e.charCodeAt(1); l[2] = 255 & e.charCodeAt(2); l[3] = 255 & e.charCodeAt(3); writeInt16(l, 4, a); const C = OpenTypeFileBuilder.getSearchParams(a, 16); writeInt16(l, 6, C.range); writeInt16(l, 8, C.entry); writeInt16(l, 10, C.rangeShift); c = 12; for (s = 0; s < a; s++) { g = i[s]; l[c] = 255 & g.charCodeAt(0); l[c + 1] = 255 & g.charCodeAt(1); l[c + 2] = 255 & g.charCodeAt(2); l[c + 3] = 255 & g.charCodeAt(3); let e = 0; for (r = h[s], n = h[s + 1]; r < n; r += 4) { e = e + readUint32(l, r) >>> 0 } writeInt32(l, c + 4, e); writeInt32(l, c + 8, h[s]); writeInt32(l, c + 12, t[g].length); c += 16 } return l } addTable(e, t) { if (e in this.tables) throw new Error("Table " + e + " already exists"); this.tables[e] = t } } const ta = [4], ia = [5], aa = [6], sa = [7], ra = [8], na = [12, 35], oa = [14], ga = [21], Ia = [22], ca = [30], ha = [31]; class Type1CharString { constructor() { this.width = 0; this.lsb = 0; this.flexing = !1; this.output = []; this.stack = [] } convert(e, t, i) { const a = e.length; let s, r, n, o = !1; for (let g = 0; g < a; g++) { let a = e[g]; if (a < 32) { 12 === a && (a = (a << 8) + e[++g]); switch (a) { case 1: case 3: case 9: case 3072: case 3073: case 3074: case 3105: this.stack = []; break; case 4: if (this.flexing) { if (this.stack.length < 1) { o = !0; break } const e = this.stack.pop(); this.stack.push(0, e); break } o = this.executeCommand(1, ta); break; case 5: o = this.executeCommand(2, ia); break; case 6: o = this.executeCommand(1, aa); break; case 7: o = this.executeCommand(1, sa); break; case 8: o = this.executeCommand(6, ra); break; case 10: if (this.stack.length < 1) { o = !0; break } n = this.stack.pop(); if (!t[n]) { o = !0; break } o = this.convert(t[n], t, i); break; case 11: return o; case 13: if (this.stack.length < 2) { o = !0; break } s = this.stack.pop(); r = this.stack.pop(); this.lsb = r; this.width = s; this.stack.push(s, r); o = this.executeCommand(2, Ia); break; case 14: this.output.push(oa[0]); break; case 21: if (this.flexing) break; o = this.executeCommand(2, ga); break; case 22: if (this.flexing) { this.stack.push(0); break } o = this.executeCommand(1, Ia); break; case 30: o = this.executeCommand(4, ca); break; case 31: o = this.executeCommand(4, ha); break; case 3078: if (i) { const e = this.stack.at(-5); this.seac = this.stack.splice(-4, 4); this.seac[0] += this.lsb - e; o = this.executeCommand(0, oa) } else o = this.executeCommand(4, oa); break; case 3079: if (this.stack.length < 4) { o = !0; break } this.stack.pop(); s = this.stack.pop(); const e = this.stack.pop(); r = this.stack.pop(); this.lsb = r; this.width = s; this.stack.push(s, r, e); o = this.executeCommand(3, ga); break; case 3084: if (this.stack.length < 2) { o = !0; break } const g = this.stack.pop(), c = this.stack.pop(); this.stack.push(c / g); break; case 3088: if (this.stack.length < 2) { o = !0; break } n = this.stack.pop(); const h = this.stack.pop(); if (0 === n && 3 === h) { const e = this.stack.splice(-17, 17); this.stack.push(e[2] + e[0], e[3] + e[1], e[4], e[5], e[6], e[7], e[8], e[9], e[10], e[11], e[12], e[13], e[14]); o = this.executeCommand(13, na, !0); this.flexing = !1; this.stack.push(e[15], e[16]) } else 1 === n && 0 === h && (this.flexing = !0); break; case 3089: break; default: warn('Unknown type 1 charstring command of "' + a + '"') }if (o) break } else { a <= 246 ? a -= 139 : a = a <= 250 ? 256 * (a - 247) + e[++g] + 108 : a <= 254 ? -256 * (a - 251) - e[++g] - 108 : (255 & e[++g]) << 24 | (255 & e[++g]) << 16 | (255 & e[++g]) << 8 | (255 & e[++g]) << 0; this.stack.push(a) } } return o } executeCommand(e, t, i) { const a = this.stack.length; if (e > a) return !0; const s = a - e; for (let e = s; e < a; e++) { let t = this.stack[e]; if (Number.isInteger(t)) this.output.push(28, t >> 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); i ? this.stack.splice(s, 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, i) { if (i >= e.length) return new Uint8Array(0); let a, s, r = 0 | t; for (a = 0; a < i; a++)r = 52845 * (e[a] + r) + 22719 & 65535; const n = e.length - i, o = new Uint8Array(n); for (a = i, s = 0; s < n; a++, s++) { const t = e[a]; o[s] = t ^ r >> 8; r = 52845 * (t + r) + 22719 & 65535 } return o } function isSpecial(e) { return 47 === e || 91 === e || 93 === e || 123 === e || 125 === e || 40 === e || 41 === e } class Type1Parser { constructor(e, t, i) { if (t) { const t = e.getBytes(), i = !((isHexDigit(t[0]) || 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 Stream(i ? decrypt(t, 55665, 4) : function decryptAscii(e, t, i) { let a = 0 | t; const s = e.length, r = new Uint8Array(s >>> 1); let n, o; for (n = 0, o = 0; n < s; n++) { const t = e[n]; if (!isHexDigit(t)) continue; n++; let i; for (; n < s && !isHexDigit(i = e[n]);)n++; if (n < s) { const e = parseInt(String.fromCharCode(t, i), 16); r[o++] = e ^ a >> 8; a = 52845 * (e + a) + 22719 & 65535 } } return r.slice(i, o) }(t, 55665, 4)) } this.seacAnalysisEnabled = !!i; 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 (!isWhiteSpace(t)) break; t = this.nextChar() } if (isSpecial(t)) { this.nextChar(); return String.fromCharCode(t) } let i = ""; do { i += String.fromCharCode(t); t = this.nextChar() } while (t >= 0 && !isWhiteSpace(t) && !isSpecial(t)); return i } readCharStrings(e, t) { return -1 === t ? e : decrypt(e, 4330, t) } extractFontProgram(e) { const t = this.stream, i = [], a = [], s = Object.create(null); s.lenIV = 4; const r = { subrs: [], charstrings: [], properties: { privateData: s } }; let n, o, g, c; for (; null !== (n = this.getToken());)if ("/" === n) { n = this.getToken(); switch (n) { case "CharStrings": this.getToken(); this.getToken(); this.getToken(); this.getToken(); for (; ;) { n = this.getToken(); if (null === n || "end" === n) break; if ("/" !== n) continue; const e = this.getToken(); o = this.readInt(); this.getToken(); g = o > 0 ? t.getBytes(o) : new Uint8Array(0); c = r.properties.privateData.lenIV; const i = this.readCharStrings(g, c); this.nextChar(); n = this.getToken(); "noaccess" === n ? this.getToken() : "/" === n && this.prevChar(); a.push({ glyph: e, encoded: i }) } break; case "Subrs": this.readInt(); this.getToken(); for (; "dup" === this.getToken();) { const e = this.readInt(); o = this.readInt(); this.getToken(); g = o > 0 ? t.getBytes(o) : new Uint8Array(0); c = r.properties.privateData.lenIV; const a = this.readCharStrings(g, c); this.nextChar(); n = this.getToken(); "noaccess" === n && this.getToken(); i[e] = a } break; case "BlueValues": case "OtherBlues": case "FamilyBlues": case "FamilyOtherBlues": const e = this.readNumberArray(); e.length > 0 && e.length, 0; break; case "StemSnapH": case "StemSnapV": r.properties.privateData[n] = this.readNumberArray(); break; case "StdHW": case "StdVW": r.properties.privateData[n] = this.readNumberArray()[0]; break; case "BlueShift": case "lenIV": case "BlueFuzz": case "BlueScale": case "LanguageGroup": r.properties.privateData[n] = this.readNumber(); break; case "ExpansionFactor": r.properties.privateData[n] = this.readNumber() || .06; break; case "ForceBold": r.properties.privateData[n] = this.readBoolean() } } for (const { encoded: t, glyph: s } of a) { const a = new Type1CharString, n = a.convert(t, i, this.seacAnalysisEnabled); let o = a.output; n && (o = [14]); const g = { glyphName: s, charstring: o, width: a.width, lsb: a.lsb, seac: a.seac }; ".notdef" === s ? r.charstrings.unshift(g) : r.charstrings.push(g); if (e.builtInEncoding) { const t = e.builtInEncoding.indexOf(s); t > -1 && void 0 === e.widths[t] && t >= e.firstChar && t <= e.lastChar && (e.widths[t] = a.width) } } return r } extractFontHeader(e) { let t; for (; null !== (t = this.getToken());)if ("/" === t) { t = this.getToken(); switch (t) { case "FontMatrix": const i = this.readNumberArray(); e.fontMatrix = i; break; case "Encoding": const a = this.getToken(); let s; if (/^\d+$/.test(a)) { s = []; const e = 0 | parseInt(a, 10); this.getToken(); for (let i = 0; i < e; i++) { t = this.getToken(); for (; "dup" !== t && "def" !== t;) { t = this.getToken(); if (null === t) return } if ("def" === t) break; const e = this.readInt(); this.getToken(); const i = this.getToken(); s[e] = i; this.getToken() } } else s = getEncoding(a); e.builtInEncoding = s; break; case "FontBBox": const r = this.readNumberArray(); e.ascent = Math.max(r[3], r[1]); e.descent = Math.min(r[1], r[3]); e.ascentScaled = !0 } } } } function findBlock(e, t, i) { const a = e.length, s = t.length, r = a - s; let n = i, o = !1; for (; n < r;) { let i = 0; for (; i < s && e[n + i] === t[i];)i++; if (i >= s) { n += i; for (; n < a && isWhiteSpace(e[n]);)n++; o = !0; break } n++ } return { found: o, length: n } } class Type1Font { constructor(e, t, i) { let a = i.length1, s = i.length2, r = t.peekBytes(6); const n = 128 === r[0] && 1 === r[1]; if (n) { t.skip(6); a = r[5] << 24 | r[4] << 16 | r[3] << 8 | r[2] } const o = function getHeaderBlock(e, t) { const i = [101, 101, 120, 101, 99], a = e.pos; let s, r, n, o; try { s = e.getBytes(t); r = s.length } catch { } if (r === t) { n = findBlock(s, i, t - 2 * i.length); if (n.found && n.length === t) return { stream: new Stream(s), length: t } } warn('Invalid "Length1" property in Type1 font -- trying to recover.'); e.pos = a; for (; ;) { n = findBlock(e.peekBytes(2048), i, 0); if (0 === n.length) break; e.pos += n.length; if (n.found) { o = e.pos - a; break } } e.pos = a; if (o) return { stream: new Stream(e.getBytes(o)), length: o }; warn('Unable to recover "Length1" property in Type1 font -- using as is.'); return { stream: new Stream(e.getBytes(t)), length: t } }(t, a); new Type1Parser(o.stream, !1, Yi).extractFontHeader(i); if (n) { r = t.getBytes(6); s = r[5] << 24 | r[4] << 16 | r[3] << 8 | r[2] } const g = function getEexecBlock(e, t) { const i = e.getBytes(); if (0 === i.length) throw new FormatError("getEexecBlock - no font program found."); return { stream: new Stream(i), length: i.length } }(t), c = new Type1Parser(g.stream, !0, Yi).extractFontProgram(i); for (const e in c.properties) i[e] = c.properties[e]; const h = c.charstrings, l = this.getType2Charstrings(h), C = this.getType2Subrs(c.subrs); this.charstrings = h; this.data = this.wrap(e, l, this.charstrings, C, i); this.seacs = this.getSeacs(c.charstrings) } get numGlyphs() { return this.charstrings.length + 1 } getCharset() { const e = [".notdef"]; for (const { glyphName: t } of this.charstrings) e.push(t); return e } getGlyphMapping(e) { const t = this.charstrings; if (e.composite) { const i = Object.create(null); for (let a = 0, s = t.length; a < s; a++) { i[e.cMap.charCodeOf(a)] = a + 1 } return i } const i = [".notdef"]; let a, s; for (s = 0; s < t.length; s++)i.push(t[s].glyphName); const r = e.builtInEncoding; if (r) { a = Object.create(null); for (const e in r) { s = i.indexOf(r[e]); s >= 0 && (a[e] = s) } } return type1FontGlyphMapping(e, a, i) } 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 i = 0, a = e.length; i < a; i++) { const a = e[i]; a.seac && (t[i + 1] = a.seac) } return t } getType2Charstrings(e) { const t = []; for (const i of e) t.push(i.charstring); return t } getType2Subrs(e) { let t = 0; const i = e.length; t = i < 1133 ? 107 : i < 33769 ? 1131 : 32768; const a = []; let s; for (s = 0; s < t; s++)a.push([11]); for (s = 0; s < i; s++)a.push(e[s]); return a } wrap(e, t, i, a, s) { const r = new CFF; r.header = new CFFHeader(1, 0, 4, 4); r.names = [e]; const n = new CFFTopDict; n.setByName("version", 391); n.setByName("Notice", 392); n.setByName("FullName", 393); n.setByName("FamilyName", 394); n.setByName("Weight", 395); n.setByName("Encoding", null); n.setByName("FontMatrix", s.fontMatrix); n.setByName("FontBBox", s.bbox); n.setByName("charset", null); n.setByName("CharStrings", null); n.setByName("Private", null); r.topDict = n; const o = new CFFStrings; o.add("Version 0.11"); o.add("See original notice"); o.add(e); o.add(e); o.add("Medium"); r.strings = o; r.globalSubrIndex = new CFFIndex; const g = t.length, c = [".notdef"]; let h, l; for (h = 0; h < g; h++) { const e = i[h].glyphName; -1 === wi.indexOf(e) && o.add(e); c.push(e) } r.charset = new CFFCharset(!1, 0, c); const C = new CFFIndex; C.add([139, 14]); for (h = 0; h < g; h++)C.add(t[h]); r.charStrings = C; const Q = new CFFPrivateDict; Q.setByName("Subrs", null); const E = ["BlueValues", "OtherBlues", "FamilyBlues", "FamilyOtherBlues", "StemSnapH", "StemSnapV", "BlueShift", "BlueFuzz", "BlueScale", "LanguageGroup", "ExpansionFactor", "ForceBold", "StdHW", "StdVW"]; for (h = 0, l = E.length; h < l; h++) { const e = E[h]; if (!(e in s.privateData)) continue; const t = s.privateData[e]; if (Array.isArray(t)) for (let e = t.length - 1; e > 0; e--)t[e] -= t[e - 1]; Q.setByName(e, t) } r.topDict.privateDict = Q; const u = new CFFIndex; for (h = 0, l = a.length; h < l; h++)u.add(a[h]); Q.subrsIndex = u; return new CFFCompiler(r).compile() } } const la = [[57344, 63743], [1048576, 1114109]], Ca = 1e3, Ba = ["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"], Qa = ["cMap", "defaultEncoding", "differences", "isMonospace", "isSerifFont", "isSymbolicFont", "seacMap", "toFontChar", "toUnicode", "vmetrics", "widths"]; function adjustWidths(e) { if (!e.fontMatrix) return; if (e.fontMatrix[0] === a[0]) return; const t = .001 / e.fontMatrix[0], i = e.widths; for (const e in i) i[e] *= t; e.defaultWidth *= t } function amendFallbackToUnicode(e) { if (!e.fallbackToUnicode) return; if (e.toUnicode instanceof IdentityToUnicodeMap) return; const t = []; for (const i in e.fallbackToUnicode) e.toUnicode.has(i) || (t[i] = e.fallbackToUnicode[i]); t.length > 0 && e.toUnicode.amend(t) } class fonts_Glyph { constructor(e, t, i, a, s, r, n, o, g) { this.originalCharCode = e; this.fontChar = t; this.unicode = i; this.accent = a; this.width = s; this.vmetric = r; this.operatorListId = n; this.isSpace = o; this.isInFont = g } get category() { return shadow(this, "category", function getCharUnicodeCategory(e) { const t = Hi.get(e); if (t) return t; const i = e.match(Ji), a = { isWhitespace: !!i?.[1], isZeroWidthDiacritic: !!i?.[2], isInvisibleFormatMark: !!i?.[3] }; Hi.set(e, a); return a }(this.unicode), !0) } } function int16(e, t) { return (e << 8) + t } function writeSignedInt16(e, t, i) { e[t + 1] = i; e[t] = i >>> 8 } function signedInt16(e, t) { const i = (e << 8) + t; return 32768 & i ? i - 65536 : i } 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) { return "ttcf" === bytesToString(e.peekBytes(4)) } function getFontFileType(e, { type: t, subtype: i, composite: a }) { let s, r; if (function isTrueTypeFile(e) { const t = e.peekBytes(4); return 65536 === readUint32(t, 0) || "true" === bytesToString(t) }(e) || isTrueTypeCollectionFile(e)) s = a ? "CIDFontType2" : "TrueType"; else if (function isOpenTypeFile(e) { return "OTTO" === bytesToString(e.peekBytes(4)) }(e)) s = a ? "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)) s = a ? "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 (a) { s = "CIDFontType0"; r = "CIDFontType0C" } else { s = "MMType1" === t ? "MMType1" : "Type1"; r = "Type1C" } else { warn("getFontFileType: Unable to detect correct font file Type/Subtype."); s = t; r = i } return [s, r] } function applyStandardFontGlyphMap(e, t) { for (const i in t) e[+i] = t[i] } function buildToFontChar(e, t, i) { const a = []; let s; for (let i = 0, r = e.length; i < r; i++) { s = getUnicodeForGlyph(e[i], t); -1 !== s && (a[i] = s) } for (const e in i) { s = getUnicodeForGlyph(i[e], t); -1 !== s && (a[+e] = s) } return a } function isMacNameRecord(e) { return 1 === e.platform && 0 === e.encoding && 0 === e.language } function isWinNameRecord(e) { return 3 === e.platform && 1 === e.encoding && 1033 === e.language } function convertCidString(e, t, i = !1) { switch (t.length) { case 1: return t.charCodeAt(0); case 2: return t.charCodeAt(0) << 8 | t.charCodeAt(1) }const a = `Unsupported CID string (charCode ${e}): "${t}".`; if (i) throw new FormatError(a); warn(a); return t } function adjustMapping(e, t, i, a) { const s = Object.create(null), r = new Map, n = [], o = new Set; let g = 0; let c = la[g][0], h = la[g][1]; for (const C in e) { let Q = e[C]; if (!t(Q)) continue; if (c > h) { g++; if (g >= la.length) { warn("Ran out of space in font private use area."); break } c = la[g][0]; h = la[g][1] } const E = c++; 0 === Q && (Q = i); let u = a.get(C); "string" == typeof u && (u = u.codePointAt(0)); if (u && !(l = u, la[0][0] <= l && l <= la[0][1] || la[1][0] <= l && l <= la[1][1]) && !o.has(Q)) { r.set(u, Q); o.add(Q) } s[E] = Q; n[C] = E } var l; return { toFontChar: n, charCodeToGlyphId: s, toUnicodeExtraMap: r, nextAvailableFontCharCode: c } } function createCmapTable(e, t, i) { const a = function getRanges(e, t, i) { const a = []; for (const t in e) e[t] >= i || a.push({ fontCharCode: 0 | t, glyphId: e[t] }); if (t) for (const [e, s] of t) s >= i || a.push({ fontCharCode: e, glyphId: s }); 0 === a.length && a.push({ fontCharCode: 0, glyphId: 0 }); a.sort((function fontGetRangesSort(e, t) { return e.fontCharCode - t.fontCharCode })); const s = [], r = a.length; for (let e = 0; e < r;) { const t = a[e].fontCharCode, i = [a[e].glyphId]; ++e; let n = t; for (; e < r && n + 1 === a[e].fontCharCode;) { i.push(a[e].glyphId); ++n; ++e; if (65535 === n) break } s.push([t, n, i]) } return s }(e, t, i), s = a.at(-1)[1] > 65535 ? 2 : 1; let r, n, o, g, c = "\0\0" + string16(s) + "\0\0" + string32(4 + 8 * s); for (r = a.length - 1; r >= 0 && !(a[r][0] <= 65535); --r); const h = r + 1; a[r][0] < 65535 && 65535 === a[r][1] && (a[r][1] = 65534); const l = a[r][1] < 65535 ? 1 : 0, C = h + l, Q = OpenTypeFileBuilder.getSearchParams(C, 2); let E, u, d, f, p = "", m = "", y = "", w = "", b = "", D = 0; for (r = 0, n = h; r < n; r++) { E = a[r]; u = E[0]; d = E[1]; p += string16(u); m += string16(d); f = E[2]; let e = !0; for (o = 1, g = f.length; o < g; ++o)if (f[o] !== f[o - 1] + 1) { e = !1; break } if (e) { y += string16(f[0] - u & 65535); w += string16(0) } else { const e = 2 * (C - r) + 2 * D; D += d - u + 1; y += string16(0); w += string16(e); for (o = 0, g = f.length; o < g; ++o)b += string16(f[o]) } } if (l > 0) { m += "ÿÿ"; p += "ÿÿ"; y += "\0"; w += "\0\0" } const F = "\0\0" + string16(2 * C) + string16(Q.range) + string16(Q.entry) + string16(Q.rangeShift) + m + "\0\0" + p + y + w + b; let S = "", k = ""; if (s > 1) { c += "\0\0\n" + string32(4 + 8 * s + 4 + F.length); S = ""; for (r = 0, n = a.length; r < n; r++) { E = a[r]; u = E[0]; f = E[2]; let e = f[0]; for (o = 1, g = f.length; o < g; ++o)if (f[o] !== f[o - 1] + 1) { d = E[0] + o - 1; S += string32(u) + string32(d) + string32(e); u = d + 1; e = f[o] } S += string32(u) + string32(E[1]) + string32(e) } k = "\0\f\0\0" + string32(S.length + 16) + "\0\0\0\0" + string32(S.length / 12) } return c + "\0" + string16(F.length + 4) + F + k + S } function createOS2Table(e, t, i) { i ||= { unitsPerEm: 0, yMax: 0, yMin: 0, ascent: 0, descent: 0 }; let s = 0, r = 0, n = 0, o = 0, g = null, c = 0, h = -1; if (t) { for (let e in t) { e |= 0; (g > e || !g) && (g = e); c < e && (c = e); h = getUnicodeRangeFor(e, h); if (h < 32) s |= 1 << h; else if (h < 64) r |= 1 << h - 32; else if (h < 96) n |= 1 << h - 64; else { if (!(h < 123)) throw new FormatError("Unicode ranges Bits > 123 are reserved for internal usage"); o |= 1 << h - 96 } } c > 65535 && (c = 65535) } else { g = 0; c = 255 } const l = e.bbox || [0, 0, 0, 0], C = i.unitsPerEm || 1 / (e.fontMatrix || a)[0], Q = e.ascentScaled ? 1 : C / Ca, E = i.ascent || Math.round(Q * (e.ascent || l[3])); let u = i.descent || Math.round(Q * (e.descent || l[1])); u > 0 && e.descent > 0 && l[1] < 0 && (u = -u); const d = i.yMax || E, f = -i.yMin || -u; 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" + string32(s) + string32(r) + string32(n) + string32(o) + "*21*" + string16(e.italicAngle ? 1 : 0) + string16(g || e.firstChar) + string16(c || e.lastChar) + string16(E) + string16(u) + "\0d" + string16(d) + string16(f) + "\0\0\0\0\0\0\0\0" + string16(e.xHeight) + string16(e.capHeight) + string16(0) + string16(g || e.firstChar) + "\0" } function createPostTable(e) { return "\0\0\0" + string32(Math.floor(65536 * e.italicAngle)) + "\0\0\0\0" + 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 i = [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"], a = []; let s, r, n, o, g; for (s = 0, r = i.length; s < r; s++) { g = t[1][s] || i[s]; const e = []; for (n = 0, o = g.length; n < o; n++)e.push(string16(g.charCodeAt(n))); a.push(e.join("")) } const c = [i, a], h = ["\0", "\0"], l = ["\0\0", "\0"], C = ["\0\0", "\t"], Q = i.length * h.length; let E = "\0\0" + string16(Q) + string16(12 * Q + 6), u = 0; for (s = 0, r = h.length; s < r; s++) { const e = c[s]; for (n = 0, o = e.length; n < o; n++) { g = e[n]; E += h[s] + l[s] + C[s] + string16(n) + string16(g.length) + string16(u); u += g.length } } E += i.join("") + a.join(""); return E } class Font { constructor(e, t, i) { this.name = e; this.psName = null; this.mimetype = null; this.disableFontFace = !1; this.loadedName = i.loadedName; this.isType3Font = i.isType3Font; this.missingFile = !1; this.cssFontInfo = i.cssFontInfo; this._charsCache = Object.create(null); this._glyphCache = Object.create(null); let a = !!(i.flags & Ki); if (!a && !i.isSimulatedFlags) { const t = e.replaceAll(/[,_]/g, "-").split("-", 1)[0], i = ji(); for (const e of t.split("+")) if (i[e]) { a = !0; break } } this.isSerifFont = a; this.isSymbolicFont = !!(i.flags & Ti); this.isMonospace = !!(i.flags & vi); let { type: s, subtype: r } = i; this.type = s; this.subtype = r; this.systemFontInfo = i.systemFontInfo; const n = e.match(/^InvalidPDFjsFont_(.*)_\d+$/); this.isInvalidPDFjsFont = !!n; this.isInvalidPDFjsFont ? this.fallbackName = n[1] : this.isMonospace ? this.fallbackName = "monospace" : this.isSerifFont ? this.fallbackName = "serif" : this.fallbackName = "sans-serif"; if (this.systemFontInfo?.guessFallback) { this.systemFontInfo.guessFallback = !1; this.systemFontInfo.css += `,${this.fallbackName}` } this.differences = i.differences; this.widths = i.widths; this.defaultWidth = i.defaultWidth; this.composite = i.composite; this.cMap = i.cMap; this.capHeight = i.capHeight / Ca; this.ascent = i.ascent / Ca; this.descent = i.descent / Ca; this.lineHeight = this.ascent - this.descent; this.fontMatrix = i.fontMatrix; this.bbox = i.bbox; this.defaultEncoding = i.defaultEncoding; this.toUnicode = i.toUnicode; this.toFontChar = []; if ("Type3" === i.type) { for (let e = 0; e < 256; e++)this.toFontChar[e] = this.differences[e] || i.defaultEncoding[e]; return } this.cidEncoding = i.cidEncoding || ""; this.vertical = !!i.vertical; if (this.vertical) { this.vmetrics = i.vmetrics; this.defaultVMetrics = i.defaultVMetrics } if (!t || t.isEmpty) { t && warn('Font file is empty in "' + e + '" (' + this.loadedName + ")"); this.fallbackToSystemFont(i); return } [s, r] = getFontFileType(t, i); s === this.type && r === this.subtype || info(`Inconsistent font file Type/SubType, expected: ${this.type}/${this.subtype} but found: ${s}/${r}.`); let o; try { switch (s) { case "MMType1": info("MMType1 font (" + e + "), falling back to Type1."); case "Type1": case "CIDFontType0": this.mimetype = "font/opentype"; const a = "Type1C" === r || "CIDFontType0C" === r ? new CFFFont(t, i) : new Type1Font(e, t, i); adjustWidths(i); o = this.convert(e, a, i); break; case "OpenType": case "TrueType": case "CIDFontType2": this.mimetype = "font/opentype"; o = this.checkAndRepair(e, t, i); if (this.isOpenType) { adjustWidths(i); s = "OpenType" } break; default: throw new FormatError(`Font ${s} is not supported`) } } catch (e) { warn(e); this.fallbackToSystemFont(i); return } amendFallbackToUnicode(i); this.data = o; this.type = s; this.subtype = r; this.fontMatrix = i.fontMatrix; this.widths = i.widths; this.defaultWidth = i.defaultWidth; this.toUnicode = i.toUnicode; this.seacMap = i.seacMap } get renderer() { return shadow(this, "renderer", FontRendererFactory.create(this, Yi)) } exportData(e = !1) { const t = e ? [...Ba, ...Qa] : Ba, i = Object.create(null); let a, s; for (a of t) { s = this[a]; void 0 !== s && (i[a] = s) } return i } fallbackToSystemFont(e) { this.missingFile = !0; const { name: t, type: i } = this; let a = normalizeFontName(t); const s = Pi(), r = Xi(), n = !!s[a], o = !(!r[a] || !s[r[a]]); a = s[a] || r[a] || a; const g = ea()[a]; if (g) { isNaN(this.ascent) && (this.ascent = g.ascent / Ca); isNaN(this.descent) && (this.descent = g.descent / Ca); isNaN(this.capHeight) && (this.capHeight = g.capHeight / Ca) } this.bold = /bold/gi.test(a); this.italic = /oblique|italic/gi.test(a); this.black = /Black/g.test(t); const c = /Narrow/g.test(t); this.remeasure = (!n || c) && Object.keys(this.widths).length > 0; if ((n || o) && "CIDFontType2" === i && this.cidEncoding.startsWith("Identity-")) { const i = e.cidToGidMap, a = []; applyStandardFontGlyphMap(a, Vi()); /Arial-?Black/i.test(t) ? applyStandardFontGlyphMap(a, zi()) : /Calibri/i.test(t) && applyStandardFontGlyphMap(a, _i()); if (i) { for (const e in a) { const t = a[e]; void 0 !== i[t] && (a[+e] = i[t]) } i.length !== this.toUnicode.length && e.hasIncludedToUnicodeMap && this.toUnicode instanceof IdentityToUnicodeMap && this.toUnicode.forEach((function (e, t) { const s = a[e]; void 0 === i[s] && (a[+e] = t) })) } this.toUnicode instanceof IdentityToUnicodeMap || this.toUnicode.forEach((function (e, t) { a[+e] = t })); this.toFontChar = a; this.toUnicode = new ToUnicodeMap(a) } else if (/Symbol/i.test(a)) this.toFontChar = buildToFontChar(mi, Ni(), this.differences); else if (/Dingbats/i.test(a)) this.toFontChar = buildToFontChar(yi, Gi(), this.differences); else if (n) { const e = buildToFontChar(this.defaultEncoding, Ni(), this.differences); "CIDFontType2" !== i || this.cidEncoding.startsWith("Identity-") || this.toUnicode instanceof IdentityToUnicodeMap || this.toUnicode.forEach((function (t, i) { e[+t] = i })); this.toFontChar = e } else { const e = Ni(), i = []; this.toUnicode.forEach(((t, a) => { if (!this.composite) { const i = getUnicodeForGlyph(this.differences[t] || this.defaultEncoding[t], e); -1 !== i && (a = i) } i[+t] = a })); this.composite && this.toUnicode instanceof IdentityToUnicodeMap && /Tahoma|Verdana/i.test(t) && applyStandardFontGlyphMap(i, Vi()); this.toFontChar = i } amendFallbackToUnicode(e); this.loadedName = a.split("-", 1)[0] } checkAndRepair(e, t, i) { const a = ["OS/2", "cmap", "head", "hhea", "hmtx", "maxp", "name", "post", "loca", "glyf", "fpgm", "prep", "cvt ", "CFF "]; function readTables(e, t) { const i = Object.create(null); i["OS/2"] = null; i.cmap = null; i.head = null; i.hhea = null; i.hmtx = null; i.maxp = null; i.name = null; i.post = null; for (let s = 0; s < t; s++) { const t = readTableEntry(e); a.includes(t.tag) && (0 !== t.length && (i[t.tag] = t)) } return i } function readTableEntry(e) { const t = e.getString(4), i = e.getInt32() >>> 0, a = e.getInt32() >>> 0, s = e.getInt32() >>> 0, r = e.pos; e.pos = e.start || 0; e.skip(a); const n = e.getBytes(s); e.pos = r; if ("head" === t) { n[8] = n[9] = n[10] = n[11] = 0; n[17] |= 32 } return { tag: t, checksum: i, length: s, offset: a, data: n } } function readOpenTypeHeader(e) { return { version: e.getString(4), numTables: e.getUint16(), searchRange: e.getUint16(), entrySelector: e.getUint16(), rangeShift: e.getUint16() } } function sanitizeGlyph(e, t, i, a, s, r) { const n = { length: 0, sizeOfInstructions: 0 }; if (t < 0 || t >= e.length || i > e.length || i - t <= 12) return n; const o = e.subarray(t, i), g = signedInt16(o[2], o[3]), c = signedInt16(o[4], o[5]), h = signedInt16(o[6], o[7]), l = signedInt16(o[8], o[9]); if (g > h) { writeSignedInt16(o, 2, h); writeSignedInt16(o, 6, g) } if (c > l) { writeSignedInt16(o, 4, l); writeSignedInt16(o, 8, c) } const C = signedInt16(o[0], o[1]); if (C < 0) { if (C < -1) return n; a.set(o, s); n.length = o.length; return n } let Q, E = 10, u = 0; for (Q = 0; Q < C; Q++) { u = (o[E] << 8 | o[E + 1]) + 1; E += 2 } const d = E, f = o[E] << 8 | o[E + 1]; n.sizeOfInstructions = f; E += 2 + f; const p = E; let m = 0; for (Q = 0; Q < u; Q++) { const e = o[E++]; 192 & e && (o[E - 1] = 63 & e); let t = 2; 2 & e ? t = 1 : 16 & e && (t = 0); let i = 2; 4 & e ? i = 1 : 32 & e && (i = 0); const a = t + i; m += a; if (8 & e) { const e = o[E++]; 0 === e && (o[E - 1] ^= 8); Q += e; m += e * a } } if (0 === m) return n; let y = E + m; if (y > o.length) return n; if (!r && f > 0) { a.set(o.subarray(0, d), s); a.set([0, 0], s + d); a.set(o.subarray(p, y), s + d + 2); y -= f; o.length - y > 3 && (y = y + 3 & -4); n.length = y; return n } if (o.length - y > 3) { y = y + 3 & -4; a.set(o.subarray(0, y), s); n.length = y; return n } a.set(o, s); n.length = o.length; return n } function readNameTable(e) { const i = (t.start || 0) + e.offset; t.pos = i; const a = [[], []], s = [], r = e.length, n = i + r; if (0 !== t.getUint16() || r < 6) return [a, s]; const o = t.getUint16(), g = t.getUint16(); let c, h; for (c = 0; c < o && t.pos + 12 <= n; c++) { const e = { platform: t.getUint16(), encoding: t.getUint16(), language: t.getUint16(), name: t.getUint16(), length: t.getUint16(), offset: t.getUint16() }; (isMacNameRecord(e) || isWinNameRecord(e)) && s.push(e) } for (c = 0, h = s.length; c < h; c++) { const e = s[c]; if (e.length <= 0) continue; const r = i + g + e.offset; if (r + e.length > n) continue; t.pos = r; const o = e.name; if (e.encoding) { let i = ""; for (let a = 0, s = e.length; a < s; a += 2)i += String.fromCharCode(t.getUint16()); a[1][o] = i } else a[0][o] = t.getString(e.length) } return [a, s] } const s = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2]; function sanitizeTTProgram(e, t) { let i, a, r, n, o, g = e.data, c = 0, h = 0, l = 0; const C = [], Q = [], E = []; let u = t.tooComplexToFollowFunctions, d = !1, f = 0, p = 0; for (let e = g.length; c < e;) { const e = g[c++]; if (64 === e) { a = g[c++]; if (d || p) c += a; else for (i = 0; i < a; i++)C.push(g[c++]) } else if (65 === e) { a = g[c++]; if (d || p) c += 2 * a; else for (i = 0; i < a; i++) { r = g[c++]; C.push(r << 8 | g[c++]) } } else if (176 == (248 & e)) { a = e - 176 + 1; if (d || p) c += a; else for (i = 0; i < a; i++)C.push(g[c++]) } else if (184 == (248 & e)) { a = e - 184 + 1; if (d || p) c += 2 * a; else for (i = 0; i < a; i++) { r = g[c++]; C.push(r << 8 | g[c++]) } } else if (43 !== e || u) if (44 !== e || u) { if (45 === e) if (d) { d = !1; h = c } else { o = Q.pop(); if (!o) { warn("TT: ENDF bad stack"); t.hintsValid = !1; return } n = E.pop(); g = o.data; c = o.i; t.functionsStackDeltas[n] = C.length - o.stackTop } else if (137 === e) { if (d || p) { warn("TT: nested IDEFs not allowed"); u = !0 } d = !0; l = c } else if (88 === e) ++f; else if (27 === e) p = f; else if (89 === e) { p === f && (p = 0); --f } else if (28 === e && !d && !p) { const e = C.at(-1); e > 0 && (c += e - 1) } } else { if (d || p) { warn("TT: nested FDEFs not allowed"); u = !0 } d = !0; l = c; n = C.pop(); t.functionsDefined[n] = { data: g, i: c } } else if (!d && !p) { n = C.at(-1); if (isNaN(n)) info("TT: CALL empty stack (or invalid entry)."); else { t.functionsUsed[n] = !0; if (n in t.functionsStackDeltas) { const e = C.length + t.functionsStackDeltas[n]; if (e < 0) { warn("TT: CALL invalid functions stack delta."); t.hintsValid = !1; return } C.length = e } else if (n in t.functionsDefined && !E.includes(n)) { Q.push({ data: g, i: c, stackTop: C.length - 1 }); E.push(n); o = t.functionsDefined[n]; if (!o) { warn("TT: CALL non-existent function"); t.hintsValid = !1; return } g = o.data; c = o.i } } } if (!d && !p) { let t = 0; e <= 142 ? t = s[e] : e >= 192 && e <= 223 ? t = -1 : e >= 224 && (t = -2); if (e >= 113 && e <= 117) { a = C.pop(); isNaN(a) || (t = 2 * -a) } for (; t < 0 && C.length > 0;) { C.pop(); t++ } for (; t > 0;) { C.push(NaN); t-- } } } t.tooComplexToFollowFunctions = u; const m = [g]; c > g.length && m.push(new Uint8Array(c - g.length)); if (l > h) { warn("TT: complementing a missing function tail"); m.push(new Uint8Array([34, 45])) } !function foldTTTable(e, t) { if (t.length > 1) { let i, a, s = 0; for (i = 0, a = t.length; i < a; i++)s += t[i].length; s = s + 3 & -4; const r = new Uint8Array(s); let n = 0; for (i = 0, a = t.length; i < a; i++) { r.set(t[i], n); n += t[i].length } e.data = r; e.length = s } }(e, m) } let r, n, o, g; if (isTrueTypeCollectionFile(t = new Stream(new Uint8Array(t.getBytes())))) { const e = function readTrueTypeCollectionData(e, t) { const { numFonts: i, offsetTable: a } = function readTrueTypeCollectionHeader(e) { const t = e.getString(4); assert("ttcf" === t, "Must be a TrueType Collection font."); const i = e.getUint16(), a = e.getUint16(), s = e.getInt32() >>> 0, r = []; for (let t = 0; t < s; t++)r.push(e.getInt32() >>> 0); const n = { ttcTag: t, majorVersion: i, minorVersion: a, numFonts: s, offsetTable: r }; switch (i) { case 1: return n; case 2: n.dsigTag = e.getInt32() >>> 0; n.dsigLength = e.getInt32() >>> 0; n.dsigOffset = e.getInt32() >>> 0; return n }throw new FormatError(`Invalid TrueType Collection majorVersion: ${i}.`) }(e), s = t.split("+"); let r; for (let n = 0; n < i; n++) { e.pos = (e.start || 0) + a[n]; const i = readOpenTypeHeader(e), o = readTables(e, i.numTables); if (!o.name) throw new FormatError('TrueType Collection font must contain a "name" table.'); const [g] = readNameTable(o.name); for (let e = 0, a = g.length; e < a; e++)for (let a = 0, n = g[e].length; a < n; a++) { const n = g[e][a]?.replaceAll(/\s/g, ""); if (n) { if (n === t) return { header: i, tables: o }; if (!(s.length < 2)) for (const e of s) n === e && (r = { name: e, header: i, tables: o }) } } } if (r) { warn(`TrueType Collection does not contain "${t}" font, falling back to "${r.name}" font instead.`); return { header: r.header, tables: r.tables } } throw new FormatError(`TrueType Collection does not contain "${t}" font.`) }(t, this.name); r = e.header; n = e.tables } else { r = readOpenTypeHeader(t); n = readTables(t, r.numTables) } const c = !n["CFF "]; if (c) { if (!n.loca) throw new FormatError('Required "loca" table is not found'); if (!n.glyf) { warn('Required "glyf" table is not found -- trying to recover.'); n.glyf = { tag: "glyf", data: new Uint8Array(0) } } this.isOpenType = !1 } else { const t = i.composite && (i.cidToGidMap?.length > 0 || !(i.cMap instanceof IdentityCMap)); if ("OTTO" === r.version && !t || !n.head || !n.hhea || !n.maxp || !n.post) { g = new Stream(n["CFF "].data); o = new CFFFont(g, i); adjustWidths(i); return this.convert(e, o, i) } delete n.glyf; delete n.loca; delete n.fpgm; delete n.prep; delete n["cvt "]; this.isOpenType = !0 } if (!n.maxp) throw new FormatError('Required "maxp" table is not found'); t.pos = (t.start || 0) + n.maxp.offset; let h = t.getInt32(); const l = t.getUint16(); if (65536 !== h && 20480 !== h) { if (6 === n.maxp.length) h = 20480; else { if (!(n.maxp.length >= 32)) throw new FormatError('"maxp" table has a wrong version number'); h = 65536 } !function writeUint32(e, t, i) { e[t + 3] = 255 & i; e[t + 2] = i >>> 8; e[t + 1] = i >>> 16; e[t] = i >>> 24 }(n.maxp.data, 0, h) } if (i.scaleFactors?.length === l && c) { const { scaleFactors: e } = i, t = int16(n.head.data[50], n.head.data[51]), a = new GlyfTable({ glyfTable: n.glyf.data, isGlyphLocationsLong: t, locaTable: n.loca.data, numGlyphs: l }); a.scale(e); const { glyf: s, loca: r, isLocationLong: o } = a.write(); n.glyf.data = s; n.loca.data = r; if (o !== !!t) { n.head.data[50] = 0; n.head.data[51] = o ? 1 : 0 } const g = n.hmtx.data; for (let t = 0; t < l; t++) { const i = 4 * t, a = Math.round(e[t] * int16(g[i], g[i + 1])); g[i] = a >> 8 & 255; g[i + 1] = 255 & a; writeSignedInt16(g, i + 2, Math.round(e[t] * signedInt16(g[i + 2], g[i + 3]))) } } let C = l + 1, Q = !0; if (C > 65535) { Q = !1; C = l; warn("Not enough space in glyfs to duplicate first glyph.") } let E = 0, u = 0; if (h >= 65536 && n.maxp.length >= 32) { t.pos += 8; if (t.getUint16() > 2) { n.maxp.data[14] = 0; n.maxp.data[15] = 2 } t.pos += 4; E = t.getUint16(); t.pos += 4; u = t.getUint16() } n.maxp.data[4] = C >> 8; n.maxp.data[5] = 255 & C; const d = function sanitizeTTPrograms(e, t, i, a) { const s = { functionsDefined: [], functionsUsed: [], functionsStackDeltas: [], tooComplexToFollowFunctions: !1, hintsValid: !0 }; e && sanitizeTTProgram(e, s); t && sanitizeTTProgram(t, s); e && function checkInvalidFunctions(e, t) { if (!e.tooComplexToFollowFunctions) if (e.functionsDefined.length > t) { warn("TT: more functions defined than expected"); e.hintsValid = !1 } else for (let i = 0, a = e.functionsUsed.length; i < a; i++) { if (i > t) { warn("TT: invalid function id: " + i); e.hintsValid = !1; return } if (e.functionsUsed[i] && !e.functionsDefined[i]) { warn("TT: undefined function: " + i); e.hintsValid = !1; return } } }(s, a); if (i && 1 & i.length) { const e = new Uint8Array(i.length + 1); e.set(i.data); i.data = e } return s.hintsValid }(n.fpgm, n.prep, n["cvt "], E); if (!d) { delete n.fpgm; delete n.prep; delete n["cvt "] } !function sanitizeMetrics(e, t, i, a, s, r) { if (!t) { i && (i.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 n = e.getUint16(); e.pos += 8; e.pos += 2; let o = e.getUint16(); if (0 !== n) { if (!(2 & int16(a.data[44], a.data[45]))) { t.data[22] = 0; t.data[23] = 0 } } if (o > s) { info(`The numOfMetrics (${o}) should not be greater than the numGlyphs (${s}).`); o = s; t.data[34] = (65280 & o) >> 8; t.data[35] = 255 & o } const g = s - o - (i.length - 4 * o >> 1); if (g > 0) { const e = new Uint8Array(i.length + 2 * g); e.set(i.data); if (r) { e[i.length] = i.data[2]; e[i.length + 1] = i.data[3] } i.data = e } }(t, n.hhea, n.hmtx, n.head, C, Q); if (!n.head) throw new FormatError('Required "head" table is not found'); !function sanitizeHead(e, t, i) { const a = e.data, s = function int32(e, t, i, a) { return (e << 24) + (t << 16) + (i << 8) + a }(a[0], a[1], a[2], a[3]); if (s >> 16 != 1) { info("Attempting to fix invalid version in head table: " + s); a[0] = 0; a[1] = 1; a[2] = 0; a[3] = 0 } const r = int16(a[50], a[51]); if (r < 0 || r > 1) { info("Attempting to fix invalid indexToLocFormat in head table: " + r); const e = t + 1; if (i === e << 1) { a[50] = 0; a[51] = 0 } else { if (i !== e << 2) throw new FormatError("Could not fix indexToLocFormat: " + r); a[50] = 0; a[51] = 1 } } }(n.head, l, c ? n.loca.length : 0); let f = Object.create(null); if (c) { const e = int16(n.head.data[50], n.head.data[51]), t = function sanitizeGlyphLocations(e, t, i, a, s, r, n) { let o, g, c; if (a) { o = 4; g = function fontItemDecodeLong(e, t) { return e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | e[t + 3] }; c = function fontItemEncodeLong(e, t, i) { e[t] = i >>> 24 & 255; e[t + 1] = i >> 16 & 255; e[t + 2] = i >> 8 & 255; e[t + 3] = 255 & i } } else { o = 2; g = function fontItemDecode(e, t) { return e[t] << 9 | e[t + 1] << 1 }; c = function fontItemEncode(e, t, i) { e[t] = i >> 9 & 255; e[t + 1] = i >> 1 & 255 } } const h = r ? i + 1 : i, l = o * (1 + h), C = new Uint8Array(l); C.set(e.data.subarray(0, l)); e.data = C; const Q = t.data, E = Q.length, u = new Uint8Array(E); let d, f; const p = []; for (d = 0, f = 0; d < i + 1; d++, f += o) { let e = g(C, f); e > E && (e = E); p.push({ index: d, offset: e, endOffset: 0 }) } p.sort(((e, t) => e.offset - t.offset)); for (d = 0; d < i; d++)p[d].endOffset = p[d + 1].offset; p.sort(((e, t) => e.index - t.index)); for (d = 0; d < i; d++) { const { offset: e, endOffset: t } = p[d]; if (0 !== e || 0 !== t) break; const i = p[d + 1].offset; if (0 !== i) { p[d].endOffset = i; break } } const m = p.at(-2); 0 !== m.offset && 0 === m.endOffset && (m.endOffset = E); const y = Object.create(null); let w = 0; c(C, 0, w); for (d = 0, f = o; d < i; d++, f += o) { const e = sanitizeGlyph(Q, p[d].offset, p[d].endOffset, u, w, s), t = e.length; 0 === t && (y[d] = !0); e.sizeOfInstructions > n && (n = e.sizeOfInstructions); w += t; c(C, f, w) } if (0 === w) { const e = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]); for (d = 0, f = o; d < h; d++, f += o)c(C, f, e.length); t.data = e } else if (r) { const i = g(C, o); if (u.length > i + w) t.data = u.subarray(0, i + w); else { t.data = new Uint8Array(i + w); t.data.set(u.subarray(0, w)) } t.data.set(u.subarray(0, i), w); c(e.data, C.length - o, w + i) } else t.data = u.subarray(0, w); return { missingGlyphs: y, maxSizeOfInstructions: n } }(n.loca, n.glyf, l, e, d, Q, u); f = t.missingGlyphs; if (h >= 65536 && n.maxp.length >= 32) { n.maxp.data[26] = t.maxSizeOfInstructions >> 8; n.maxp.data[27] = 255 & t.maxSizeOfInstructions } } if (!n.hhea) throw new FormatError('Required "hhea" table is not found'); if (0 === n.hhea.data[10] && 0 === n.hhea.data[11]) { n.hhea.data[10] = 255; n.hhea.data[11] = 255 } const p = { unitsPerEm: int16(n.head.data[18], n.head.data[19]), yMax: signedInt16(n.head.data[42], n.head.data[43]), yMin: signedInt16(n.head.data[38], n.head.data[39]), ascent: signedInt16(n.hhea.data[4], n.hhea.data[5]), descent: signedInt16(n.hhea.data[6], n.hhea.data[7]), lineGap: signedInt16(n.hhea.data[8], n.hhea.data[9]) }; this.ascent = p.ascent / p.unitsPerEm; this.descent = p.descent / p.unitsPerEm; this.lineGap = p.lineGap / p.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; n.post && function readPostScriptTable(e, i, a) { const s = (t.start || 0) + e.offset; t.pos = s; const r = s + e.length, n = t.getInt32(); t.skip(28); let o, g, c = !0; switch (n) { case 65536: o = Oi; break; case 131072: const e = t.getUint16(); if (e !== a) { c = !1; break } const s = []; for (g = 0; g < e; ++g) { const e = t.getUint16(); if (e >= 32768) { c = !1; break } s.push(e) } if (!c) break; const h = [], l = []; for (; t.pos < r;) { const e = t.getByte(); l.length = e; for (g = 0; g < e; ++g)l[g] = String.fromCharCode(t.getByte()); h.push(l.join("")) } o = []; for (g = 0; g < e; ++g) { const e = s[g]; e < 258 ? o.push(Oi[e]) : o.push(h[e - 258]) } break; case 196608: break; default: warn("Unknown/unsupported post table version " + n); c = !1; i.defaultEncoding && (o = i.defaultEncoding) }i.glyphNames = o; return c }(n.post, i, l); n.post = { tag: "post", data: createPostTable(i) }; const m = Object.create(null); function hasGlyph(e) { return !f[e] } if (i.composite) { const e = i.cidToGidMap || [], t = 0 === e.length; i.cMap.forEach((function (i, a) { "string" == typeof a && (a = convertCidString(i, a, !0)); if (a > 65535) throw new FormatError("Max size of CID is 65,535"); let s = -1; t ? s = a : void 0 !== e[a] && (s = e[a]); s >= 0 && s < l && hasGlyph(s) && (m[i] = s) })) } else { const e = function readCmapTable(e, t, i, a) { if (!e) { warn("No cmap table available."); return { platformId: -1, encodingId: -1, mappings: [], hasShortCmap: !1 } } let s, r = (t.start || 0) + e.offset; t.pos = r; t.skip(2); const n = t.getUint16(); let o, g = !1; for (let e = 0; e < n; e++) { const s = t.getUint16(), r = t.getUint16(), c = t.getInt32() >>> 0; let h = !1; if (o?.platformId !== s || o?.encodingId !== r) { if (0 !== s || 0 !== r && 1 !== r && 3 !== r) if (1 === s && 0 === r) h = !0; else if (3 !== s || 1 !== r || !a && o) { if (i && 3 === s && 0 === r) { h = !0; let i = !0; if (e < n - 1) { const e = t.peekBytes(2); int16(e[0], e[1]) < s && (i = !1) } i && (g = !0) } } else { h = !0; i || (g = !0) } else h = !0; h && (o = { platformId: s, encodingId: r, offset: c }); if (g) break } } o && (t.pos = r + o.offset); if (!o || -1 === t.peekByte()) { warn("Could not find a preferred cmap table."); return { platformId: -1, encodingId: -1, mappings: [], hasShortCmap: !1 } } const c = t.getUint16(); let h = !1; const l = []; let C, Q; if (0 === c) { t.skip(4); for (C = 0; C < 256; C++) { const e = t.getByte(); e && l.push({ charCode: C, glyphId: e }) } h = !0 } else if (2 === c) { t.skip(4); const e = []; let i = 0; for (let a = 0; a < 256; a++) { const a = t.getUint16() >> 3; e.push(a); i = Math.max(a, i) } const a = []; for (let e = 0; e <= i; e++)a.push({ firstCode: t.getUint16(), entryCount: t.getUint16(), idDelta: signedInt16(t.getByte(), t.getByte()), idRangePos: t.pos + t.getUint16() }); for (let i = 0; i < 256; i++)if (0 === e[i]) { t.pos = a[0].idRangePos + 2 * i; Q = t.getUint16(); l.push({ charCode: i, glyphId: Q }) } else { const s = a[e[i]]; for (C = 0; C < s.entryCount; C++) { const e = (i << 8) + C + s.firstCode; t.pos = s.idRangePos + 2 * C; Q = t.getUint16(); 0 !== Q && (Q = (Q + s.idDelta) % 65536); l.push({ charCode: e, glyphId: Q }) } } } else if (4 === c) { t.skip(4); const e = t.getUint16() >> 1; t.skip(6); const i = []; let a; for (a = 0; a < e; a++)i.push({ end: t.getUint16() }); t.skip(2); for (a = 0; a < e; a++)i[a].start = t.getUint16(); for (a = 0; a < e; a++)i[a].delta = t.getUint16(); let n, o = 0; for (a = 0; a < e; a++) { s = i[a]; const r = t.getUint16(); if (r) { n = (r >> 1) - (e - a); s.offsetIndex = n; o = Math.max(o, n + s.end - s.start + 1) } else s.offsetIndex = -1 } const g = []; for (C = 0; C < o; C++)g.push(t.getUint16()); for (a = 0; a < e; a++) { s = i[a]; r = s.start; const e = s.end, t = s.delta; n = s.offsetIndex; for (C = r; C <= e; C++)if (65535 !== C) { Q = n < 0 ? C : g[n + C - r]; Q = Q + t & 65535; l.push({ charCode: C, glyphId: Q }) } } } else if (6 === c) { t.skip(4); const e = t.getUint16(), i = t.getUint16(); for (C = 0; C < i; C++) { Q = t.getUint16(); const i = e + C; l.push({ charCode: i, glyphId: Q }) } } else { if (12 !== c) { warn("cmap table has unsupported format: " + c); return { platformId: -1, encodingId: -1, mappings: [], hasShortCmap: !1 } } { t.skip(10); const e = t.getInt32() >>> 0; for (C = 0; C < e; C++) { const e = t.getInt32() >>> 0, i = t.getInt32() >>> 0; let a = t.getInt32() >>> 0; for (let t = e; t <= i; t++)l.push({ charCode: t, glyphId: a++ }) } } } l.sort((function (e, t) { return e.charCode - t.charCode })); for (let e = 1; e < l.length; e++)if (l[e - 1].charCode === l[e].charCode) { l.splice(e, 1); e-- } return { platformId: o.platformId, encodingId: o.encodingId, mappings: l, hasShortCmap: h } }(n.cmap, t, this.isSymbolicFont, i.hasEncoding), a = e.platformId, s = e.encodingId, r = e.mappings; let o = [], g = !1; !i.hasEncoding || "MacRomanEncoding" !== i.baseEncodingName && "WinAnsiEncoding" !== i.baseEncodingName || (o = getEncoding(i.baseEncodingName)); if (i.hasEncoding && !this.isSymbolicFont && (3 === a && 1 === s || 1 === a && 0 === s)) { const e = Ni(); for (let t = 0; t < 256; t++) { let n; n = void 0 !== this.differences[t] ? this.differences[t] : o.length && "" !== o[t] ? o[t] : fi[t]; if (!n) continue; const g = recoverGlyphName(n, e); let c; 3 === a && 1 === s ? c = e[g] : 1 === a && 0 === s && (c = di.indexOf(g)); if (void 0 === c) { if (!i.glyphNames && i.hasIncludedToUnicodeMap && !(this.toUnicode instanceof IdentityToUnicodeMap)) { const e = this.toUnicode.get(t); e && (c = e.codePointAt(0)) } if (void 0 === c) continue } for (const e of r) if (e.charCode === c) { m[t] = e.glyphId; break } } } else if (0 === a) { for (const e of r) m[e.charCode] = e.glyphId; g = !0 } else if (3 === a && 0 === s) for (const e of r) { let t = e.charCode; t >= 61440 && t <= 61695 && (t &= 255); m[t] = e.glyphId } else for (const e of r) m[e.charCode] = e.glyphId; if (i.glyphNames && (o.length || this.differences.length)) for (let e = 0; e < 256; ++e) { if (!g && void 0 !== m[e]) continue; const t = this.differences[e] || o[e]; if (!t) continue; const a = i.glyphNames.indexOf(t); a > 0 && hasGlyph(a) && (m[e] = a) } } 0 === m.length && (m[0] = 0); let y = C - 1; Q || (y = 0); if (!i.cssFontInfo) { const e = adjustMapping(m, hasGlyph, y, this.toUnicode); this.toFontChar = e.toFontChar; n.cmap = { tag: "cmap", data: createCmapTable(e.charCodeToGlyphId, e.toUnicodeExtraMap, C) }; n["OS/2"] && function validateOS2Table(e, t) { t.pos = (t.start || 0) + e.offset; const i = t.getUint16(); t.skip(60); const a = t.getUint16(); if (i < 4 && 768 & a) 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 }(n["OS/2"], t) || (n["OS/2"] = { tag: "OS/2", data: createOS2Table(i, e.charCodeToGlyphId, p) }) } if (!c) try { g = new Stream(n["CFF "].data); o = new CFFParser(g, i, Yi).parse(); o.duplicateFirstGlyph(); const e = new CFFCompiler(o); n["CFF "].data = e.compile() } catch { warn("Failed to compile font " + i.loadedName) } if (n.name) { const [t, a] = readNameTable(n.name); n.name.data = createNameTable(e, t); this.psName = t[0][6] || null; i.composite || function adjustTrueTypeToUnicode(e, t, i) { if (e.isInternalFont) return; if (e.hasIncludedToUnicodeMap) return; if (e.hasEncoding) return; if (e.toUnicode instanceof IdentityToUnicodeMap) return; if (!t) return; if (0 === i.length) return; if (e.defaultEncoding === pi) return; for (const e of i) if (!isWinNameRecord(e)) return; const a = pi, s = [], r = Ni(); for (const e in a) { const t = a[e]; if ("" === t) continue; const i = r[t]; void 0 !== i && (s[e] = String.fromCharCode(i)) } s.length > 0 && e.toUnicode.amend(s) }(i, this.isSymbolicFont, a) } else n.name = { tag: "name", data: createNameTable(this.name) }; const w = new OpenTypeFileBuilder(r.version); for (const e in n) w.addTable(e, n[e].data); return w.toArray() } convert(e, t, i) { i.fixedPitch = !1; i.builtInEncoding && function adjustType1ToUnicode(e, t) { if (e.isInternalFont) return; if (e.hasIncludedToUnicodeMap) return; if (t === e.defaultEncoding) return; if (e.toUnicode instanceof IdentityToUnicodeMap) return; const i = [], a = Ni(); for (const s in t) { if (e.hasEncoding && (e.baseEncodingName || void 0 !== e.differences[s])) continue; const r = getUnicodeForGlyph(t[s], a); -1 !== r && (i[s] = String.fromCharCode(r)) } i.length > 0 && e.toUnicode.amend(i) }(i, i.builtInEncoding); let s = 1; t instanceof CFFFont && (s = t.numGlyphs - 1); const r = t.getGlyphMapping(i); let n = null, o = r, g = null; if (!i.cssFontInfo) { n = adjustMapping(r, t.hasGlyphId.bind(t), s, this.toUnicode); this.toFontChar = n.toFontChar; o = n.charCodeToGlyphId; g = n.toUnicodeExtraMap } const c = t.numGlyphs; function getCharCodes(e, t) { let i = null; for (const a in e) t === e[a] && (i ||= []).push(0 | a); return i } function createCharCode(e, t) { for (const i in e) if (t === e[i]) return 0 | i; n.charCodeToGlyphId[n.nextAvailableFontCharCode] = t; return n.nextAvailableFontCharCode++ } const h = t.seacs; if (n && h?.length) { const e = i.fontMatrix || a, s = t.getCharset(), o = Object.create(null); for (let t in h) { t |= 0; const i = h[t], a = fi[i[2]], g = fi[i[3]], c = s.indexOf(a), l = s.indexOf(g); if (c < 0 || l < 0) continue; const C = { x: i[0] * e[0] + i[1] * e[2] + e[4], y: i[0] * e[1] + i[1] * e[3] + e[5] }, Q = getCharCodes(r, t); if (Q) for (const e of Q) { const t = n.charCodeToGlyphId, i = createCharCode(t, c), a = createCharCode(t, l); o[e] = { baseFontCharCode: i, accentFontCharCode: a, accentOffset: C } } } i.seacMap = o } const l = 1 / (i.fontMatrix || a)[0], C = new OpenTypeFileBuilder("OTTO"); C.addTable("CFF ", t.data); C.addTable("OS/2", createOS2Table(i, o)); C.addTable("cmap", createCmapTable(o, g, c)); C.addTable("head", "\0\0\0\0\0\0\0\0\0\0_<õ\0\0" + safeString16(l) + "\0\0\0\0ž\v~'\0\0\0\0ž\v~'\0\0" + safeString16(i.descent) + "ÿ" + safeString16(i.ascent) + string16(i.italicAngle ? 2 : 0) + "\0\0\0\0\0\0\0"); C.addTable("hhea", "\0\0\0" + safeString16(i.ascent) + safeString16(i.descent) + "\0\0ÿÿ\0\0\0\0\0\0" + safeString16(i.capHeight) + safeString16(Math.tan(i.italicAngle) * i.xHeight) + "\0\0\0\0\0\0\0\0\0\0\0\0" + string16(c)); C.addTable("hmtx", function fontFieldsHmtx() { const e = t.charstrings, i = t.cff ? t.cff.widths : null; let a = "\0\0\0\0"; for (let t = 1, s = c; t < s; t++) { let s = 0; if (e) { const i = e[t - 1]; s = "width" in i ? i.width : 0 } else i && (s = Math.ceil(i[t] || 0)); a += string16(s) + string16(0) } return a }()); C.addTable("maxp", "\0\0P\0" + string16(c)); C.addTable("name", createNameTable(e)); C.addTable("post", createPostTable(i)); return C.toArray() } _charToGlyph(e, t = !1) { let i, a, s, r = this._glyphCache[e]; if (r?.isSpace === t) return r; let n = e; if (this.cMap?.contains(e)) { n = this.cMap.lookup(e); "string" == typeof n && (n = convertCidString(e, n)) } a = this.widths[n]; "number" != typeof a && (a = this.defaultWidth); const o = this.vmetrics?.[n]; let g = this.toUnicode.get(e) || e; "number" == typeof g && (g = String.fromCharCode(g)); let c = void 0 !== this.toFontChar[e]; i = this.toFontChar[e] || e; if (this.missingFile) { const t = this.differences[e] || this.defaultEncoding[e]; ".notdef" !== t && "" !== t || "Type1" !== this.type || (i = 32); i = function mapSpecialUnicodeValues(e) { return e >= 65520 && e <= 65535 ? 0 : e >= 62976 && e <= 63743 ? xi()[e] || e : 173 === e ? 45 : e }(i) } this.isType3Font && (s = i); let h = null; if (this.seacMap?.[e]) { c = !0; const t = this.seacMap[e]; i = t.baseFontCharCode; h = { fontChar: String.fromCodePoint(t.accentFontCharCode), offset: t.accentOffset } } let l = ""; "number" == typeof i && (i <= 1114111 ? l = String.fromCodePoint(i) : warn(`charToGlyph - invalid fontCharCode: ${i}`)); r = new fonts_Glyph(e, l, g, h, a, o, s, t, c); return this._glyphCache[e] = r } charsToGlyphs(e) { let t = this._charsCache[e]; if (t) return t; t = []; if (this.cMap) { const i = Object.create(null), a = e.length; let s = 0; for (; s < a;) { this.cMap.readCharCode(e, s, i); const { charcode: a, length: r } = i; s += r; const n = this._charToGlyph(a, 1 === r && 32 === e.charCodeAt(s - 1)); t.push(n) } } else for (let i = 0, a = e.length; i < a; ++i) { const a = e.charCodeAt(i), s = this._charToGlyph(a, 32 === a); t.push(s) } return this._charsCache[e] = t } getCharPositions(e) { const t = []; if (this.cMap) { const i = Object.create(null); let a = 0; for (; a < e.length;) { this.cMap.readCharCode(e, a, i); const s = i.length; t.push([a, a + s]); a += s } } else for (let i = 0, a = e.length; i < a; ++i)t.push([i, i + 1]); return t } get glyphCacheValues() { return Object.values(this._glyphCache) } encodeString(e) { const t = [], i = [], hasCurrentBufErrors = () => t.length % 2 == 1, a = this.toUnicode instanceof IdentityToUnicodeMap ? e => this.toUnicode.charCodeOf(e) : e => this.toUnicode.charCodeOf(String.fromCodePoint(e)); for (let s = 0, r = e.length; s < r; s++) { const r = e.codePointAt(s); r > 55295 && (r < 57344 || r > 65533) && s++; if (this.toUnicode) { const e = a(r); if (-1 !== e) { if (hasCurrentBufErrors()) { t.push(i.join("")); i.length = 0 } for (let t = (this.cMap ? this.cMap.getCharCodeLength(e) : 1) - 1; t >= 0; t--)i.push(String.fromCharCode(e >> 8 * t & 255)); continue } } if (!hasCurrentBufErrors()) { t.push(i.join("")); i.length = 0 } i.push(String.fromCodePoint(r)) } t.push(i.join("")); return t } } 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 } } } const Ea = 2, ua = 3, da = 4, fa = 5, pa = 6, ma = 7; class Pattern { constructor() { unreachable("Cannot initialize Pattern.") } static parseShading(e, t, i, a, s) { const r = e instanceof BaseStream ? e.dict : e, n = r.get("ShadingType"); try { switch (n) { case Ea: case ua: return new RadialAxialShading(r, t, i, a, s); case da: case fa: case pa: case ma: return new MeshShading(e, t, i, a, s); default: throw new FormatError("Unsupported ShadingType: " + n) } } catch (e) { if (e instanceof MissingDataException) throw e; warn(e); return new DummyShading } } } class BaseShading { static SMALL_NUMBER = 1e-6; constructor() { this.constructor === BaseShading && unreachable("Cannot initialize BaseShading.") } getIR() { unreachable("Abstract method `getIR` called.") } } class RadialAxialShading extends BaseShading { constructor(e, t, i, a, s) { super(); this.shadingType = e.get("ShadingType"); let r = 0; this.shadingType === Ea ? r = 4 : this.shadingType === ua && (r = 6); this.coordsArr = e.getArray("Coords"); if (!isNumberArray(this.coordsArr, r)) throw new FormatError("RadialAxialShading: Invalid /Coords array."); const n = ColorSpace.parse({ cs: e.getRaw("CS") || e.getRaw("ColorSpace"), xref: t, resources: i, pdfFunctionFactory: a, localColorSpaceCache: s }); this.bbox = lookupNormalRect(e.getArray("BBox"), null); let o = 0, g = 1; const c = e.getArray("Domain"); isNumberArray(c, 2) && ([o, g] = c); let h = !1, l = !1; const C = e.getArray("Extend"); (function isBooleanArray(e, t) { return Array.isArray(e) && (null === t || e.length === t) && e.every((e => "boolean" == typeof e)) })(C, 2) && ([h, l] = C); if (!(this.shadingType !== ua || h && l)) { const [e, t, i, a, s, r] = this.coordsArr, n = Math.hypot(e - a, t - s); i <= r + n && r <= i + n && warn("Unsupported radial gradient.") } this.extendStart = h; this.extendEnd = l; const Q = e.getRaw("Function"), E = a.createFromArray(Q), u = (g - o) / 840, d = this.colorStops = []; if (o >= g || u <= 0) { info("Bad shading domain."); return } const f = new Float32Array(n.numComps), p = new Float32Array(1); let m, y = 0; p[0] = o; E(p, 0, f, 0); let w = n.getRgb(f, 0); const b = Util.makeHexColor(w[0], w[1], w[2]); d.push([0, b]); let D = 1; p[0] = o + u; E(p, 0, f, 0); let F = n.getRgb(f, 0), S = F[0] - w[0] + 1, k = F[1] - w[1] + 1, R = F[2] - w[2] + 1, N = F[0] - w[0] - 1, G = F[1] - w[1] - 1, x = F[2] - w[2] - 1; for (let e = 2; e < 840; e++) { p[0] = o + e * u; E(p, 0, f, 0); m = n.getRgb(f, 0); const t = e - y; S = Math.min(S, (m[0] - w[0] + 1) / t); k = Math.min(k, (m[1] - w[1] + 1) / t); R = Math.min(R, (m[2] - w[2] + 1) / t); N = Math.max(N, (m[0] - w[0] - 1) / t); G = Math.max(G, (m[1] - w[1] - 1) / t); x = Math.max(x, (m[2] - w[2] - 1) / t); if (!(N <= S && G <= k && x <= R)) { const e = Util.makeHexColor(F[0], F[1], F[2]); d.push([D / 840, e]); S = m[0] - F[0] + 1; k = m[1] - F[1] + 1; R = m[2] - F[2] + 1; N = m[0] - F[0] - 1; G = m[1] - F[1] - 1; x = m[2] - F[2] - 1; y = D; w = F } D = e; F = m } const M = Util.makeHexColor(F[0], F[1], F[2]); d.push([1, M]); let U = "transparent"; if (e.has("Background")) { m = n.getRgb(e.get("Background"), 0); U = Util.makeHexColor(m[0], m[1], m[2]) } if (!h) { d.unshift([0, U]); d[1][0] += BaseShading.SMALL_NUMBER } if (!l) { d.at(-1)[0] -= BaseShading.SMALL_NUMBER; d.push([1, U]) } this.colorStops = d } getIR() { const { coordsArr: e, shadingType: t } = this; let i, a, s, r, n; if (t === Ea) { a = [e[0], e[1]]; s = [e[2], e[3]]; r = null; n = null; i = "axial" } else if (t === ua) { a = [e[0], e[1]]; s = [e[3], e[4]]; r = e[2]; n = e[5]; i = "radial" } else unreachable(`getPattern type unknown: ${t}`); return ["RadialAxial", i, this.bbox, this.colorStops, a, s, r, n] } } class MeshStreamReader { constructor(e, t) { this.stream = e; this.context = t; this.buffer = 0; this.bufferLength = 0; const i = t.numComps; this.tmpCompsBuf = new Float32Array(i); const a = t.colorSpace.numComps; this.tmpCsCompsBuf = t.colorFn ? new Float32Array(a) : this.tmpCompsBuf } get hasData() { if (this.stream.end) return this.stream.pos < this.stream.end; if (this.bufferLength > 0) 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, i = this.bufferLength; if (32 === e) { if (0 === i) 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 << i) - 1; return (t << 8 - i | (255 & e) >> i) >>> 0 } if (8 === e && 0 === i) return this.stream.getByte(); for (; i < e;) { t = t << 8 | this.stream.getByte(); i += 8 } i -= e; this.bufferLength = i; this.buffer = t & (1 << i) - 1; return t >> i } align() { this.buffer = 0; this.bufferLength = 0 } readFlag() { return this.readBits(this.context.bitsPerFlag) } readCoordinate() { const e = this.context.bitsPerCoordinate, t = this.readBits(e), i = this.readBits(e), a = this.context.decode, s = e < 32 ? 1 / ((1 << e) - 1) : 2.3283064365386963e-10; return [t * s * (a[1] - a[0]) + a[0], i * s * (a[3] - a[2]) + a[2]] } readComponents() { const e = this.context.numComps, t = this.context.bitsPerComponent, i = t < 32 ? 1 / ((1 << t) - 1) : 2.3283064365386963e-10, a = this.context.decode, s = this.tmpCompsBuf; for (let r = 0, n = 4; r < e; r++, n += 2) { const e = this.readBits(t); s[r] = e * i * (a[n + 1] - a[n]) + a[n] } const r = this.tmpCsCompsBuf; this.context.colorFn && this.context.colorFn(s, 0, r, 0); return this.context.colorSpace.getRgb(r, 0) } } let ya = Object.create(null); function getB(e) { return ya[e] ||= function buildB(e) { const t = []; for (let i = 0; i <= e; i++) { const a = i / e, s = 1 - a; t.push(new Float32Array([s ** 3, 3 * a * s ** 2, 3 * a ** 2 * s, a ** 3])) } return t }(e) } class MeshShading extends BaseShading { static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3; static MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20; static TRIANGLE_DENSITY = 20; constructor(e, t, i, a, s) { super(); if (!(e instanceof BaseStream)) throw new FormatError("Mesh data is not a stream"); const r = e.dict; this.shadingType = r.get("ShadingType"); this.bbox = lookupNormalRect(r.getArray("BBox"), null); const n = ColorSpace.parse({ cs: r.getRaw("CS") || r.getRaw("ColorSpace"), xref: t, resources: i, pdfFunctionFactory: a, localColorSpaceCache: s }); this.background = r.has("Background") ? n.getRgb(r.get("Background"), 0) : null; const o = r.getRaw("Function"), g = o ? a.createFromArray(o) : null; this.coords = []; this.colors = []; this.figures = []; const c = { bitsPerCoordinate: r.get("BitsPerCoordinate"), bitsPerComponent: r.get("BitsPerComponent"), bitsPerFlag: r.get("BitsPerFlag"), decode: r.getArray("Decode"), colorFn: g, colorSpace: n, numComps: g ? 1 : n.numComps }, h = new MeshStreamReader(e, c); let l = !1; switch (this.shadingType) { case da: this._decodeType4Shading(h); break; case fa: const e = 0 | r.get("VerticesPerRow"); if (e < 2) throw new FormatError("Invalid VerticesPerRow"); this._decodeType5Shading(h, e); break; case pa: this._decodeType6Shading(h); l = !0; break; case ma: this._decodeType7Shading(h); l = !0; break; default: unreachable("Unsupported mesh type.") }if (l) { this._updateBounds(); for (let e = 0, t = this.figures.length; e < t; e++)this._buildFigureFromPatch(e) } this._updateBounds(); this._packData() } _decodeType4Shading(e) { const t = this.coords, i = this.colors, a = [], s = []; let r = 0; for (; e.hasData;) { const n = e.readFlag(), o = e.readCoordinate(), g = e.readComponents(); if (0 === r) { if (!(0 <= n && n <= 2)) throw new FormatError("Unknown type4 flag"); switch (n) { case 0: r = 3; break; case 1: s.push(s.at(-2), s.at(-1)); r = 1; break; case 2: s.push(s.at(-3), s.at(-1)); r = 1 }a.push(n) } s.push(t.length); t.push(o); i.push(g); r--; e.align() } this.figures.push({ type: "triangles", coords: new Int32Array(s), colors: new Int32Array(s) }) } _decodeType5Shading(e, t) { const i = this.coords, a = this.colors, s = []; for (; e.hasData;) { const t = e.readCoordinate(), r = e.readComponents(); s.push(i.length); i.push(t); a.push(r) } this.figures.push({ type: "lattice", coords: new Int32Array(s), colors: new Int32Array(s), verticesPerRow: t }) } _decodeType6Shading(e) { const t = this.coords, i = this.colors, a = new Int32Array(16), s = new Int32Array(4); for (; e.hasData;) { const r = e.readFlag(); if (!(0 <= r && r <= 3)) throw new FormatError("Unknown type6 flag"); const n = t.length; for (let i = 0, a = 0 !== r ? 8 : 12; i < a; i++)t.push(e.readCoordinate()); const o = i.length; for (let t = 0, a = 0 !== r ? 2 : 4; t < a; t++)i.push(e.readComponents()); let g, c, h, l; switch (r) { case 0: a[12] = n + 3; a[13] = n + 4; a[14] = n + 5; a[15] = n + 6; a[8] = n + 2; a[11] = n + 7; a[4] = n + 1; a[7] = n + 8; a[0] = n; a[1] = n + 11; a[2] = n + 10; a[3] = n + 9; s[2] = o + 1; s[3] = o + 2; s[0] = o; s[1] = o + 3; break; case 1: g = a[12]; c = a[13]; h = a[14]; l = a[15]; a[12] = l; a[13] = n + 0; a[14] = n + 1; a[15] = n + 2; a[8] = h; a[11] = n + 3; a[4] = c; a[7] = n + 4; a[0] = g; a[1] = n + 7; a[2] = n + 6; a[3] = n + 5; g = s[2]; c = s[3]; s[2] = c; s[3] = o; s[0] = g; s[1] = o + 1; break; case 2: g = a[15]; c = a[11]; a[12] = a[3]; a[13] = n + 0; a[14] = n + 1; a[15] = n + 2; a[8] = a[7]; a[11] = n + 3; a[4] = c; a[7] = n + 4; a[0] = g; a[1] = n + 7; a[2] = n + 6; a[3] = n + 5; g = s[3]; s[2] = s[1]; s[3] = o; s[0] = g; s[1] = o + 1; break; case 3: a[12] = a[0]; a[13] = n + 0; a[14] = n + 1; a[15] = n + 2; a[8] = a[1]; a[11] = n + 3; a[4] = a[2]; a[7] = n + 4; a[0] = a[3]; a[1] = n + 7; a[2] = n + 6; a[3] = n + 5; s[2] = s[0]; s[3] = o; s[0] = s[1]; s[1] = o + 1 }a[5] = t.length; t.push([(-4 * t[a[0]][0] - t[a[15]][0] + 6 * (t[a[4]][0] + t[a[1]][0]) - 2 * (t[a[12]][0] + t[a[3]][0]) + 3 * (t[a[13]][0] + t[a[7]][0])) / 9, (-4 * t[a[0]][1] - t[a[15]][1] + 6 * (t[a[4]][1] + t[a[1]][1]) - 2 * (t[a[12]][1] + t[a[3]][1]) + 3 * (t[a[13]][1] + t[a[7]][1])) / 9]); a[6] = t.length; t.push([(-4 * t[a[3]][0] - t[a[12]][0] + 6 * (t[a[2]][0] + t[a[7]][0]) - 2 * (t[a[0]][0] + t[a[15]][0]) + 3 * (t[a[4]][0] + t[a[14]][0])) / 9, (-4 * t[a[3]][1] - t[a[12]][1] + 6 * (t[a[2]][1] + t[a[7]][1]) - 2 * (t[a[0]][1] + t[a[15]][1]) + 3 * (t[a[4]][1] + t[a[14]][1])) / 9]); a[9] = t.length; t.push([(-4 * t[a[12]][0] - t[a[3]][0] + 6 * (t[a[8]][0] + t[a[13]][0]) - 2 * (t[a[0]][0] + t[a[15]][0]) + 3 * (t[a[11]][0] + t[a[1]][0])) / 9, (-4 * t[a[12]][1] - t[a[3]][1] + 6 * (t[a[8]][1] + t[a[13]][1]) - 2 * (t[a[0]][1] + t[a[15]][1]) + 3 * (t[a[11]][1] + t[a[1]][1])) / 9]); a[10] = t.length; t.push([(-4 * t[a[15]][0] - t[a[0]][0] + 6 * (t[a[11]][0] + t[a[14]][0]) - 2 * (t[a[12]][0] + t[a[3]][0]) + 3 * (t[a[2]][0] + t[a[8]][0])) / 9, (-4 * t[a[15]][1] - t[a[0]][1] + 6 * (t[a[11]][1] + t[a[14]][1]) - 2 * (t[a[12]][1] + t[a[3]][1]) + 3 * (t[a[2]][1] + t[a[8]][1])) / 9]); this.figures.push({ type: "patch", coords: new Int32Array(a), colors: new Int32Array(s) }) } } _decodeType7Shading(e) { const t = this.coords, i = this.colors, a = new Int32Array(16), s = new Int32Array(4); for (; e.hasData;) { const r = e.readFlag(); if (!(0 <= r && r <= 3)) throw new FormatError("Unknown type7 flag"); const n = t.length; for (let i = 0, a = 0 !== r ? 12 : 16; i < a; i++)t.push(e.readCoordinate()); const o = i.length; for (let t = 0, a = 0 !== r ? 2 : 4; t < a; t++)i.push(e.readComponents()); let g, c, h, l; switch (r) { case 0: a[12] = n + 3; a[13] = n + 4; a[14] = n + 5; a[15] = n + 6; a[8] = n + 2; a[9] = n + 13; a[10] = n + 14; a[11] = n + 7; a[4] = n + 1; a[5] = n + 12; a[6] = n + 15; a[7] = n + 8; a[0] = n; a[1] = n + 11; a[2] = n + 10; a[3] = n + 9; s[2] = o + 1; s[3] = o + 2; s[0] = o; s[1] = o + 3; break; case 1: g = a[12]; c = a[13]; h = a[14]; l = a[15]; a[12] = l; a[13] = n + 0; a[14] = n + 1; a[15] = n + 2; a[8] = h; a[9] = n + 9; a[10] = n + 10; a[11] = n + 3; a[4] = c; a[5] = n + 8; a[6] = n + 11; a[7] = n + 4; a[0] = g; a[1] = n + 7; a[2] = n + 6; a[3] = n + 5; g = s[2]; c = s[3]; s[2] = c; s[3] = o; s[0] = g; s[1] = o + 1; break; case 2: g = a[15]; c = a[11]; a[12] = a[3]; a[13] = n + 0; a[14] = n + 1; a[15] = n + 2; a[8] = a[7]; a[9] = n + 9; a[10] = n + 10; a[11] = n + 3; a[4] = c; a[5] = n + 8; a[6] = n + 11; a[7] = n + 4; a[0] = g; a[1] = n + 7; a[2] = n + 6; a[3] = n + 5; g = s[3]; s[2] = s[1]; s[3] = o; s[0] = g; s[1] = o + 1; break; case 3: a[12] = a[0]; a[13] = n + 0; a[14] = n + 1; a[15] = n + 2; a[8] = a[1]; a[9] = n + 9; a[10] = n + 10; a[11] = n + 3; a[4] = a[2]; a[5] = n + 8; a[6] = n + 11; a[7] = n + 4; a[0] = a[3]; a[1] = n + 7; a[2] = n + 6; a[3] = n + 5; s[2] = s[0]; s[3] = o; s[0] = s[1]; s[1] = o + 1 }this.figures.push({ type: "patch", coords: new Int32Array(a), colors: new Int32Array(s) }) } } _buildFigureFromPatch(e) { const t = this.figures[e]; assert("patch" === t.type, "Unexpected patch mesh figure"); const i = this.coords, a = this.colors, s = t.coords, r = t.colors, n = Math.min(i[s[0]][0], i[s[3]][0], i[s[12]][0], i[s[15]][0]), o = Math.min(i[s[0]][1], i[s[3]][1], i[s[12]][1], i[s[15]][1]), g = Math.max(i[s[0]][0], i[s[3]][0], i[s[12]][0], i[s[15]][0]), c = Math.max(i[s[0]][1], i[s[3]][1], i[s[12]][1], i[s[15]][1]); let h = Math.ceil((g - n) * MeshShading.TRIANGLE_DENSITY / (this.bounds[2] - this.bounds[0])); h = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, h)); let l = Math.ceil((c - o) * MeshShading.TRIANGLE_DENSITY / (this.bounds[3] - this.bounds[1])); l = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, l)); const C = h + 1, Q = new Int32Array((l + 1) * C), E = new Int32Array((l + 1) * C); let u = 0; const d = new Uint8Array(3), f = new Uint8Array(3), p = a[r[0]], m = a[r[1]], y = a[r[2]], w = a[r[3]], b = getB(l), D = getB(h); for (let e = 0; e <= l; e++) { d[0] = (p[0] * (l - e) + y[0] * e) / l | 0; d[1] = (p[1] * (l - e) + y[1] * e) / l | 0; d[2] = (p[2] * (l - e) + y[2] * e) / l | 0; f[0] = (m[0] * (l - e) + w[0] * e) / l | 0; f[1] = (m[1] * (l - e) + w[1] * e) / l | 0; f[2] = (m[2] * (l - e) + w[2] * e) / l | 0; for (let t = 0; t <= h; t++, u++) { if (!(0 !== e && e !== l || 0 !== t && t !== h)) continue; let r = 0, n = 0, o = 0; for (let a = 0; a <= 3; a++)for (let g = 0; g <= 3; g++, o++) { const c = b[e][a] * D[t][g]; r += i[s[o]][0] * c; n += i[s[o]][1] * c } Q[u] = i.length; i.push([r, n]); E[u] = a.length; const g = new Uint8Array(3); g[0] = (d[0] * (h - t) + f[0] * t) / h | 0; g[1] = (d[1] * (h - t) + f[1] * t) / h | 0; g[2] = (d[2] * (h - t) + f[2] * t) / h | 0; a.push(g) } } Q[0] = s[0]; E[0] = r[0]; Q[h] = s[3]; E[h] = r[1]; Q[C * l] = s[12]; E[C * l] = r[2]; Q[C * l + h] = s[15]; E[C * l + h] = r[3]; this.figures[e] = { type: "lattice", coords: Q, colors: E, verticesPerRow: C } } _updateBounds() { let e = this.coords[0][0], t = this.coords[0][1], i = e, a = t; for (let s = 1, r = this.coords.length; s < r; s++) { const r = this.coords[s][0], n = this.coords[s][1]; e = e > r ? r : e; t = t > n ? n : t; i = i < r ? r : i; a = a < n ? n : a } this.bounds = [e, t, i, a] } _packData() { let e, t, i, a; const s = this.coords, r = new Float32Array(2 * s.length); for (e = 0, i = 0, t = s.length; e < t; e++) { const t = s[e]; r[i++] = t[0]; r[i++] = t[1] } this.coords = r; const n = this.colors, o = new Uint8Array(3 * n.length); for (e = 0, i = 0, t = n.length; e < t; e++) { const t = n[e]; o[i++] = t[0]; o[i++] = t[1]; o[i++] = t[2] } this.colors = o; const g = this.figures; for (e = 0, t = g.length; e < t; e++) { const t = g[e], s = t.coords, r = t.colors; for (i = 0, a = s.length; i < a; i++) { s[i] *= 2; r[i] *= 3 } } } getIR() { const { bounds: e } = this; if (e[2] - e[0] == 0 || e[3] - e[1] == 0) throw new FormatError(`Invalid MeshShading bounds: [${e}].`); return ["Mesh", this.shadingType, this.coords, this.colors, this.figures, e, this.bbox, this.background] } } class DummyShading extends BaseShading { getIR() { return ["Dummy"] } } function getTilingPatternIR(e, t, a) { const s = lookupMatrix(t.getArray("Matrix"), i), r = lookupNormalRect(t.getArray("BBox"), null); if (!r || r[2] - r[0] == 0 || r[3] - r[1] == 0) throw new FormatError("Invalid getTilingPatternIR /BBox array."); const n = t.get("XStep"); if ("number" != typeof n) throw new FormatError("Invalid getTilingPatternIR /XStep value."); const o = t.get("YStep"); if ("number" != typeof o) throw new FormatError("Invalid getTilingPatternIR /YStep value."); const g = t.get("PaintType"); if (!Number.isInteger(g)) throw new FormatError("Invalid getTilingPatternIR /PaintType value."); const c = t.get("TilingType"); if (!Number.isInteger(c)) throw new FormatError("Invalid getTilingPatternIR /TilingType value."); return ["TilingPattern", a, e, s, r, n, o, g, c] } const wa = [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], ba = { lineHeight: 1.2207, lineGap: .2207 }, Da = [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], Fa = { lineHeight: 1.2207, lineGap: .2207 }, Sa = [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], ka = { lineHeight: 1.2207, lineGap: .2207 }, Ra = [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], Na = { lineHeight: 1.2207, lineGap: .2207 }, Ga = [.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], xa = { lineHeight: 1.2, lineGap: .2 }, Ma = [.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], Ua = { lineHeight: 1.35, lineGap: .2 }, La = [.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], Ja = { lineHeight: 1.35, lineGap: .2 }, Ha = [.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], Ya = { lineHeight: 1.2, lineGap: .2 }, va = [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], Ka = [-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], Ta = [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], qa = [-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], Oa = [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], Pa = [-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], Wa = [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], Xa = [-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], ja = [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], Za = { lineHeight: 1.2, lineGap: .2 }, Va = [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], za = { lineHeight: 1.2, lineGap: .2 }, _a = [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], $a = { lineHeight: 1.2, lineGap: .2 }, As = [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], es = { lineHeight: 1.2, lineGap: .2 }, ts = [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], is = { lineHeight: 1.33008, lineGap: 0 }, as = [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], ss = { lineHeight: 1.33008, lineGap: 0 }, rs = [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], ns = { lineHeight: 1.33008, lineGap: 0 }, os = [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], gs = { lineHeight: 1.33008, lineGap: 0 }, Is = getLookupTableFactory((function (e) { e["MyriadPro-Regular"] = e["PdfJS-Fallback-Regular"] = { name: "LiberationSans-Regular", factors: As, baseWidths: Wa, baseMapping: Xa, metrics: es }; e["MyriadPro-Bold"] = e["PdfJS-Fallback-Bold"] = { name: "LiberationSans-Bold", factors: ja, baseWidths: va, baseMapping: Ka, metrics: Za }; e["MyriadPro-It"] = e["MyriadPro-Italic"] = e["PdfJS-Fallback-Italic"] = { name: "LiberationSans-Italic", factors: _a, baseWidths: Oa, baseMapping: Pa, metrics: $a }; e["MyriadPro-BoldIt"] = e["MyriadPro-BoldItalic"] = e["PdfJS-Fallback-BoldItalic"] = { name: "LiberationSans-BoldItalic", factors: Va, baseWidths: Ta, baseMapping: qa, metrics: za }; e.ArialMT = e.Arial = e["Arial-Regular"] = { name: "LiberationSans-Regular", baseWidths: Wa, baseMapping: Xa }; e["Arial-BoldMT"] = e["Arial-Bold"] = { name: "LiberationSans-Bold", baseWidths: va, baseMapping: Ka }; e["Arial-ItalicMT"] = e["Arial-Italic"] = { name: "LiberationSans-Italic", baseWidths: Oa, baseMapping: Pa }; e["Arial-BoldItalicMT"] = e["Arial-BoldItalic"] = { name: "LiberationSans-BoldItalic", baseWidths: Ta, baseMapping: qa }; e["Calibri-Regular"] = { name: "LiberationSans-Regular", factors: Ra, baseWidths: Wa, baseMapping: Xa, metrics: Na }; e["Calibri-Bold"] = { name: "LiberationSans-Bold", factors: wa, baseWidths: va, baseMapping: Ka, metrics: ba }; e["Calibri-Italic"] = { name: "LiberationSans-Italic", factors: Sa, baseWidths: Oa, baseMapping: Pa, metrics: ka }; e["Calibri-BoldItalic"] = { name: "LiberationSans-BoldItalic", factors: Da, baseWidths: Ta, baseMapping: qa, metrics: Fa }; e["Segoeui-Regular"] = { name: "LiberationSans-Regular", factors: os, baseWidths: Wa, baseMapping: Xa, metrics: gs }; e["Segoeui-Bold"] = { name: "LiberationSans-Bold", factors: ts, baseWidths: va, baseMapping: Ka, metrics: is }; e["Segoeui-Italic"] = { name: "LiberationSans-Italic", factors: rs, baseWidths: Oa, baseMapping: Pa, metrics: ns }; e["Segoeui-BoldItalic"] = { name: "LiberationSans-BoldItalic", factors: as, baseWidths: Ta, baseMapping: qa, metrics: ss }; e["Helvetica-Regular"] = e.Helvetica = { name: "LiberationSans-Regular", factors: Ha, baseWidths: Wa, baseMapping: Xa, metrics: Ya }; e["Helvetica-Bold"] = { name: "LiberationSans-Bold", factors: Ga, baseWidths: va, baseMapping: Ka, metrics: xa }; e["Helvetica-Italic"] = { name: "LiberationSans-Italic", factors: La, baseWidths: Oa, baseMapping: Pa, metrics: Ja }; e["Helvetica-BoldItalic"] = { name: "LiberationSans-BoldItalic", factors: Ma, baseWidths: Ta, baseMapping: qa, metrics: Ua } })); function getXfaFontName(e) { const t = normalizeFontName(e); return Is()[t] } function getXfaFontDict(e) { const t = function getXfaFontWidths(e) { const t = getXfaFontName(e); if (!t) return null; const { baseWidths: i, baseMapping: a, factors: s } = t, r = s ? i.map(((e, t) => e * s[t])) : i; let n, o = -2; const g = []; for (const [e, t] of a.map(((e, t) => [e, t])).sort((([e], [t]) => e - t))) if (-1 !== e) if (e === o + 1) { n.push(r[t]); o += 1 } else { o = e; n = [r[t]]; g.push(e, n) } return g }(e), i = new Dict(null); i.set("BaseFont", Name.get(e)); i.set("Type", Name.get("Font")); i.set("Subtype", Name.get("CIDFontType2")); i.set("Encoding", Name.get("Identity-H")); i.set("CIDToGIDMap", Name.get("Identity")); i.set("W", t); i.set("FirstChar", t[0]); i.set("LastChar", t.at(-2) + t.at(-1).length - 1); const a = new Dict(null); i.set("FontDescriptor", a); const s = new Dict(null); s.set("Ordering", "Identity"); s.set("Registry", "Adobe"); s.set("Supplement", 0); i.set("CIDSystemInfo", s); return i } 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 FormatError(`Unexpected symbol: found ${this.token.type} expected ${e}.`) } parse() { this.nextToken(); this.expect(cs.LBRACE); this.parseBlock(); this.expect(cs.RBRACE); return this.operators } parseBlock() { for (; ;)if (this.accept(cs.NUMBER)) this.operators.push(this.prev.value); else if (this.accept(cs.OPERATOR)) this.operators.push(this.prev.value); else { if (!this.accept(cs.LBRACE)) return; this.parseCondition() } } parseCondition() { const e = this.operators.length; this.operators.push(null, null); this.parseBlock(); this.expect(cs.RBRACE); if (this.accept(cs.IF)) { this.operators[e] = this.operators.length; this.operators[e + 1] = "jz" } else { if (!this.accept(cs.LBRACE)) throw new FormatError("PS Function: error parsing conditional."); { const t = this.operators.length; this.operators.push(null, null); const i = this.operators.length; this.parseBlock(); this.expect(cs.RBRACE); this.expect(cs.IFELSE); this.operators[t] = this.operators.length; this.operators[t + 1] = "j"; this.operators[e] = i; this.operators[e + 1] = "jz" } } } } const cs = { LBRACE: 0, RBRACE: 1, NUMBER: 2, OPERATOR: 3, IF: 4, IFELSE: 5 }; class PostScriptToken { static get opCache() { return shadow(this, "opCache", Object.create(null)) } constructor(e, t) { this.type = e; this.value = t } static getOperator(e) { return PostScriptToken.opCache[e] ||= new PostScriptToken(cs.OPERATOR, e) } static get LBRACE() { return shadow(this, "LBRACE", new PostScriptToken(cs.LBRACE, "{")) } static get RBRACE() { return shadow(this, "RBRACE", new PostScriptToken(cs.RBRACE, "}")) } static get IF() { return shadow(this, "IF", new PostScriptToken(cs.IF, "IF")) } static get IFELSE() { return shadow(this, "IFELSE", new PostScriptToken(cs.IFELSE, "IFELSE")) } } 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 pt; if (e) 10 !== t && 13 !== t || (e = !1); else if (37 === t) e = !0; else if (!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(cs.NUMBER, this.getNumber()); case 123: this.nextChar(); return PostScriptToken.LBRACE; case 125: this.nextChar(); return PostScriptToken.RBRACE }const i = this.strBuf; i.length = 0; i[0] = String.fromCharCode(t); for (; (t = this.nextChar()) >= 0 && (t >= 65 && t <= 90 || t >= 97 && t <= 122);)i.push(String.fromCharCode(t)); const a = i.join(""); switch (a.toLowerCase()) { case "if": return PostScriptToken.IF; case "ifelse": return PostScriptToken.IFELSE; default: return PostScriptToken.getOperator(a) } } 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 i = parseFloat(t.join("")); if (isNaN(i)) throw new FormatError(`Invalid floating point number: ${i}`); return i } } class BaseLocalCache { constructor(e) { this.constructor === BaseLocalCache && unreachable("Cannot initialize BaseLocalCache."); this._onlyRefs = !0 === e?.onlyRefs; if (!this._onlyRefs) { this._nameRefMap = new Map; this._imageMap = new Map } this._imageCache = new RefSetCache } getByName(e) { this._onlyRefs && 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, i) { unreachable("Abstract method `set` called.") } } class LocalImageCache extends BaseLocalCache { set(e, t = null, i) { 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, i) } else this._imageMap.has(e) || this._imageMap.set(e, i) } } class LocalColorSpaceCache extends BaseLocalCache { set(e = null, t = null, i) { 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, i) } else this._imageMap.has(e) || this._imageMap.set(e, i) } } class LocalFunctionCache extends BaseLocalCache { constructor(e) { super({ onlyRefs: !0 }) } set(e = null, t, i) { if (!t) throw new Error('LocalFunctionCache.set - expected "ref" argument.'); this._imageCache.has(t) || this._imageCache.put(t, i) } } class LocalGStateCache extends BaseLocalCache { set(e, t = null, i) { 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, i) } else this._imageMap.has(e) || this._imageMap.set(e, i) } } class LocalTilingPatternCache extends BaseLocalCache { constructor(e) { super({ onlyRefs: !0 }) } set(e = null, t, i) { if (!t) throw new Error('LocalTilingPatternCache.set - expected "ref" argument.'); this._imageCache.has(t) || this._imageCache.put(t, i) } } class RegionalImageCache extends BaseLocalCache { constructor(e) { super({ onlyRefs: !0 }) } set(e = null, t, i) { if (!t) throw new Error('RegionalImageCache.set - expected "ref" argument.'); this._imageCache.has(t) || this._imageCache.put(t, i) } } class GlobalImageCache { static NUM_PAGES_THRESHOLD = 2; static MIN_IMAGES_TO_CACHE = 10; static MAX_BYTE_SIZE = 5e7; #b = new RefSet; constructor() { this._refCache = new RefSetCache; this._imageCache = new RefSetCache } get #D() { let e = 0; for (const t of this._imageCache) e += t.byteSize; return e } get #F() { return !(this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) && !(this.#D < GlobalImageCache.MAX_BYTE_SIZE) } shouldCache(e, t) { let i = this._refCache.get(e); if (!i) { i = new Set; this._refCache.put(e, i) } i.add(t); return !(i.size < GlobalImageCache.NUM_PAGES_THRESHOLD) && !(!this._imageCache.has(e) && this.#F) } addDecodeFailed(e) { this.#b.put(e) } hasDecodeFailed(e) { return this.#b.has(e) } addByteSize(e, t) { const i = this._imageCache.get(e); i && (i.byteSize || (i.byteSize = t)) } getData(e, t) { const i = this._refCache.get(e); if (!i) return null; if (i.size < GlobalImageCache.NUM_PAGES_THRESHOLD) return null; const a = this._imageCache.get(e); if (!a) return null; i.add(t); return a } setData(e, t) { if (!this._refCache.has(e)) throw new Error('GlobalImageCache.setData - expected "shouldCache" to have been called.'); this._imageCache.has(e) || (this.#F ? warn("GlobalImageCache.setData - cache limit reached.") : this._imageCache.put(e, t)) } clear(e = !1) { if (!e) { this.#b.clear(); this._refCache.clear() } this._imageCache.clear() } } 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 i = PDFFunction.parse({ xref: this.xref, isEvalSupported: this.isEvalSupported, fn: e instanceof Ref ? this.xref.fetch(e) : e }); this._cache(e, i); return i } createFromArray(e) { const t = this.getCached(e); if (t) return t; const i = PDFFunction.parseArray({ xref: this.xref, isEvalSupported: this.isEvalSupported, fnObj: e instanceof Ref ? this.xref.fetch(e) : e }); this._cache(e, i); return i } getCached(e) { let t; e instanceof Ref ? t = e : e instanceof Dict ? t = e.objId : e instanceof 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 i; e instanceof Ref ? i = e : e instanceof Dict ? i = e.objId : e instanceof BaseStream && (i = e.dict?.objId); i && this._localFunctionCache.set(null, i, t) } get _localFunctionCache() { return shadow(this, "_localFunctionCache", new LocalFunctionCache) } } function toNumberArray(e) { return Array.isArray(e) ? isNumberArray(e, null) ? e : e.map((e => +e)) : null } class PDFFunction { static getSampleArray(e, t, i, a) { let s, r, n = 1; for (s = 0, r = e.length; s < r; s++)n *= e[s]; n *= t; const o = new Array(n); let g = 0, c = 0; const h = 1 / (2 ** i - 1), l = a.getBytes((n * i + 7) / 8); let C = 0; for (s = 0; s < n; s++) { for (; g < i;) { c <<= 8; c |= l[C++]; g += 8 } g -= i; o[s] = (c >> g) * h; c &= (1 << g) - 1 } return o } static parse({ xref: e, isEvalSupported: t, fn: i }) { const a = i.dict || i; switch (a.get("FunctionType")) { case 0: return this.constructSampled({ xref: e, isEvalSupported: t, fn: i, dict: a }); case 1: break; case 2: return this.constructInterpolated({ xref: e, isEvalSupported: t, dict: a }); case 3: return this.constructStiched({ xref: e, isEvalSupported: t, dict: a }); case 4: return this.constructPostScript({ xref: e, isEvalSupported: t, fn: i, dict: a }) }throw new FormatError("Unknown type of function") } static parseArray({ xref: e, isEvalSupported: t, fnObj: i }) { if (!Array.isArray(i)) return this.parse({ xref: e, isEvalSupported: t, fn: i }); const a = []; for (const s of i) a.push(this.parse({ xref: e, isEvalSupported: t, fn: e.fetchIfRef(s) })); return function (e, t, i, s) { for (let r = 0, n = a.length; r < n; r++)a[r](e, t, i, s + r) } } static constructSampled({ xref: e, isEvalSupported: t, fn: i, dict: a }) { function toMultiArray(e) { const t = e.length, i = []; let a = 0; for (let s = 0; s < t; s += 2)i[a++] = [e[s], e[s + 1]]; return i } function interpolate(e, t, i, a, s) { return a + (s - a) / (i - t) * (e - t) } let s = toNumberArray(a.getArray("Domain")), r = toNumberArray(a.getArray("Range")); if (!s || !r) throw new FormatError("No domain or range"); const n = s.length / 2, o = r.length / 2; s = toMultiArray(s); r = toMultiArray(r); const g = toNumberArray(a.getArray("Size")), c = a.get("BitsPerSample"), h = a.get("Order") || 1; 1 !== h && info("No support for cubic spline interpolation: " + h); let l = toNumberArray(a.getArray("Encode")); if (l) l = toMultiArray(l); else { l = []; for (let e = 0; e < n; ++e)l.push([0, g[e] - 1]) } let C = toNumberArray(a.getArray("Decode")); C = C ? toMultiArray(C) : r; const Q = this.getSampleArray(g, o, c, i); return function constructSampledFn(e, t, i, a) { const c = 1 << n, h = new Float64Array(c), E = new Uint32Array(c); let u, d; for (d = 0; d < c; d++)h[d] = 1; let f = o, p = 1; for (u = 0; u < n; ++u) { const i = s[u][0], a = s[u][1]; let r = interpolate(Math.min(Math.max(e[t + u], i), a), i, a, l[u][0], l[u][1]); const n = g[u]; r = Math.min(Math.max(r, 0), n - 1); const o = r < n - 1 ? Math.floor(r) : r - 1, C = o + 1 - r, Q = r - o, m = o * f, y = m + f; for (d = 0; d < c; d++)if (d & p) { h[d] *= Q; E[d] += y } else { h[d] *= C; E[d] += m } f *= n; p <<= 1 } for (d = 0; d < o; ++d) { let e = 0; for (u = 0; u < c; u++)e += Q[E[u] + d] * h[u]; e = interpolate(e, 0, 1, C[d][0], C[d][1]); i[a + d] = Math.min(Math.max(e, r[d][0]), r[d][1]) } } } static constructInterpolated({ xref: e, isEvalSupported: t, dict: i }) { const a = toNumberArray(i.getArray("C0")) || [0], s = toNumberArray(i.getArray("C1")) || [1], r = i.get("N"), n = []; for (let e = 0, t = a.length; e < t; ++e)n.push(s[e] - a[e]); const o = n.length; return function constructInterpolatedFn(e, t, i, s) { const g = 1 === r ? e[t] : e[t] ** r; for (let e = 0; e < o; ++e)i[s + e] = a[e] + g * n[e] } } static constructStiched({ xref: e, isEvalSupported: t, dict: i }) { const a = toNumberArray(i.getArray("Domain")); if (!a) throw new FormatError("No domain"); if (1 !== a.length / 2) throw new FormatError("Bad domain for stiched function"); const s = []; for (const a of i.get("Functions")) s.push(this.parse({ xref: e, isEvalSupported: t, fn: e.fetchIfRef(a) })); const r = toNumberArray(i.getArray("Bounds")), n = toNumberArray(i.getArray("Encode")), o = new Float32Array(1); return function constructStichedFn(e, t, i, g) { const c = function constructStichedFromIRClip(e, t, i) { e > i ? e = i : e < t && (e = t); return e }(e[t], a[0], a[1]), h = r.length; let l; for (l = 0; l < h && !(c < r[l]); ++l); let C = a[0]; l > 0 && (C = r[l - 1]); let Q = a[1]; l < r.length && (Q = r[l]); const E = n[2 * l], u = n[2 * l + 1]; o[0] = C === Q ? E : E + (c - C) * (u - E) / (Q - C); s[l](o, 0, i, g) } } static constructPostScript({ xref: e, isEvalSupported: t, fn: i, dict: a }) { const s = toNumberArray(a.getArray("Domain")), r = toNumberArray(a.getArray("Range")); if (!s) throw new FormatError("No domain."); if (!r) throw new FormatError("No range."); const n = new PostScriptLexer(i), o = new PostScriptParser(n).parse(); if (t && FeatureTest.isEvalSupported) { const e = (new PostScriptCompiler).compile(o, s, r); if (e) return new Function("src", "srcOffset", "dest", "destOffset", e) } info("Unable to compile PS function"); const g = r.length >> 1, c = s.length >> 1, h = new PostScriptEvaluator(o), l = Object.create(null); let C = 8192; const Q = new Float32Array(c); return function constructPostScriptFn(e, t, i, a) { let s, n, o = ""; const E = Q; for (s = 0; s < c; s++) { n = e[t + s]; E[s] = n; o += n + "_" } const u = l[o]; if (void 0 !== u) { i.set(u, a); return } const d = new Float32Array(g), f = h.execute(E), p = f.length - g; for (s = 0; s < g; s++) { n = f[p + s]; let e = r[2 * s]; if (n < e) n = e; else { e = r[2 * s + 1]; n > e && (n = e) } d[s] = n } if (C > 0) { C--; l[o] = d } i.set(d, a) } } } function isPDFFunction(e) { let t; if (e instanceof Dict) t = e; else { if (!(e instanceof BaseStream)) return !1; t = e.dict } return t.has("FunctionType") } 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 i = t.length - e, a = e - 1; a >= 0; a--, i++)t.push(t[i]) } index(e) { this.push(this.stack[this.stack.length - e - 1]) } roll(e, t) { const i = this.stack, a = i.length - e, s = i.length - 1, r = a + (t - Math.floor(t / e) * e); for (let e = a, t = s; e < t; e++, t--) { const a = i[e]; i[e] = i[t]; i[t] = a } for (let e = a, t = r - 1; e < t; e++, t--) { const a = i[e]; i[e] = i[t]; i[t] = a } for (let e = r, t = s; e < t; e++, t--) { const a = i[e]; i[e] = i[t]; i[t] = a } } } class PostScriptEvaluator { constructor(e) { this.operators = e } execute(e) { const t = new PostScriptStack(e); let i = 0; const a = this.operators, s = a.length; let r, n, o; for (; i < s;) { r = a[i++]; if ("number" != typeof r) switch (r) { case "jz": o = t.pop(); n = t.pop(); n || (i = o); break; case "j": n = t.pop(); i = n; break; case "abs": n = t.pop(); t.push(Math.abs(n)); break; case "add": o = t.pop(); n = t.pop(); t.push(n + o); break; case "and": o = t.pop(); n = t.pop(); "boolean" == typeof n && "boolean" == typeof o ? t.push(n && o) : t.push(n & o); break; case "atan": o = t.pop(); n = t.pop(); n = Math.atan2(n, o) / Math.PI * 180; n < 0 && (n += 360); t.push(n); break; case "bitshift": o = t.pop(); n = t.pop(); n > 0 ? t.push(n << o) : t.push(n >> o); break; case "ceiling": n = t.pop(); t.push(Math.ceil(n)); break; case "copy": n = t.pop(); t.copy(n); break; case "cos": n = t.pop(); t.push(Math.cos(n % 360 / 180 * Math.PI)); break; case "cvi": n = 0 | t.pop(); t.push(n); break; case "cvr": break; case "div": o = t.pop(); n = t.pop(); t.push(n / o); break; case "dup": t.copy(1); break; case "eq": o = t.pop(); n = t.pop(); t.push(n === o); break; case "exch": t.roll(2, 1); break; case "exp": o = t.pop(); n = t.pop(); t.push(n ** o); break; case "false": t.push(!1); break; case "floor": n = t.pop(); t.push(Math.floor(n)); break; case "ge": o = t.pop(); n = t.pop(); t.push(n >= o); break; case "gt": o = t.pop(); n = t.pop(); t.push(n > o); break; case "idiv": o = t.pop(); n = t.pop(); t.push(n / o | 0); break; case "index": n = t.pop(); t.index(n); break; case "le": o = t.pop(); n = t.pop(); t.push(n <= o); break; case "ln": n = t.pop(); t.push(Math.log(n)); break; case "log": n = t.pop(); t.push(Math.log10(n)); break; case "lt": o = t.pop(); n = t.pop(); t.push(n < o); break; case "mod": o = t.pop(); n = t.pop(); t.push(n % o); break; case "mul": o = t.pop(); n = t.pop(); t.push(n * o); break; case "ne": o = t.pop(); n = t.pop(); t.push(n !== o); break; case "neg": n = t.pop(); t.push(-n); break; case "not": n = t.pop(); "boolean" == typeof n ? t.push(!n) : t.push(~n); break; case "or": o = t.pop(); n = t.pop(); "boolean" == typeof n && "boolean" == typeof o ? t.push(n || o) : t.push(n | o); break; case "pop": t.pop(); break; case "roll": o = t.pop(); n = t.pop(); t.roll(n, o); break; case "round": n = t.pop(); t.push(Math.round(n)); break; case "sin": n = t.pop(); t.push(Math.sin(n % 360 / 180 * Math.PI)); break; case "sqrt": n = t.pop(); t.push(Math.sqrt(n)); break; case "sub": o = t.pop(); n = t.pop(); t.push(n - o); break; case "true": t.push(!0); break; case "truncate": n = t.pop(); n = n < 0 ? Math.ceil(n) : Math.floor(n); t.push(n); break; case "xor": o = t.pop(); n = t.pop(); "boolean" == typeof n && "boolean" == typeof o ? t.push(n !== o) : t.push(n ^ o); break; default: throw new FormatError(`Unknown operator ${r}`) } else t.push(r) } return t.stack } } class AstNode { constructor(e) { this.type = e } visit(e) { unreachable("abstract method") } } class AstArgument extends AstNode { constructor(e, t, i) { super("args"); this.index = e; this.min = t; this.max = i } visit(e) { e.visitArgument(this) } } class AstLiteral extends AstNode { constructor(e) { super("literal"); this.number = e; this.min = e; this.max = e } visit(e) { e.visitLiteral(this) } } class AstBinaryOperation extends AstNode { constructor(e, t, i, a, s) { super("binary"); this.op = e; this.arg1 = t; this.arg2 = i; this.min = a; this.max = s } visit(e) { e.visitBinaryOperation(this) } } class AstMin extends AstNode { constructor(e, t) { super("max"); this.arg = e; this.min = e.min; this.max = t } visit(e) { e.visitMin(this) } } class AstVariable extends AstNode { constructor(e, t, i) { super("var"); this.index = e; this.min = t; this.max = i } visit(e) { e.visitVariable(this) } } class AstVariableDefinition extends AstNode { constructor(e, t) { super("definition"); this.variable = e; this.arg = t } visit(e) { e.visitVariableDefinition(this) } } class ExpressionBuilderVisitor { constructor() { this.parts = [] } visitArgument(e) { this.parts.push("Math.max(", e.min, ", Math.min(", e.max, ", src[srcOffset + ", e.index, "]))") } visitVariable(e) { this.parts.push("v", e.index) } visitLiteral(e) { this.parts.push(e.number) } visitBinaryOperation(e) { this.parts.push("("); e.arg1.visit(this); this.parts.push(" ", e.op, " "); e.arg2.visit(this); this.parts.push(")") } visitVariableDefinition(e) { this.parts.push("var "); e.variable.visit(this); this.parts.push(" = "); e.arg.visit(this); this.parts.push(";") } visitMin(e) { this.parts.push("Math.min("); e.arg.visit(this); this.parts.push(", ", e.max, ")") } toString() { return this.parts.join("") } } function buildAddOperation(e, t) { return "literal" === t.type && 0 === t.number ? e : "literal" === e.type && 0 === e.number ? t : "literal" === t.type && "literal" === e.type ? new AstLiteral(e.number + t.number) : new AstBinaryOperation("+", e, t, e.min + t.min, e.max + t.max) } function buildMulOperation(e, t) { if ("literal" === t.type) { if (0 === t.number) return new AstLiteral(0); if (1 === t.number) return e; if ("literal" === e.type) return new AstLiteral(e.number * t.number) } if ("literal" === e.type) { if (0 === e.number) return new AstLiteral(0); if (1 === e.number) return t } const i = Math.min(e.min * t.min, e.min * t.max, e.max * t.min, e.max * t.max), a = Math.max(e.min * t.min, e.min * t.max, e.max * t.min, e.max * t.max); return new AstBinaryOperation("*", e, t, i, a) } function buildSubOperation(e, t) { if ("literal" === t.type) { if (0 === t.number) return e; if ("literal" === e.type) return new AstLiteral(e.number - t.number) } return "binary" === t.type && "-" === t.op && "literal" === e.type && 1 === e.number && "literal" === t.arg1.type && 1 === t.arg1.number ? t.arg2 : new AstBinaryOperation("-", e, t, e.min - t.max, e.max - t.min) } function buildMinOperation(e, t) { return e.min >= t ? new AstLiteral(t) : e.max <= t ? e : new AstMin(e, t) } class PostScriptCompiler { compile(e, t, i) { const a = [], s = [], r = t.length >> 1, n = i.length >> 1; let o, g, c, h, l, C, Q, E, u = 0; for (let e = 0; e < r; e++)a.push(new AstArgument(e, t[2 * e], t[2 * e + 1])); for (let t = 0, i = e.length; t < i; t++) { E = e[t]; if ("number" != typeof E) switch (E) { case "add": if (a.length < 2) return null; h = a.pop(); c = a.pop(); a.push(buildAddOperation(c, h)); break; case "cvr": if (a.length < 1) return null; break; case "mul": if (a.length < 2) return null; h = a.pop(); c = a.pop(); a.push(buildMulOperation(c, h)); break; case "sub": if (a.length < 2) return null; h = a.pop(); c = a.pop(); a.push(buildSubOperation(c, h)); break; case "exch": if (a.length < 2) return null; l = a.pop(); C = a.pop(); a.push(l, C); break; case "pop": if (a.length < 1) return null; a.pop(); break; case "index": if (a.length < 1) return null; c = a.pop(); if ("literal" !== c.type) return null; o = c.number; if (o < 0 || !Number.isInteger(o) || a.length < o) return null; l = a[a.length - o - 1]; if ("literal" === l.type || "var" === l.type) { a.push(l); break } Q = new AstVariable(u++, l.min, l.max); a[a.length - o - 1] = Q; a.push(Q); s.push(new AstVariableDefinition(Q, l)); break; case "dup": if (a.length < 1) return null; if ("number" == typeof e[t + 1] && "gt" === e[t + 2] && e[t + 3] === t + 7 && "jz" === e[t + 4] && "pop" === e[t + 5] && e[t + 6] === e[t + 1]) { c = a.pop(); a.push(buildMinOperation(c, e[t + 1])); t += 6; break } l = a.at(-1); if ("literal" === l.type || "var" === l.type) { a.push(l); break } Q = new AstVariable(u++, l.min, l.max); a[a.length - 1] = Q; a.push(Q); s.push(new AstVariableDefinition(Q, l)); break; case "roll": if (a.length < 2) return null; h = a.pop(); c = a.pop(); if ("literal" !== h.type || "literal" !== c.type) return null; g = h.number; o = c.number; if (o <= 0 || !Number.isInteger(o) || !Number.isInteger(g) || a.length < o) return null; g = (g % o + o) % o; if (0 === g) break; a.push(...a.splice(a.length - o, o - g)); break; default: return null } else a.push(new AstLiteral(E)) } if (a.length !== n) return null; const d = []; for (const e of s) { const t = new ExpressionBuilderVisitor; e.visit(t); d.push(t.toString()) } for (let e = 0, t = a.length; e < t; e++) { const t = a[e], s = new ExpressionBuilderVisitor; t.visit(s); const r = i[2 * e], n = i[2 * e + 1], o = [s.toString()]; if (r > t.min) { o.unshift("Math.max(", r, ", "); o.push(")") } if (n < t.max) { o.unshift("Math.min(", n, ", "); o.push(")") } o.unshift("dest[destOffset + ", e, "] = "); o.push(";"); d.push(o.join("")) } return d.join("\n") } } const hs = ["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"], ls = ["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, i) { let a, s; for (a = t, s = e.length; a < s; ++a)if (e[a] !== i) return a; return a } function setValues(e, t, i, a) { for (let s = t; s < i; ++s)e[s] = a } function reverseValues(e, t, i) { for (let a = t, s = i - 1; a < s; ++a, --s) { const t = e[a]; e[a] = e[s]; e[s] = t } } function createBidiText(e, t, i = !1) { let a = "ltr"; i ? a = "ttb" : t || (a = "rtl"); return { str: e, dir: a } } const Cs = [], Bs = []; function bidi(e, t = -1, i = !1) { let a = !0; const s = e.length; if (0 === s || i) return createBidiText(e, a, i); Cs.length = s; Bs.length = s; let r, n, o = 0; for (r = 0; r < s; ++r) { Cs[r] = e.charAt(r); const t = e.charCodeAt(r); let i = "L"; if (t <= 255) i = hs[t]; else if (1424 <= t && t <= 1524) i = "R"; else if (1536 <= t && t <= 1791) { i = ls[255 & t]; i || warn("Bidi: invalid Unicode character " + t.toString(16)) } else (1792 <= t && t <= 2220 || 64336 <= t && t <= 65023 || 65136 <= t && t <= 65279) && (i = "AL"); "R" !== i && "AL" !== i && "AN" !== i || o++; Bs[r] = i } if (0 === o) { a = !0; return createBidiText(e, a) } if (-1 === t) if (o / s < .3 && s > 4) { a = !0; t = 0 } else { a = !1; t = 1 } const g = []; for (r = 0; r < s; ++r)g[r] = t; const c = isOdd(t) ? "R" : "L", h = c, l = h; let C, Q = h; for (r = 0; r < s; ++r)"NSM" === Bs[r] ? Bs[r] = Q : Q = Bs[r]; Q = h; for (r = 0; r < s; ++r) { C = Bs[r]; "EN" === C ? Bs[r] = "AL" === Q ? "AN" : "EN" : "R" !== C && "L" !== C && "AL" !== C || (Q = C) } for (r = 0; r < s; ++r) { C = Bs[r]; "AL" === C && (Bs[r] = "R") } for (r = 1; r < s - 1; ++r) { "ES" === Bs[r] && "EN" === Bs[r - 1] && "EN" === Bs[r + 1] && (Bs[r] = "EN"); "CS" !== Bs[r] || "EN" !== Bs[r - 1] && "AN" !== Bs[r - 1] || Bs[r + 1] !== Bs[r - 1] || (Bs[r] = Bs[r - 1]) } for (r = 0; r < s; ++r)if ("EN" === Bs[r]) { for (let e = r - 1; e >= 0 && "ET" === Bs[e]; --e)Bs[e] = "EN"; for (let e = r + 1; e < s && "ET" === Bs[e]; ++e)Bs[e] = "EN" } for (r = 0; r < s; ++r) { C = Bs[r]; "WS" !== C && "ES" !== C && "ET" !== C && "CS" !== C || (Bs[r] = "ON") } Q = h; for (r = 0; r < s; ++r) { C = Bs[r]; "EN" === C ? Bs[r] = "L" === Q ? "L" : "EN" : "R" !== C && "L" !== C || (Q = C) } for (r = 0; r < s; ++r)if ("ON" === Bs[r]) { const e = findUnequal(Bs, r + 1, "ON"); let t = h; r > 0 && (t = Bs[r - 1]); let i = l; e + 1 < s && (i = Bs[e + 1]); "L" !== t && (t = "R"); "L" !== i && (i = "R"); t === i && setValues(Bs, r, e, t); r = e - 1 } for (r = 0; r < s; ++r)"ON" === Bs[r] && (Bs[r] = c); for (r = 0; r < s; ++r) { C = Bs[r]; isEven(g[r]) ? "R" === C ? g[r] += 1 : "AN" !== C && "EN" !== C || (g[r] += 2) : "L" !== C && "AN" !== C && "EN" !== C || (g[r] += 1) } let E, u = -1, d = 99; for (r = 0, n = g.length; r < n; ++r) { E = g[r]; u < E && (u = E); d > E && isOdd(E) && (d = E) } for (E = u; E >= d; --E) { let e = -1; for (r = 0, n = g.length; r < n; ++r)if (g[r] < E) { if (e >= 0) { reverseValues(Cs, e, r); e = -1 } } else e < 0 && (e = r); e >= 0 && reverseValues(Cs, e, g.length) } for (r = 0, n = Cs.length; r < n; ++r) { const e = Cs[r]; "<" !== e && ">" !== e || (Cs[r] = "") } return createBidiText(Cs.join(""), a) } const Qs = { style: "normal", weight: "normal" }, Es = { style: "normal", weight: "bold" }, us = { style: "italic", weight: "normal" }, ds = { style: "italic", weight: "bold" }, fs = new Map([["Times-Roman", { local: ["Times New Roman", "Times-Roman", "Times", "Liberation Serif", "Nimbus Roman", "Nimbus Roman L", "Tinos", "Thorndale", "TeX Gyre Termes", "FreeSerif", "Linux Libertine O", "Libertinus Serif", "DejaVu Serif", "Bitstream Vera Serif", "Ubuntu"], style: Qs, ultimate: "serif" }], ["Times-Bold", { alias: "Times-Roman", style: Es, ultimate: "serif" }], ["Times-Italic", { alias: "Times-Roman", style: us, ultimate: "serif" }], ["Times-BoldItalic", { alias: "Times-Roman", style: ds, 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: Qs, ultimate: "sans-serif" }], ["Helvetica-Bold", { alias: "Helvetica", path: "LiberationSans-Bold.ttf", style: Es, ultimate: "sans-serif" }], ["Helvetica-Oblique", { alias: "Helvetica", path: "LiberationSans-Italic.ttf", style: us, ultimate: "sans-serif" }], ["Helvetica-BoldOblique", { alias: "Helvetica", path: "LiberationSans-BoldItalic.ttf", style: ds, ultimate: "sans-serif" }], ["Courier", { local: ["Courier", "Courier New", "Liberation Mono", "Nimbus Mono", "Nimbus Mono L", "Cousine", "Cumberland", "TeX Gyre Cursor", "FreeMono", "Linux Libertine Mono O", "Libertinus Mono"], style: Qs, ultimate: "monospace" }], ["Courier-Bold", { alias: "Courier", style: Es, ultimate: "monospace" }], ["Courier-Oblique", { alias: "Courier", style: us, ultimate: "monospace" }], ["Courier-BoldOblique", { alias: "Courier", style: ds, 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: Qs, fallback: "Helvetica" }], ["ArialNarrow-Bold", { alias: "ArialNarrow", style: Es, fallback: "Helvetica-Bold" }], ["ArialNarrow-Italic", { alias: "ArialNarrow", style: us, fallback: "Helvetica-Oblique" }], ["ArialNarrow-BoldItalic", { alias: "ArialNarrow", style: ds, fallback: "Helvetica-BoldOblique" }], ["Calibri", { local: ["Calibri", "Carlito"], style: Qs, fallback: "Helvetica" }], ["Calibri-Bold", { alias: "Calibri", style: Es, fallback: "Helvetica-Bold" }], ["Calibri-Italic", { alias: "Calibri", style: us, fallback: "Helvetica-Oblique" }], ["Calibri-BoldItalic", { alias: "Calibri", style: ds, fallback: "Helvetica-BoldOblique" }], ["Wingdings", { local: ["Wingdings", "URW Dingbats"], style: Qs }], ["Wingdings-Regular", { alias: "Wingdings" }], ["Wingdings-Bold", { alias: "Wingdings" }]]), ps = new Map([["Arial-Black", "ArialBlack"]]); function getFamilyName(e) { const t = new Set(["thin", "extralight", "ultralight", "demilight", "semilight", "light", "book", "regular", "normal", "medium", "demibold", "semibold", "bold", "extrabold", "ultrabold", "black", "heavy", "extrablack", "ultrablack", "roman", "italic", "oblique", "ultracondensed", "extracondensed", "condensed", "semicondensed", "normal", "semiexpanded", "expanded", "extraexpanded", "ultraexpanded", "bolditalic"]); return e.split(/[- ,+]+/g).filter((e => !t.has(e.toLowerCase()))).join(" ") } function generateFont({ alias: e, local: t, path: i, fallback: a, style: s, ultimate: r }, n, o, g = !0, c = !0, h = "") { const l = { style: null, ultimate: null }; if (t) { const e = h ? ` ${h}` : ""; for (const i of t) n.push(`local(${i}${e})`) } if (e) { const t = fs.get(e), r = h || function getStyleToAppend(e) { switch (e) { case Es: return "Bold"; case us: return "Italic"; case ds: return "Bold Italic"; default: if ("bold" === e?.weight) return "Bold"; if ("italic" === e?.style) return "Italic" }return "" }(s); Object.assign(l, generateFont(t, n, o, g && !a, c && !i, r)) } s && (l.style = s); r && (l.ultimate = r); if (g && a) { const e = fs.get(a), { ultimate: t } = generateFont(e, n, o, g, c && !i, h); l.ultimate ||= t } c && i && o && n.push(`url(${o}${i})`); return l } function getFontSubstitution(e, t, i, a, s, r) { if (a.startsWith("InvalidPDFjsFont_")) return null; "TrueType" !== r && "Type1" !== r || !/^[A-Z]{6}\+/.test(a) || (a = a.slice(7)); const n = a = normalizeFontName(a); let o = e.get(n); if (o) return o; let g = fs.get(a); if (!g) for (const [e, t] of ps) if (a.startsWith(e)) { a = `${t}${a.substring(e.length)}`; g = fs.get(a); break } let c = !1; if (!g) { g = fs.get(s); c = !0 } const h = `${t.getDocId()}_s${t.createFontId()}`; if (!g) { if (!validateFontName(a)) { warn(`Cannot substitute the font because of its name: ${a}`); e.set(n, null); return null } const t = /bold/gi.test(a), i = /oblique|italic/gi.test(a), s = t && i && ds || t && Es || i && us || Qs; o = { css: `"${getFamilyName(a)}",${h}`, guessFallback: !0, loadedName: h, baseFontName: a, src: `local(${a})`, style: s }; e.set(n, o); return o } const l = []; c && validateFontName(a) && l.push(`local(${a})`); const { style: C, ultimate: Q } = generateFont(g, l, i), E = null === Q, u = E ? "" : `,${Q}`; o = { css: `"${getFamilyName(a)}",${h}${u}`, guessFallback: E, loadedName: h, baseFontName: a, src: l.join(","), style: C }; e.set(n, o); return o } 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: i } = this; if (e > i || t > i) return !0; const a = e * t; if (this._hasMaxArea) return a > this.MAX_AREA; if (a < this._goodSquareLength ** 2) return !1; if (this._areGoodDims(e, t)) { this._goodSquareLength = Math.max(this._goodSquareLength, Math.floor(Math.sqrt(e * t))); return !1 } this._goodSquareLength = this._guessMax(this._goodSquareLength, i, 128, 0); return a > (this.MAX_AREA = this._goodSquareLength ** 2) } static get MAX_DIM() { return shadow(this, "MAX_DIM", this._guessMax(2048, 65537, 0, 1)) } static get MAX_AREA() { this._hasMaxArea = !0; return 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; shadow(this, "MAX_AREA", e) } } static setMaxArea(e) { this._hasMaxArea || (this.MAX_AREA = e >> 2) } static _areGoodDims(e, t) { try { const i = new OffscreenCanvas(e, t), a = i.getContext("2d"); a.fillRect(0, 0, 1, 1); const s = a.getImageData(0, 0, 1, 1).data[3]; i.width = i.height = 1; return 0 !== s } catch { return !1 } } static _guessMax(e, t, i, a) { for (; e + i + 1 < t;) { const i = Math.floor((e + t) / 2), s = a || i; this._areGoodDims(i, s) ? e = i : t = i } return e } static async createImage(e, t = !1) { return new ImageResizer(e, t)._createImage() } async _createImage() { const e = this._encodeBMP(), t = new Blob([e.buffer], { type: "image/bmp" }), i = createImageBitmap(t), { MAX_AREA: a, MAX_DIM: s } = ImageResizer, { _imgData: r } = this, { width: n, height: o } = r, g = Math.max(n / s, o / s, Math.sqrt(n * o / a)), c = Math.max(g, 2), h = Math.round(10 * (g + 1.25)) / 10 / c, l = Math.floor(Math.log2(h)), C = new Array(l + 2).fill(2); C[0] = c; C.splice(-1, 1, h / (1 << l)); let Q = n, E = o, u = await i; for (const e of C) { const t = Q, i = E; Q = Math.floor(Q / e) - 1; E = Math.floor(E / e) - 1; const a = new OffscreenCanvas(Q, E); a.getContext("2d").drawImage(u, 0, 0, t, i, 0, 0, Q, E); u = a.transferToImageBitmap() } r.data = null; r.bitmap = u; r.width = Q; r.height = E; return r } _encodeBMP() { const { width: e, height: t, kind: i } = this._imgData; let a, s = this._imgData.data, r = new Uint8Array(0), n = r, o = 0; switch (i) { case b: { a = 1; r = new Uint8Array(this._isMask ? [255, 255, 255, 255, 0, 0, 0, 0] : [0, 0, 0, 0, 255, 255, 255, 255]); const i = e + 7 >> 3, n = i + 3 & -4; if (i !== n) { const e = new Uint8Array(n * t); let a = 0; for (let r = 0, o = t * i; r < o; r += i, a += n)e.set(s.subarray(r, r + i), a); s = e } break } case D: a = 24; if (3 & e) { const i = 3 * e, a = i + 3 & -4, r = a - i, n = new Uint8Array(a * t); let o = 0; for (let e = 0, a = t * i; e < a; e += i) { const t = s.subarray(e, e + i); for (let e = 0; e < i; e += 3) { n[o++] = t[e + 2]; n[o++] = t[e + 1]; n[o++] = t[e] } o += r } s = n } else for (let e = 0, t = s.length; e < t; e += 3) { const t = s[e]; s[e] = s[e + 2]; s[e + 2] = t } break; case F: a = 32; o = 3; n = new Uint8Array(68); const i = new DataView(n.buffer); if (FeatureTest.isLittleEndian) { i.setUint32(0, 255, !0); i.setUint32(4, 65280, !0); i.setUint32(8, 16711680, !0); i.setUint32(12, 4278190080, !0) } else { i.setUint32(0, 4278190080, !0); i.setUint32(4, 16711680, !0); i.setUint32(8, 65280, !0); i.setUint32(12, 255, !0) } break; default: throw new Error("invalid format") }let g = 0; const c = 40 + n.length, h = 14 + c + r.length + s.length, l = new Uint8Array(h), C = new DataView(l.buffer); C.setUint16(g, 19778, !0); g += 2; C.setUint32(g, h, !0); g += 4; C.setUint32(g, 0, !0); g += 4; C.setUint32(g, 14 + c + r.length, !0); g += 4; C.setUint32(g, c, !0); g += 4; C.setInt32(g, e, !0); g += 4; C.setInt32(g, -t, !0); g += 4; C.setUint16(g, 1, !0); g += 2; C.setUint16(g, a, !0); g += 2; C.setUint32(g, o, !0); g += 4; C.setUint32(g, 0, !0); g += 4; C.setInt32(g, 0, !0); g += 4; C.setInt32(g, 0, !0); g += 4; C.setUint32(g, r.length / 4, !0); g += 4; C.setUint32(g, 0, !0); g += 4; l.set(n, g); g += n.length; l.set(r, g); g += r.length; l.set(s, g); return l } } ImageResizer._goodSquareLength = 2048; const ms = 3285377520, ys = 4294901760, ws = 65535; class MurmurHash3_64 { constructor(e) { this.h1 = e ? 4294967295 & e : ms; this.h2 = e ? 4294967295 & e : ms } update(e) { let t, i; if ("string" == typeof e) { t = new Uint8Array(2 * e.length); i = 0; for (let a = 0, s = e.length; a < s; a++) { const s = e.charCodeAt(a); if (s <= 255) t[i++] = s; else { t[i++] = s >>> 8; t[i++] = 255 & s } } } else { if (!ArrayBuffer.isView(e)) throw new Error("Invalid data format, must be a string or TypedArray."); t = e.slice(); i = t.byteLength } const a = i >> 2, s = i - 4 * a, r = new Uint32Array(t.buffer, 0, a); let n = 0, o = 0, g = this.h1, c = this.h2; const h = 3432918353, l = 461845907, C = 11601, Q = 13715; for (let e = 0; e < a; e++)if (1 & e) { n = r[e]; n = n * h & ys | n * C & ws; n = n << 15 | n >>> 17; n = n * l & ys | n * Q & ws; g ^= n; g = g << 13 | g >>> 19; g = 5 * g + 3864292196 } else { o = r[e]; o = o * h & ys | o * C & ws; o = o << 15 | o >>> 17; o = o * l & ys | o * Q & ws; c ^= o; c = c << 13 | c >>> 19; c = 5 * c + 3864292196 } n = 0; switch (s) { case 3: n ^= t[4 * a + 2] << 16; case 2: n ^= t[4 * a + 1] << 8; case 1: n ^= t[4 * a]; n = n * h & ys | n * C & ws; n = n << 15 | n >>> 17; n = n * l & ys | n * Q & ws; 1 & a ? g ^= n : c ^= n }this.h1 = g; this.h2 = c } hexdigest() { let e = this.h1, t = this.h2; e ^= t >>> 1; e = 3981806797 * e & ys | 36045 * e & ws; t = 4283543511 * t & ys | (2950163797 * (t << 16 | e >>> 16) & ys) >>> 16; e ^= t >>> 1; e = 444984403 * e & ys | 60499 * e & ws; t = 3301882366 * t & ys | (3120437893 * (t << 16 | e >>> 16) & ys) >>> 16; e ^= t >>> 1; return (e >>> 0).toString(16).padStart(8, "0") + (t >>> 0).toString(16).padStart(8, "0") } } function addState(e, t, i, a, s) { let r = e; for (let e = 0, i = t.length - 1; e < i; e++) { const i = t[e]; r = r[i] ||= [] } r[t.at(-1)] = { checkFn: i, iterateFn: a, processFn: s } } const bs = []; addState(bs, [GA, MA, ze, xA], null, (function iterateInlineImageGroup(e, t) { const i = e.fnArray, a = (t - (e.iCurr - 3)) % 4; switch (a) { case 0: return i[t] === GA; case 1: return i[t] === MA; case 2: return i[t] === ze; case 3: return i[t] === xA }throw new Error(`iterateInlineImageGroup - invalid pos: ${a}`) }), (function foundInlineImageGroup(e, t) { const i = e.fnArray, a = e.argsArray, s = e.iCurr, r = s - 3, n = s - 2, o = s - 1, g = Math.min(Math.floor((t - r) / 4), 200); if (g < 10) return t - (t - r) % 4; let c = 0; const h = []; let l = 0, C = 1, Q = 1; for (let e = 0; e < g; e++) { const t = a[n + (e << 2)], i = a[o + (e << 2)][0]; if (C + i.width > 1e3) { c = Math.max(c, C); Q += l + 2; C = 0; l = 0 } h.push({ transform: t, x: C, y: Q, w: i.width, h: i.height }); C += i.width + 2; l = Math.max(l, i.height) } const E = Math.max(c, C) + 1, u = Q + l + 1, d = new Uint8Array(E * u * 4), f = E << 2; for (let e = 0; e < g; e++) { const t = a[o + (e << 2)][0].data, i = h[e].w << 2; let s = 0, r = h[e].x + h[e].y * E << 2; d.set(t.subarray(0, i), r - f); for (let a = 0, n = h[e].h; a < n; a++) { d.set(t.subarray(s, s + i), r); s += i; r += f } d.set(t.subarray(s - i, s), r); for (; r >= 0;) { t[r - 4] = t[r]; t[r - 3] = t[r + 1]; t[r - 2] = t[r + 2]; t[r - 1] = t[r + 3]; t[r + i] = t[r + i - 4]; t[r + i + 1] = t[r + i - 3]; t[r + i + 2] = t[r + i - 2]; t[r + i + 3] = t[r + i - 1]; r -= f } } const p = { width: E, height: u }; if (e.isOffscreenCanvasSupported) { const e = new OffscreenCanvas(E, u); e.getContext("2d").putImageData(new ImageData(new Uint8ClampedArray(d.buffer), E, u), 0, 0); p.bitmap = e.transferToImageBitmap(); p.data = null } else { p.kind = F; p.data = d } i.splice(r, 4 * g, _e); a.splice(r, 4 * g, [p, h]); return r + 1 })); addState(bs, [GA, MA, je, xA], null, (function iterateImageMaskGroup(e, t) { const i = e.fnArray, a = (t - (e.iCurr - 3)) % 4; switch (a) { case 0: return i[t] === GA; case 1: return i[t] === MA; case 2: return i[t] === je; case 3: return i[t] === xA }throw new Error(`iterateImageMaskGroup - invalid pos: ${a}`) }), (function foundImageMaskGroup(e, t) { const i = e.fnArray, a = e.argsArray, s = e.iCurr, r = s - 3, n = s - 2, o = s - 1; let g = Math.floor((t - r) / 4); if (g < 10) return t - (t - r) % 4; let c, h, l = !1; const C = a[o][0], Q = a[n][0], E = a[n][1], u = a[n][2], d = a[n][3]; if (E === u) { l = !0; c = n + 4; let e = o + 4; for (let t = 1; t < g; t++, c += 4, e += 4) { h = a[c]; if (a[e][0] !== C || h[0] !== Q || h[1] !== E || h[2] !== u || h[3] !== d) { t < 10 ? l = !1 : g = t; break } } } if (l) { g = Math.min(g, 1e3); const e = new Float32Array(2 * g); c = n; for (let t = 0; t < g; t++, c += 4) { h = a[c]; e[t << 1] = h[4]; e[1 + (t << 1)] = h[5] } i.splice(r, 4 * g, At); a.splice(r, 4 * g, [C, Q, E, u, d, e]) } else { g = Math.min(g, 100); const e = []; for (let t = 0; t < g; t++) { h = a[n + (t << 2)]; const i = a[o + (t << 2)][0]; e.push({ data: i.data, width: i.width, height: i.height, interpolate: i.interpolate, count: i.count, transform: h }) } i.splice(r, 4 * g, Ze); a.splice(r, 4 * g, [e]) } return r + 1 })); addState(bs, [GA, MA, Ve, xA], (function (e) { const t = e.argsArray, i = e.iCurr - 2; return 0 === t[i][1] && 0 === t[i][2] }), (function iterateImageGroup(e, t) { const i = e.fnArray, a = e.argsArray, s = (t - (e.iCurr - 3)) % 4; switch (s) { case 0: return i[t] === GA; case 1: if (i[t] !== MA) return !1; const s = e.iCurr - 2, r = a[s][0], n = a[s][3]; return a[t][0] === r && 0 === a[t][1] && 0 === a[t][2] && a[t][3] === n; case 2: if (i[t] !== Ve) return !1; const o = a[e.iCurr - 1][0]; return a[t][0] === o; case 3: return i[t] === xA }throw new Error(`iterateImageGroup - invalid pos: ${s}`) }), (function (e, t) { const i = e.fnArray, a = e.argsArray, s = e.iCurr, r = s - 3, n = s - 2, o = a[s - 1][0], g = a[n][0], c = a[n][3], h = Math.min(Math.floor((t - r) / 4), 1e3); if (h < 3) return t - (t - r) % 4; const l = new Float32Array(2 * h); let C = n; for (let e = 0; e < h; e++, C += 4) { const t = a[C]; l[e << 1] = t[4]; l[1 + (e << 1)] = t[5] } const Q = [o, g, c, l]; i.splice(r, 4 * h, $e); a.splice(r, 4 * h, Q); return r + 1 })); addState(bs, [$A, se, Ie, he, Ae], null, (function iterateShowTextGroup(e, t) { const i = e.fnArray, a = e.argsArray, s = (t - (e.iCurr - 4)) % 5; switch (s) { case 0: return i[t] === $A; case 1: return i[t] === se; case 2: return i[t] === Ie; case 3: if (i[t] !== he) return !1; const s = e.iCurr - 3, r = a[s][0], n = a[s][1]; return a[t][0] === r && a[t][1] === n; case 4: return i[t] === Ae }throw new Error(`iterateShowTextGroup - invalid pos: ${s}`) }), (function (e, t) { const i = e.fnArray, a = e.argsArray, s = e.iCurr, r = s - 4, n = s - 3, o = s - 2, g = s - 1, c = s, h = a[n][0], l = a[n][1]; let C = Math.min(Math.floor((t - r) / 5), 1e3); if (C < 3) return t - (t - r) % 5; let Q = r; if (r >= 4 && i[r - 4] === i[n] && i[r - 3] === i[o] && i[r - 2] === i[g] && i[r - 1] === i[c] && a[r - 4][0] === h && a[r - 4][1] === l) { C++; Q -= 5 } let E = Q + 4; for (let e = 1; e < C; e++) { i.splice(E, 3); a.splice(E, 3); E += 2 } return E + 1 })); class NullOptimizer { constructor(e) { this.queue = e } _optimize() { } push(e, t) { this.queue.fnArray.push(e); this.queue.argsArray.push(t); this._optimize() } flush() { } reset() { } } class QueueOptimizer extends NullOptimizer { constructor(e) { super(e); this.state = null; this.context = { iCurr: 0, fnArray: e.fnArray, argsArray: e.argsArray, isOffscreenCanvasSupported: !1 }; this.match = null; this.lastProcessed = 0 } set isOffscreenCanvasSupported(e) { this.context.isOffscreenCanvasSupported = e } _optimize() { const e = this.queue.fnArray; let t = this.lastProcessed, i = e.length, a = this.state, s = this.match; if (!a && !s && t + 1 === i && !bs[e[t]]) { this.lastProcessed = i; return } const r = this.context; for (; t < i;) { if (s) { if ((0, s.iterateFn)(r, t)) { t++; continue } t = (0, s.processFn)(r, t + 1); i = e.length; s = null; a = null; if (t >= i) break } a = (a || bs)[e[t]]; if (a && !Array.isArray(a)) { r.iCurr = t; t++; if (!a.checkFn || (0, a.checkFn)(r)) { s = a; a = null } else a = null } else t++ } this.state = a; this.match = s; 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 & Q ? 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 === xA || e === Ae)) && this.flush() } addImageOps(e, t, i) { void 0 !== i && this.addOp(He, ["OC", i]); this.addOp(e, t); void 0 !== i && this.addOp(Ye, []) } addDependency(e) { if (!this.dependencies.has(e)) { this.dependencies.add(e); this.addOp(yA, [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, i = e.length; t < i; t++)this.addOp(e.fnArray[t], e.argsArray[t]) } else warn('addOpList - ignoring invalid "opList" parameter.') } getIR() { return { fnArray: this.fnArray, argsArray: this.argsArray, length: this.length } } get _transfers() { const e = [], { fnArray: t, argsArray: i, length: a } = this; for (let s = 0; s < a; s++)switch (t[s]) { case ze: case _e: case je: const t = i[s][0]; !t.cached && t.data?.buffer instanceof ArrayBuffer && e.push(t.data.buffer) }return e } flush(e = !1, t = null) { this.optimizer.flush(); const i = this.length; this._totalLength += i; this._streamSink.enqueue({ fnArray: this.fnArray, argsArray: this.argsArray, lastChunk: e, separateAnnots: t, length: i }, 1, this._transfers); this.dependencies.clear(); this.fnArray.length = 0; this.argsArray.length = 0; this.weight = 0; this.optimizer.reset() } } function decodeAndClamp(e, t, i, a) { (e = t + e * i) < 0 ? e = 0 : e > a && (e = a); return e } function resizeImageMask(e, t, i, a, s, r) { const n = s * r; let o; o = t <= 8 ? new Uint8Array(n) : t <= 16 ? new Uint16Array(n) : new Uint32Array(n); const g = i / s, c = a / r; let h, l, C, Q, E = 0; const u = new Uint16Array(s), d = i; for (h = 0; h < s; h++)u[h] = Math.floor(h * g); for (h = 0; h < r; h++) { C = Math.floor(h * c) * d; for (l = 0; l < s; l++) { Q = C + u[l]; o[E++] = e[Q] } } return o } class PDFImage { constructor({ xref: e, res: t, image: i, isInline: a = !1, smask: s = null, mask: r = null, isMask: n = !1, pdfFunctionFactory: o, localColorSpaceCache: g }) { this.image = i; let c = !1; const h = i.dict, l = h.get("F", "Filter"); let C; if (l instanceof Name) C = l.name; else if (Array.isArray(l)) { const t = e.fetchIfRef(l[0]); t instanceof Name && (C = t.name) } switch (C) { case "JPXDecode": ({ width: i.width, height: i.height, componentsCount: i.numComps, bitsPerComponent: i.bitsPerComponent } = JpxImage.parseImageProperties(i.stream)); i.stream.reset(); c = !0; break; case "JBIG2Decode": i.bitsPerComponent = 1; i.numComps = 1 }let Q = h.get("W", "Width"), E = h.get("H", "Height"); if (Number.isInteger(i.width) && i.width > 0 && Number.isInteger(i.height) && i.height > 0 && (i.width !== Q || i.height !== E)) { warn("PDFImage - using the Width/Height of the image data, rather than the image dictionary."); Q = i.width; E = i.height } if (Q < 1 || E < 1) throw new FormatError(`Invalid image width: ${Q} or height: ${E}`); this.width = Q; this.height = E; this.interpolate = h.get("I", "Interpolate"); this.imageMask = h.get("IM", "ImageMask") || !1; this.matte = h.get("Matte") || !1; let u = i.bitsPerComponent; if (!u) { u = h.get("BPC", "BitsPerComponent"); if (!u) { if (!this.imageMask) throw new FormatError(`Bits per component missing in image: ${this.imageMask}`); u = 1 } } this.bpc = u; if (!this.imageMask) { let s = h.getRaw("CS") || h.getRaw("ColorSpace"); if (!s) { info("JPX images (which do not require color spaces)"); switch (i.numComps) { case 1: s = Name.get("DeviceGray"); break; case 3: s = Name.get("DeviceRGB"); break; case 4: s = Name.get("DeviceCMYK"); break; default: throw new Error(`JPX images with ${i.numComps} color components not supported.`) } } this.colorSpace = ColorSpace.parse({ cs: s, xref: e, resources: a ? t : null, pdfFunctionFactory: o, localColorSpaceCache: g }); this.numComps = this.colorSpace.numComps; this.ignoreColorSpace = c && "Indexed" === this.colorSpace.name } this.decode = h.getArray("D", "Decode"); this.needsDecode = !1; if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, u) || n && !ColorSpace.isDefaultDecode(this.decode, 1))) { this.needsDecode = !0; const e = (1 << u) - 1; this.decodeCoefficients = []; this.decodeAddends = []; const t = "Indexed" === this.colorSpace?.name; for (let i = 0, a = 0; i < this.decode.length; i += 2, ++a) { const s = this.decode[i], r = this.decode[i + 1]; this.decodeCoefficients[a] = t ? (r - s) / e : r - s; this.decodeAddends[a] = t ? s : e * s } } if (s) this.smask = new PDFImage({ xref: e, res: t, image: s, isInline: a, pdfFunctionFactory: o, localColorSpaceCache: g }); else if (r) if (r instanceof BaseStream) { r.dict.get("IM", "ImageMask") ? this.mask = new PDFImage({ xref: e, res: t, image: r, isInline: a, isMask: !0, pdfFunctionFactory: o, localColorSpaceCache: g }) : warn("Ignoring /Mask in image without /ImageMask.") } else this.mask = r } static async buildImage({ xref: e, res: t, image: i, isInline: a = !1, pdfFunctionFactory: s, localColorSpaceCache: r }) { const n = i; let o = null, g = null; const c = i.dict.get("SMask"), h = i.dict.get("Mask"); c ? c instanceof BaseStream ? o = c : warn("Unsupported /SMask format.") : h && (h instanceof BaseStream || Array.isArray(h) ? g = h : warn("Unsupported /Mask format.")); return new PDFImage({ xref: e, res: t, image: n, isInline: a, smask: o, mask: g, pdfFunctionFactory: s, localColorSpaceCache: r }) } static createRawMask({ imgArray: e, width: t, height: i, imageIsFromDecodeStream: a, inverseDecode: s, interpolate: r }) { const n = (t + 7 >> 3) * i, o = e.byteLength; let g, c; if (!a || s && !(n === o)) if (s) { g = new Uint8Array(n); g.set(e); g.fill(255, o) } else g = new Uint8Array(e); else g = e; if (s) for (c = 0; c < o; c++)g[c] ^= 255; return { data: g, width: t, height: i, interpolate: r } } static async createMask({ imgArray: e, width: t, height: i, imageIsFromDecodeStream: a, inverseDecode: s, interpolate: r, isOffscreenCanvasSupported: n = !1 }) { const o = 1 === t && 1 === i && s === (0 === e.length || !!(128 & e[0])); if (o) return { isSingleOpaquePixel: o }; if (n) { if (ImageResizer.needsToBeResized(t, i)) { const a = new Uint8ClampedArray(t * i * 4); convertBlackAndWhiteToRGBA({ src: e, dest: a, width: t, height: i, nonBlackColor: 0, inverseDecode: s }); return ImageResizer.createImage({ kind: F, data: a, width: t, height: i, interpolate: r }) } const a = new OffscreenCanvas(t, i), n = a.getContext("2d"), o = n.createImageData(t, i); convertBlackAndWhiteToRGBA({ src: e, dest: o.data, width: t, height: i, nonBlackColor: 0, inverseDecode: s }); n.putImageData(o, 0, 0); return { data: null, width: t, height: i, interpolate: r, bitmap: a.transferToImageBitmap() } } return this.createRawMask({ imgArray: e, width: t, height: i, inverseDecode: s, imageIsFromDecodeStream: a, interpolate: r }) } get drawWidth() { return Math.max(this.width, this.smask?.width || 0, this.mask?.width || 0) } get drawHeight() { return Math.max(this.height, this.smask?.height || 0, this.mask?.height || 0) } decodeBuffer(e) { const t = this.bpc, i = this.numComps, a = this.decodeAddends, s = this.decodeCoefficients, r = (1 << t) - 1; let n, o; if (1 === t) { for (n = 0, o = e.length; n < o; n++)e[n] = +!e[n]; return } let g = 0; for (n = 0, o = this.width * this.height; n < o; n++)for (let t = 0; t < i; t++) { e[g] = decodeAndClamp(e[g], a[t], s[t], r); g++ } } getComponents(e) { const t = this.bpc; if (8 === t) return e; const i = this.width, a = this.height, s = this.numComps, r = i * a * s; let n, o = 0; n = t <= 8 ? new Uint8Array(r) : t <= 16 ? new Uint16Array(r) : new Uint32Array(r); const g = i * s, c = (1 << t) - 1; let h, l, C = 0; if (1 === t) { let t, i, s; for (let r = 0; r < a; r++) { i = C + (-8 & g); s = C + g; for (; C < i;) { l = e[o++]; n[C] = l >> 7 & 1; n[C + 1] = l >> 6 & 1; n[C + 2] = l >> 5 & 1; n[C + 3] = l >> 4 & 1; n[C + 4] = l >> 3 & 1; n[C + 5] = l >> 2 & 1; n[C + 6] = l >> 1 & 1; n[C + 7] = 1 & l; C += 8 } if (C < s) { l = e[o++]; t = 128; for (; C < s;) { n[C++] = +!!(l & t); t >>= 1 } } } } else { let i = 0; l = 0; for (C = 0, h = r; C < h; ++C) { if (C % g == 0) { l = 0; i = 0 } for (; i < t;) { l = l << 8 | e[o++]; i += 8 } const a = i - t; let s = l >> a; s < 0 ? s = 0 : s > c && (s = c); n[C] = s; l &= (1 << a) - 1; i = a } } return n } fillOpacity(e, t, i, a, s) { const r = this.smask, n = this.mask; let o, g, c, h, l, C; if (r) { g = r.width; c = r.height; o = new Uint8ClampedArray(g * c); r.fillGrayBuffer(o); g === t && c === i || (o = resizeImageMask(o, r.bpc, g, c, t, i)) } else if (n) if (n instanceof PDFImage) { g = n.width; c = n.height; o = new Uint8ClampedArray(g * c); n.numComps = 1; n.fillGrayBuffer(o); for (h = 0, l = g * c; h < l; ++h)o[h] = 255 - o[h]; g === t && c === i || (o = resizeImageMask(o, n.bpc, g, c, t, i)) } else { if (!Array.isArray(n)) throw new FormatError("Unknown mask format."); { o = new Uint8ClampedArray(t * i); const e = this.numComps; for (h = 0, l = t * i; h < l; ++h) { let t = 0; const i = h * e; for (C = 0; C < e; ++C) { const e = s[i + C], a = 2 * C; if (e < n[a] || e > n[a + 1]) { t = 255; break } } o[h] = t } } } if (o) for (h = 0, C = 3, l = t * a; h < l; ++h, C += 4)e[C] = o[h]; else for (h = 0, C = 3, l = t * a; h < l; ++h, C += 4)e[C] = 255 } undoPreblend(e, t, i) { const a = this.smask?.matte; if (!a) return; const s = this.colorSpace.getRgb(a, 0), r = s[0], n = s[1], o = s[2], g = t * i * 4; for (let t = 0; t < g; t += 4) { const i = e[t + 3]; if (0 === i) { e[t] = 255; e[t + 1] = 255; e[t + 2] = 255; continue } const a = 255 / i; e[t] = (e[t] - r) * a + r; e[t + 1] = (e[t + 1] - n) * a + n; e[t + 2] = (e[t + 2] - o) * a + o } } async createImageData(e = !1, t = !1) { const i = this.drawWidth, a = this.drawHeight, s = { width: i, height: a, interpolate: this.interpolate, kind: 0, data: null }, r = this.numComps, n = this.width, o = this.height, g = this.bpc, c = n * r * g + 7 >> 3, h = t && ImageResizer.needsToBeResized(i, a); if (!e) { let e; "DeviceGray" === this.colorSpace.name && 1 === g ? e = b : "DeviceRGB" !== this.colorSpace.name || 8 !== g || this.needsDecode || (e = D); if (e && !this.smask && !this.mask && i === n && a === o) { const r = this.getImageBytes(o * c, {}); if (t) return h ? ImageResizer.createImage({ data: r, kind: e, width: i, height: a, interpolate: this.interpolate }, this.needsDecode) : this.createBitmap(e, n, o, r); s.kind = e; s.data = r; if (this.needsDecode) { assert(e === b, "PDFImage.createImageData: The image must be grayscale."); const t = s.data; for (let e = 0, i = t.length; e < i; e++)t[e] ^= 255 } return s } if (this.image instanceof JpegStream && !this.smask && !this.mask && !this.needsDecode) { let e = o * c; if (t && !h) { let t = !1; switch (this.colorSpace.name) { case "DeviceGray": e *= 4; t = !0; break; case "DeviceRGB": e = e / 3 * 4; t = !0; break; case "DeviceCMYK": t = !0 }if (t) { const t = this.getImageBytes(e, { drawWidth: i, drawHeight: a, forceRGBA: !0 }); return this.createBitmap(F, i, a, t) } } else switch (this.colorSpace.name) { case "DeviceGray": e *= 3; case "DeviceRGB": case "DeviceCMYK": s.kind = D; s.data = this.getImageBytes(e, { drawWidth: i, drawHeight: a, forceRGB: !0 }); return h ? ImageResizer.createImage(s) : s } } } const l = this.getImageBytes(o * c, { internal: !0 }), C = 0 | l.length / c * a / o, Q = this.getComponents(l); let E, u, d, f, p, m; if (t && !h) { d = new OffscreenCanvas(i, a); f = d.getContext("2d"); p = f.createImageData(i, a); m = p.data } s.kind = F; if (e || this.smask || this.mask) { t && !h || (m = new Uint8ClampedArray(i * a * 4)); E = 1; u = !0; this.fillOpacity(m, i, a, C, Q) } else { if (!t || h) { s.kind = D; m = new Uint8ClampedArray(i * a * 3); E = 0 } else { new Uint32Array(m.buffer).fill(FeatureTest.isLittleEndian ? 4278190080 : 255); E = 1 } u = !1 } this.needsDecode && this.decodeBuffer(Q); this.colorSpace.fillRgb(m, n, o, i, a, C, g, Q, E); u && this.undoPreblend(m, i, C); if (t && !h) { f.putImageData(p, 0, 0); return { data: null, width: i, height: a, bitmap: d.transferToImageBitmap(), interpolate: this.interpolate } } s.data = m; return h ? ImageResizer.createImage(s) : s } fillGrayBuffer(e) { const t = this.numComps; if (1 !== t) throw new FormatError(`Reading gray scale from a color image: ${t}`); const i = this.width, a = this.height, s = this.bpc, r = i * t * s + 7 >> 3, n = this.getImageBytes(a * r, { internal: !0 }), o = this.getComponents(n); let g, c; if (1 === s) { c = i * a; if (this.needsDecode) for (g = 0; g < c; ++g)e[g] = o[g] - 1 & 255; else for (g = 0; g < c; ++g)e[g] = 255 & -o[g]; return } this.needsDecode && this.decodeBuffer(o); c = i * a; const h = 255 / ((1 << s) - 1); for (g = 0; g < c; ++g)e[g] = h * o[g] } createBitmap(e, t, i, a) { const s = new OffscreenCanvas(t, i), r = s.getContext("2d"); let n; if (e === F) n = new ImageData(a, t, i); else { n = r.createImageData(t, i); convertToRGBA({ kind: e, src: a, dest: new Uint32Array(n.data.buffer), width: t, height: i, inverseDecode: this.needsDecode }) } r.putImageData(n, 0, 0); return { data: null, width: t, height: i, bitmap: s.transferToImageBitmap(), interpolate: this.interpolate } } getImageBytes(e, { drawWidth: t, drawHeight: i, forceRGBA: a = !1, forceRGB: s = !1, internal: r = !1 }) { this.image.reset(); this.image.drawWidth = t || this.width; this.image.drawHeight = i || this.height; this.image.forceRGBA = !!a; this.image.forceRGB = !!s; const n = this.image.getBytes(e, this.ignoreColorSpace); if (r || this.image instanceof DecodeStream) return n; assert(n instanceof Uint8Array, 'PDFImage.getImageBytes: Unsupported "imageBytes" type.'); return new Uint8Array(n) } } const Ds = Object.freeze({ maxImageSize: -1, disableFontFace: !1, ignoreErrors: !1, isEvalSupported: !0, isOffscreenCanvasSupported: !1, canvasMaxAreaInBytes: -1, fontExtraProperties: !1, useSystemFonts: !0, cMapUrl: null, standardFontDataUrl: null }), Fs = 1, Ss = 2, ks = 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 } warn(`Unsupported blend mode Array: ${e}`); return "source-over" } if (!(e instanceof 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; warn(`Unsupported blend mode: ${e.name}`); return "source-over" } function incrementCachedImageMaskCount(e) { e.fn === je && 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.checked < TimeSlotManager.CHECK_TIME_EVERY) return !1; this.checked = 0; return this.endTime <= Date.now() } reset() { this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS; this.checked = 0 } } class PartialEvaluator { constructor({ xref: e, handler: t, pageIndex: i, idFactory: a, fontCache: s, builtInCMapCache: r, standardFontDataCache: n, globalImageCache: o, systemFontCache: g, options: c = null }) { this.xref = e; this.handler = t; this.pageIndex = i; this.idFactory = a; this.fontCache = s; this.builtInCMapCache = r; this.standardFontDataCache = n; this.globalImageCache = o; this.systemFontCache = g; this.options = c || Ds; this.type3FontRefs = null; this._regionalImageCache = new RegionalImageCache; this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this); ImageResizer.setMaxArea(this.options.canvasMaxAreaInBytes) } get _pdfFunctionFactory() { return shadow(this, "_pdfFunctionFactory", new PDFFunctionFactory({ xref: this.xref, isEvalSupported: this.options.isEvalSupported })) } get parsingType3Font() { return !!this.type3FontRefs } clone(e = null) { const t = Object.create(this); t.options = Object.assign(Object.create(null), this.options, e); return t } hasBlendModes(e, t) { if (!(e instanceof Dict)) return !1; if (e.objId && t.has(e.objId)) return !1; const i = new RefSet(t); e.objId && i.put(e.objId); const a = [e], s = this.xref; for (; a.length;) { const e = a.shift(), t = e.get("ExtGState"); if (t instanceof Dict) for (let e of t.getRawValues()) { if (e instanceof Ref) { if (i.has(e)) continue; try { e = s.fetch(e) } catch (t) { i.put(e); info(`hasBlendModes - ignoring ExtGState: "${t}".`); continue } } if (!(e instanceof Dict)) continue; e.objId && i.put(e.objId); const t = e.get("BM"); if (t instanceof Name) { if ("Normal" !== t.name) return !0 } else if (void 0 !== t && Array.isArray(t)) for (const e of t) if (e instanceof Name && "Normal" !== e.name) return !0 } const r = e.get("XObject"); if (r instanceof Dict) for (let e of r.getRawValues()) { if (e instanceof Ref) { if (i.has(e)) continue; try { e = s.fetch(e) } catch (t) { i.put(e); info(`hasBlendModes - ignoring XObject: "${t}".`); continue } } if (!(e instanceof BaseStream)) continue; e.dict.objId && i.put(e.dict.objId); const t = e.dict.get("Resources"); if (t instanceof Dict && (!t.objId || !i.has(t.objId))) { a.push(t); t.objId && i.put(t.objId) } } } for (const e of i) t.put(e); return !1 } async fetchBuiltInCMap(e) { const t = this.builtInCMapCache.get(e); if (t) return t; let i; if (null !== this.options.cMapUrl) { const t = `${this.options.cMapUrl}${e}.bcmap`, a = await fetch(t); if (!a.ok) throw new Error(`fetchBuiltInCMap: failed to fetch file "${t}" with "${a.statusText}".`); i = { cMapData: new Uint8Array(await a.arrayBuffer()), compressionType: mA.BINARY } } else i = await this.handler.sendWithPromise("FetchBuiltInCMap", { name: e }); i.compressionType !== mA.NONE && this.builtInCMapCache.set(e, i); return i } async fetchStandardFontData(e) { const t = this.standardFontDataCache.get(e); if (t) return new Stream(t); if (this.options.useSystemFonts && "Symbol" !== e && "ZapfDingbats" !== e) return null; const i = Wi()[e]; let a; if (null !== this.options.standardFontDataUrl) { const e = `${this.options.standardFontDataUrl}${i}`, t = await fetch(e); t.ok ? a = new Uint8Array(await t.arrayBuffer()) : warn(`fetchStandardFontData: failed to fetch file "${e}" with "${t.statusText}".`) } else try { a = await this.handler.sendWithPromise("FetchStandardFontData", { filename: i }) } catch (e) { warn(`fetchStandardFontData: failed to fetch file "${i}" with "${e}".`) } if (!a) return null; this.standardFontDataCache.set(e, a); return new Stream(a) } async buildFormXObject(e, t, i, a, s, r, n) { const o = t.dict, g = lookupMatrix(o.getArray("Matrix"), null), c = lookupNormalRect(o.getArray("BBox"), null); let h, l; o.has("OC") && (h = await this.parseMarkedContentProps(o.get("OC"), e)); void 0 !== h && a.addOp(He, ["OC", h]); const C = o.get("Group"); if (C) { l = { matrix: g, bbox: c, smask: i, isolated: !1, knockout: !1 }; let t = null; if (isName(C.get("S"), "Transparency")) { l.isolated = C.get("I") || !1; l.knockout = C.get("K") || !1; if (C.has("CS")) { const i = C.getRaw("CS"), a = ColorSpace.getCached(i, this.xref, n); t = a || await this.parseColorSpace({ cs: i, resources: e, localColorSpaceCache: n }) } } if (i?.backdrop) { t ||= ColorSpace.singletons.rgb; i.backdrop = t.getRgb(i.backdrop, 0) } a.addOp(Oe, [l]) } const Q = C ? [g, null] : [g, c]; a.addOp(Te, Q); await this.getOperatorList({ stream: t, task: s, resources: o.get("Resources") || e, operatorList: a, initialState: r }); a.addOp(qe, []); C && a.addOp(Pe, [l]); void 0 !== h && a.addOp(Ye, []) } _sendImgData(e, t, i = !1) { const a = t ? [t.bitmap || t.data.buffer] : null; return this.parsingType3Font || i ? this.handler.send("commonobj", [e, "Image", t], a) : this.handler.send("obj", [e, this.pageIndex, "Image", t], a) } async buildPaintImageXObject({ resources: e, image: t, isInline: i = !1, operatorList: a, cacheKey: s, localImageCache: r, localColorSpaceCache: n }) { const o = t.dict, g = o.objId, c = o.get("W", "Width"), h = o.get("H", "Height"); if (!c || "number" != typeof c || !h || "number" != typeof h) { warn("Image dimensions are missing, or not numbers."); return } const l = this.options.maxImageSize; if (-1 !== l && c * h > l) { const e = "Image exceeded maximum allowed size and was removed."; if (this.options.ignoreErrors) { warn(e); return } throw new Error(e) } let C; o.has("OC") && (C = await this.parseMarkedContentProps(o.get("OC"), e)); let Q, E; if (o.get("IM", "ImageMask") || !1) { const e = o.get("I", "Interpolate"), i = c + 7 >> 3, n = t.getBytes(i * h), l = o.getArray("D", "Decode"); if (this.parsingType3Font) { Q = PDFImage.createRawMask({ imgArray: n, width: c, height: h, imageIsFromDecodeStream: t instanceof DecodeStream, inverseDecode: l?.[0] > 0, interpolate: e }); Q.cached = !!s; E = [Q]; a.addImageOps(je, E, C); if (s) { const e = { fn: je, args: E, optionalContent: C }; r.set(s, g, e); g && this._regionalImageCache.set(null, g, e) } return } Q = await PDFImage.createMask({ imgArray: n, width: c, height: h, imageIsFromDecodeStream: t instanceof DecodeStream, inverseDecode: l?.[0] > 0, interpolate: e, isOffscreenCanvasSupported: this.options.isOffscreenCanvasSupported }); if (Q.isSingleOpaquePixel) { a.addImageOps(et, [], C); if (s) { const e = { fn: et, args: [], optionalContent: C }; r.set(s, g, e); g && this._regionalImageCache.set(null, g, e) } return } const u = `mask_${this.idFactory.createObjId()}`; a.addDependency(u); Q.dataLen = Q.bitmap ? Q.width * Q.height * 4 : Q.data.length; this._sendImgData(u, Q); E = [{ data: u, width: Q.width, height: Q.height, interpolate: Q.interpolate, count: 1 }]; a.addImageOps(je, E, C); if (s) { const e = { fn: je, args: E, optionalContent: C }; r.set(s, g, e); g && this._regionalImageCache.set(null, g, e) } return } if (i && c + h < 200 && !o.has("SMask") && !o.has("Mask")) { try { const s = new PDFImage({ xref: this.xref, res: e, image: t, isInline: i, pdfFunctionFactory: this._pdfFunctionFactory, localColorSpaceCache: n }); Q = await s.createImageData(!0, !1); a.isOffscreenCanvasSupported = this.options.isOffscreenCanvasSupported; a.addImageOps(ze, [Q], C) } catch (e) { const t = `Unable to decode inline image: "${e}".`; if (!this.options.ignoreErrors) throw new Error(t); warn(t) } return } let u = `img_${this.idFactory.createObjId()}`, d = !1; if (this.parsingType3Font) u = `${this.idFactory.getDocId()}_type3_${u}`; else if (s && g) { d = this.globalImageCache.shouldCache(g, this.pageIndex); if (d) { assert(!i, "Cannot cache an inline image globally."); u = `${this.idFactory.getDocId()}_${u}` } } a.addDependency(u); E = [u, c, h]; a.addImageOps(Ve, E, C); if (d) { if (this.globalImageCache.hasDecodeFailed(g)) { this.globalImageCache.setData(g, { objId: u, fn: Ve, args: E, optionalContent: C, byteSize: 0 }); this._sendImgData(u, null, d); return } if (c * h > 25e4 || o.has("SMask") || o.has("Mask")) { const e = await this.handler.sendWithPromise("commonobj", [u, "CopyLocalImage", { imageRef: g }]); if (e) { this.globalImageCache.setData(g, { objId: u, fn: Ve, args: E, optionalContent: C, byteSize: 0 }); this.globalImageCache.addByteSize(g, e); return } } } PDFImage.buildImage({ xref: this.xref, res: e, image: t, isInline: i, pdfFunctionFactory: this._pdfFunctionFactory, localColorSpaceCache: n }).then((async e => { Q = await e.createImageData(!1, this.options.isOffscreenCanvasSupported); Q.dataLen = Q.bitmap ? Q.width * Q.height * 4 : Q.data.length; Q.ref = g; d && this.globalImageCache.addByteSize(g, Q.dataLen); return this._sendImgData(u, Q, d) })).catch((e => { warn(`Unable to decode image "${u}": "${e}".`); g && this.globalImageCache.addDecodeFailed(g); return this._sendImgData(u, null, d) })); if (s) { const e = { fn: Ve, args: E, optionalContent: C }; r.set(s, g, e); if (g) { this._regionalImageCache.set(null, g, e); d && this.globalImageCache.setData(g, { objId: u, fn: Ve, args: E, optionalContent: C, byteSize: 0 }) } } } handleSMask(e, t, i, a, s, r) { const n = e.get("G"), o = { subtype: e.get("S").name, backdrop: e.get("BC") }, g = e.get("TR"); if (isPDFFunction(g)) { const e = this._pdfFunctionFactory.create(g), t = new Uint8Array(256), i = new Float32Array(1); for (let a = 0; a < 256; a++) { i[0] = a / 255; e(i, 0, i, 0); t[a] = 255 * i[0] | 0 } o.transferMap = t } return this.buildFormXObject(t, n, o, i, a, s.state.clone(), r) } handleTransferFunction(e) { let t; if (Array.isArray(e)) t = e; else { if (!isPDFFunction(e)) return null; t = [e] } const i = []; let a = 0, s = 0; for (const e of t) { const t = this.xref.fetchIfRef(e); a++; if (isName(t, "Identity")) { i.push(null); continue } if (!isPDFFunction(t)) return null; const r = this._pdfFunctionFactory.create(t), n = new Uint8Array(256), o = new Float32Array(1); for (let e = 0; e < 256; e++) { o[0] = e / 255; r(o, 0, o, 0); n[e] = 255 * o[0] | 0 } i.push(n); s++ } return 1 !== a && 4 !== a || 0 === s ? null : i } handleTilingType(e, t, i, a, s, r, n, o) { const g = new OperatorList, c = Dict.merge({ xref: this.xref, dictArray: [s.get("Resources"), i] }); return this.getOperatorList({ stream: a, task: n, resources: c, operatorList: g }).then((function () { const i = g.getIR(), a = getTilingPatternIR(i, s, t); r.addDependencies(g.dependencies); r.addOp(e, a); s.objId && o.set(null, s.objId, { operatorListIR: i, dict: s }) })).catch((e => { if (!(e instanceof AbortException)) { if (!this.options.ignoreErrors) throw e; warn(`handleTilingType - ignoring pattern: "${e}".`) } })) } async handleSetFont(e, t, i, a, s, r, n = null, o = null) { const g = t?.[0] instanceof Name ? t[0].name : null; let c = await this.loadFont(g, i, e, n, o); if (c.font.isType3Font) try { await c.loadType3Data(this, e, s); a.addDependencies(c.type3Dependencies) } catch (e) { c = new TranslatedFont({ loadedName: "g_font_error", font: new ErrorFont(`Type3 font load error: ${e}`), dict: c.font, evaluatorOptions: this.options }) } r.font = c.font; c.send(this.handler); return c.loadedName } handleText(e, t) { const i = t.font, a = i.charsToGlyphs(e); if (i.data) { (!!(t.textRenderingMode & w) || "Pattern" === t.fillColorSpace.name || i.disableFontFace || this.options.disableFontFace) && PartialEvaluator.buildFontPaths(i, a, this.handler, this.options) } return a } ensureStateFont(e) { if (e.font) return; const t = new FormatError("Missing setFont (Tf) operator before text rendering operator."); if (!this.options.ignoreErrors) throw t; warn(`ensureStateFont: "${t}".`) } async setGState({ resources: e, gState: t, operatorList: i, cacheKey: a, task: s, stateManager: r, localGStateCache: n, localColorSpaceCache: o }) { const g = t.objId; let c = !0; const h = []; let l = Promise.resolve(); for (const a of t.getKeys()) { const n = t.get(a); switch (a) { case "Type": break; case "LW": case "LC": case "LJ": case "ML": case "D": case "RI": case "FL": case "CA": case "ca": h.push([a, n]); break; case "Font": c = !1; l = l.then((() => this.handleSetFont(e, null, n[0], i, s, r.state).then((function (e) { i.addDependency(e); h.push([a, [e, n[1]]]) })))); break; case "BM": h.push([a, normalizeBlendMode(n)]); break; case "SMask": if (isName(n, "None")) { h.push([a, !1]); break } if (n instanceof Dict) { c = !1; l = l.then((() => this.handleSMask(n, e, i, s, r, o))); h.push([a, !0]) } else warn("Unsupported SMask type"); break; case "TR": const t = this.handleTransferFunction(n); h.push([a, 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": info("graphic state operator " + a); break; default: info("Unknown graphic state operator " + a) } } await l; h.length > 0 && i.addOp(NA, [h]); c && n.set(a, g, h) } loadFont(e, t, i, a = null, s = null) { const errorFont = async () => new TranslatedFont({ loadedName: "g_font_error", font: new ErrorFont(`Font "${e}" is not available.`), dict: t, evaluatorOptions: this.options }); let r; if (t) t instanceof Ref && (r = t); else { const t = i.get("Font"); t && (r = t.getRaw(e)) } if (r) { if (this.type3FontRefs?.has(r)) return errorFont(); if (this.fontCache.has(r)) return this.fontCache.get(r); try { t = this.xref.fetchIfRef(r) } catch (e) { warn(`loadFont - lookup failed: "${e}".`) } } if (!(t instanceof Dict)) { if (!this.options.ignoreErrors && !this.parsingType3Font) { warn(`Font "${e}" is not available.`); return errorFont() } warn(`Font "${e}" is not available -- attempting to fallback to a default font.`); t = a || PartialEvaluator.fallbackFontDict } if (t.cacheKey && this.fontCache.has(t.cacheKey)) return this.fontCache.get(t.cacheKey); const { promise: n, resolve: o } = Promise.withResolvers(); let g; try { g = this.preEvaluateFont(t); g.cssFontInfo = s } catch (e) { warn(`loadFont - preEvaluateFont failed: "${e}".`); return errorFont() } const { descriptor: c, hash: h } = g, l = r instanceof Ref; let C; if (h && c instanceof Dict) { const e = c.fontAliases ||= Object.create(null); if (e[h]) { const t = e[h].aliasRef; if (l && t && this.fontCache.has(t)) { this.fontCache.putAlias(r, t); return this.fontCache.get(r) } } else e[h] = { fontID: this.idFactory.createFontId() }; l && (e[h].aliasRef = r); C = e[h].fontID } else C = this.idFactory.createFontId(); assert(C?.startsWith("f"), 'The "fontID" must be (correctly) defined.'); if (l) this.fontCache.put(r, n); else { t.cacheKey = `cacheKey_${C}`; this.fontCache.put(t.cacheKey, n) } t.loadedName = `${this.idFactory.getDocId()}_${C}`; this.translateFont(g).then((e => { o(new TranslatedFont({ loadedName: t.loadedName, font: e, dict: t, evaluatorOptions: this.options })) })).catch((e => { warn(`loadFont - translateFont failed: "${e}".`); o(new TranslatedFont({ loadedName: t.loadedName, font: new ErrorFont(e instanceof Error ? e.message : e), dict: t, evaluatorOptions: this.options })) })); return n } buildPath(e, t, i, a = !1) { const s = e.length - 1; i || (i = []); if (s < 0 || e.fnArray[s] !== tt) { if (a) { warn(`Encountered path operator "${t}" inside of a text object.`); e.addOp(GA, null) } let s; switch (t) { case KA: const e = i[0] + i[2], t = i[1] + i[3]; s = [Math.min(i[0], e), Math.min(i[1], t), Math.max(i[0], e), Math.max(i[1], t)]; break; case UA: case LA: s = [i[0], i[1], i[0], i[1]]; break; default: s = [1 / 0, 1 / 0, -1 / 0, -1 / 0] }e.addOp(tt, [[t], i, s]); a && e.addOp(xA, null) } else { const a = e.argsArray[s]; a[0].push(t); a[1].push(...i); const r = a[2]; switch (t) { case KA: const e = i[0] + i[2], t = i[1] + i[3]; r[0] = Math.min(r[0], i[0], e); r[1] = Math.min(r[1], i[1], t); r[2] = Math.max(r[2], i[0], e); r[3] = Math.max(r[3], i[1], t); break; case UA: case LA: r[0] = Math.min(r[0], i[0]); r[1] = Math.min(r[1], i[1]); r[2] = Math.max(r[2], i[0]); r[3] = Math.max(r[3], i[1]) } } } parseColorSpace({ cs: e, resources: t, localColorSpaceCache: i }) { return ColorSpace.parseAsync({ cs: e, xref: this.xref, resources: t, pdfFunctionFactory: this._pdfFunctionFactory, localColorSpaceCache: i }).catch((e => { if (e instanceof AbortException) return null; if (this.options.ignoreErrors) { warn(`parseColorSpace - ignoring ColorSpace: "${e}".`); return null } throw e })) } parseShading({ shading: e, resources: t, localColorSpaceCache: i, localShadingPatternCache: a }) { let s, r = a.get(e); if (r) return r; try { s = Pattern.parseShading(e, this.xref, t, this._pdfFunctionFactory, i).getIR() } catch (t) { if (t instanceof AbortException) return null; if (this.options.ignoreErrors) { warn(`parseShading - ignoring shading: "${t}".`); a.set(e, null); return null } throw t } r = `pattern_${this.idFactory.createObjId()}`; this.parsingType3Font && (r = `${this.idFactory.getDocId()}_type3_${r}`); a.set(e, r); this.parsingType3Font ? this.handler.send("commonobj", [r, "Pattern", s]) : this.handler.send("obj", [r, this.pageIndex, "Pattern", s]); return r } handleColorN(e, t, i, a, s, r, n, o, g, c) { const h = i.pop(); if (h instanceof Name) { const l = s.getRaw(h.name), C = l instanceof Ref && g.getByRef(l); if (C) try { const s = a.base ? a.base.getRgb(i, 0) : null, r = getTilingPatternIR(C.operatorListIR, C.dict, s); e.addOp(t, r); return } catch { } const Q = this.xref.fetchIfRef(l); if (Q) { const s = Q instanceof BaseStream ? Q.dict : Q, h = s.get("PatternType"); if (h === Fs) { const o = a.base ? a.base.getRgb(i, 0) : null; return this.handleTilingType(t, o, r, Q, s, e, n, g) } if (h === Ss) { const i = s.get("Shading"), a = this.parseShading({ shading: i, resources: r, localColorSpaceCache: o, localShadingPatternCache: c }); if (a) { const i = lookupMatrix(s.getArray("Matrix"), null); e.addOp(t, ["Shading", a, i]) } return } throw new FormatError(`Unknown PatternType: ${h}`) } } throw new FormatError(`Unknown PatternName: ${h}`) } _parseVisibilityExpression(e, t, i) { if (++t > 10) { warn("Visibility expression is too deeply nested"); return } const a = e.length, s = this.xref.fetchIfRef(e[0]); if (!(a < 2) && s instanceof Name) { switch (s.name) { case "And": case "Or": case "Not": i.push(s.name); break; default: warn(`Invalid operator ${s.name} in visibility expression`); return }for (let s = 1; s < a; s++) { const a = e[s], r = this.xref.fetchIfRef(a); if (Array.isArray(r)) { const e = []; i.push(e); this._parseVisibilityExpression(r, t, e) } else a instanceof Ref && i.push(a.toString()) } } else warn("Invalid visibility expression") } async parseMarkedContentProps(e, t) { let i; if (e instanceof Name) { i = t.get("Properties").get(e.name) } else { if (!(e instanceof Dict)) throw new FormatError("Optional content properties malformed."); i = e } const a = i.get("Type")?.name; if ("OCG" === a) return { type: a, id: i.objId }; if ("OCMD" === a) { const e = i.get("VE"); if (Array.isArray(e)) { const t = []; this._parseVisibilityExpression(e, 0, t); if (t.length > 0) return { type: "OCMD", expression: t } } const t = i.get("OCGs"); if (Array.isArray(t) || t instanceof Dict) { const e = []; if (Array.isArray(t)) for (const i of t) e.push(i.toString()); else e.push(t.objId); return { type: a, ids: e, policy: i.get("P") instanceof Name ? i.get("P").name : null, expression: null } } if (t instanceof Ref) return { type: a, id: t.toString() } } return null } getOperatorList({ stream: e, task: t, resources: i, operatorList: a, initialState: s = null, fallbackFontDict: r = null }) { i ||= Dict.empty; s ||= new EvalState; if (!a) throw new Error('getOperatorList: missing "operatorList" parameter'); const n = this, o = this.xref; let g = !1; const c = new LocalImageCache, h = new LocalColorSpaceCache, l = new LocalGStateCache, C = new LocalTilingPatternCache, Q = new Map, E = i.get("XObject") || Dict.empty, u = i.get("Pattern") || Dict.empty, d = new StateManager(s), f = new EvaluatorPreprocessor(e, o, d), p = new TimeSlotManager; function closePendingRestoreOPS(e) { for (let e = 0, t = f.savedStatesDepth; e < t; e++)a.addOp(xA, []) } return new Promise((function promiseBody(e, s) { const next = function (t) { Promise.all([t, a.ready]).then((function () { try { promiseBody(e, s) } catch (e) { s(e) } }), s) }; t.ensureNotTerminated(); p.reset(); const m = {}; let y, w, b, D, F, S; for (; !(y = p.check());) { m.args = null; if (!f.read(m)) break; let e = m.args, s = m.fn; switch (0 | s) { case Me: S = e[0] instanceof Name; F = e[0].name; if (S) { const t = c.getByName(F); if (t) { a.addImageOps(t.fn, t.args, t.optionalContent); incrementCachedImageMaskCount(t); e = null; continue } } next(new Promise((function (e, s) { if (!S) throw new FormatError("XObject must be referred to by name."); let r = E.getRaw(F); if (r instanceof Ref) { const t = c.getByRef(r) || n._regionalImageCache.getByRef(r); if (t) { a.addImageOps(t.fn, t.args, t.optionalContent); incrementCachedImageMaskCount(t); e(); return } const i = n.globalImageCache.getData(r, n.pageIndex); if (i) { a.addDependency(i.objId); a.addImageOps(i.fn, i.args, i.optionalContent); e(); return } r = o.fetch(r) } if (!(r instanceof BaseStream)) throw new FormatError("XObject should be a stream"); const g = r.dict.get("Subtype"); if (!(g instanceof Name)) throw new FormatError("XObject should have a Name subtype"); if ("Form" !== g.name) if ("Image" !== g.name) { if ("PS" !== g.name) throw new FormatError(`Unhandled XObject subtype ${g.name}`); info("Ignored XObject subtype PS"); e() } else n.buildPaintImageXObject({ resources: i, image: r, operatorList: a, cacheKey: F, localImageCache: c, localColorSpaceCache: h }).then(e, s); else { d.save(); n.buildFormXObject(i, r, null, a, t, d.state.clone(), h).then((function () { d.restore(); e() }), s) } })).catch((function (e) { if (!(e instanceof AbortException)) { if (!n.options.ignoreErrors) throw e; warn(`getOperatorList - ignoring XObject: "${e}".`) } }))); return; case se: var k = e[1]; next(n.handleSetFont(i, e, null, a, t, d.state, r).then((function (e) { a.addDependency(e); a.addOp(se, [e, k]) }))); return; case $A: g = !0; break; case Ae: g = !1; break; case xe: var R = e[0].cacheKey; if (R) { const t = c.getByName(R); if (t) { a.addImageOps(t.fn, t.args, t.optionalContent); incrementCachedImageMaskCount(t); e = null; continue } } next(n.buildPaintImageXObject({ resources: i, image: e[0], isInline: !0, operatorList: a, cacheKey: R, localImageCache: c, localColorSpaceCache: h })); return; case he: if (!d.state.font) { n.ensureStateFont(d.state); continue } e[0] = n.handleText(e[0], d.state); break; case le: if (!d.state.font) { n.ensureStateFont(d.state); continue } var N = [], G = d.state; for (const t of e[0]) "string" == typeof t ? N.push(...n.handleText(t, G)) : "number" == typeof t && N.push(t); e[0] = N; s = he; break; case Ce: if (!d.state.font) { n.ensureStateFont(d.state); continue } a.addOp(ce); e[0] = n.handleText(e[0], d.state); s = he; break; case Be: if (!d.state.font) { n.ensureStateFont(d.state); continue } a.addOp(ce); a.addOp(te, [e.shift()]); a.addOp(ee, [e.shift()]); e[0] = n.handleText(e[0], d.state); s = he; break; case re: d.state.textRenderingMode = e[0]; break; case de: { const t = ColorSpace.getCached(e[0], o, h); if (t) { d.state.fillColorSpace = t; continue } next(n.parseColorSpace({ cs: e[0], resources: i, localColorSpaceCache: h }).then((function (e) { e && (d.state.fillColorSpace = e) }))); return } case ue: { const t = ColorSpace.getCached(e[0], o, h); if (t) { d.state.strokeColorSpace = t; continue } next(n.parseColorSpace({ cs: e[0], resources: i, localColorSpaceCache: h }).then((function (e) { e && (d.state.strokeColorSpace = e) }))); return } case me: D = d.state.fillColorSpace; e = D.getRgb(e, 0); s = Fe; break; case fe: D = d.state.strokeColorSpace; e = D.getRgb(e, 0); s = De; break; case be: d.state.fillColorSpace = ColorSpace.singletons.gray; e = ColorSpace.singletons.gray.getRgb(e, 0); s = Fe; break; case we: d.state.strokeColorSpace = ColorSpace.singletons.gray; e = ColorSpace.singletons.gray.getRgb(e, 0); s = De; break; case ke: d.state.fillColorSpace = ColorSpace.singletons.cmyk; e = ColorSpace.singletons.cmyk.getRgb(e, 0); s = Fe; break; case Se: d.state.strokeColorSpace = ColorSpace.singletons.cmyk; e = ColorSpace.singletons.cmyk.getRgb(e, 0); s = De; break; case Fe: d.state.fillColorSpace = ColorSpace.singletons.rgb; e = ColorSpace.singletons.rgb.getRgb(e, 0); break; case De: d.state.strokeColorSpace = ColorSpace.singletons.rgb; e = ColorSpace.singletons.rgb.getRgb(e, 0); break; case ye: D = d.state.fillColorSpace; if ("Pattern" === D.name) { next(n.handleColorN(a, ye, e, D, u, i, t, h, C, Q)); return } e = D.getRgb(e, 0); s = Fe; break; case pe: D = d.state.strokeColorSpace; if ("Pattern" === D.name) { next(n.handleColorN(a, pe, e, D, u, i, t, h, C, Q)); return } e = D.getRgb(e, 0); s = De; break; case Re: var x = i.get("Shading"); if (!x) throw new FormatError("No shading resource found"); var M = x.get(e[0].name); if (!M) throw new FormatError("No shading object found"); const f = n.parseShading({ shading: M, resources: i, localColorSpaceCache: h, localShadingPatternCache: Q }); if (!f) continue; e = [f]; s = Re; break; case NA: S = e[0] instanceof Name; F = e[0].name; if (S) { const t = l.getByName(F); if (t) { t.length > 0 && a.addOp(NA, [t]); e = null; continue } } next(new Promise((function (e, s) { if (!S) throw new FormatError("GState must be referred to by name."); const r = i.get("ExtGState"); if (!(r instanceof Dict)) throw new FormatError("ExtGState should be a dictionary."); const o = r.get(F); if (!(o instanceof Dict)) throw new FormatError("GState should be a dictionary."); n.setGState({ resources: i, gState: o, operatorList: a, cacheKey: F, task: t, stateManager: d, localGStateCache: l, localColorSpaceCache: h }).then(e, s) })).catch((function (e) { if (!(e instanceof AbortException)) { if (!n.options.ignoreErrors) throw e; warn(`getOperatorList - ignoring ExtGState: "${e}".`) } }))); return; case UA: case LA: case JA: case HA: case YA: case vA: case KA: n.buildPath(a, s, e, g); continue; case Ue: case Le: case ve: case Ke: continue; case He: if (!(e[0] instanceof Name)) { warn(`Expected name for beginMarkedContentProps arg0=${e[0]}`); a.addOp(He, ["OC", null]); continue } if ("OC" === e[0].name) { next(n.parseMarkedContentProps(e[1], i).then((e => { a.addOp(He, ["OC", e]) })).catch((e => { if (!(e instanceof AbortException)) { if (!n.options.ignoreErrors) throw e; warn(`getOperatorList - ignoring beginMarkedContentProps: "${e}".`); a.addOp(He, ["OC", null]) } }))); return } e = [e[0].name, e[1] instanceof Dict ? e[1].get("MCID") : null]; break; default: if (null !== e) { for (w = 0, b = e.length; w < b && !(e[w] instanceof Dict); w++); if (w < b) { warn("getOperatorList - ignoring operator: " + s); continue } } }a.addOp(s, e) } if (y) next(ks); else { closePendingRestoreOPS(); e() } })).catch((e => { if (!(e instanceof AbortException)) { if (!this.options.ignoreErrors) throw e; warn(`getOperatorList - ignoring errors during "${t.name}" task: "${e}".`); closePendingRestoreOPS() } })) } getTextContent({ stream: e, task: t, resources: s, stateManager: r = null, includeMarkedContent: n = !1, sink: o, seenStyles: g = new Set, viewBox: c, lang: h = null, markedContentData: l = null, disableNormalization: C = !1, keepWhiteSpace: Q = !1 }) { s ||= Dict.empty; r ||= new StateManager(new TextState); n && (l ||= { level: 0 }); const E = { items: [], styles: Object.create(null), lang: h }, u = { 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 }, d = [" ", " "]; let f = 0; function saveLastChar(e) { const t = (f + 1) % 2, i = " " !== d[f] && " " === d[t]; d[f] = e; f = t; return !Q && i } function shouldAddWhitepsace() { return !Q && " " !== d[f] && " " === d[(f + 1) % 2] } function resetLastChars() { d[0] = d[1] = " "; f = 0 } const p = this, m = this.xref, y = []; let w = null; const b = new LocalImageCache, D = new LocalGStateCache, F = new EvaluatorPreprocessor(e, m, r); let S; function pushWhitespace({ width: e = 0, height: t = 0, transform: i = u.prevTransform, fontName: a = u.fontName }) { E.items.push({ str: " ", dir: "ltr", width: e, height: t, transform: i, fontName: a, hasEOL: !1 }) } function getCurrentTextTransform() { const e = S.font, t = [S.fontSize * S.textHScale, 0, 0, S.fontSize, 0, S.textRise]; if (e.isType3Font && (S.fontSize <= 1 || e.isCharBBox) && !isArrayEqual(S.fontMatrix, a)) { const i = e.bbox[3] - e.bbox[1]; i > 0 && (t[3] *= i * S.fontMatrix[3]) } return Util.transform(S.ctm, Util.transform(S.textMatrix, t)) } function ensureTextContentItem() { if (u.initialized) return u; const { font: e, loadedName: t } = S; if (!g.has(t)) { g.add(t); E.styles[t] = { fontFamily: e.fallbackName, ascent: e.ascent, descent: e.descent, vertical: e.vertical }; if (p.options.fontExtraProperties && e.systemFontInfo) { const i = E.styles[t]; i.fontSubstitution = e.systemFontInfo.css; i.fontSubstitutionLoadedName = e.systemFontInfo.loadedName } } u.fontName = t; const i = u.transform = getCurrentTextTransform(); if (e.vertical) { u.width = u.totalWidth = Math.hypot(i[0], i[1]); u.height = u.totalHeight = 0; u.vertical = !0 } else { u.width = u.totalWidth = 0; u.height = u.totalHeight = Math.hypot(i[2], i[3]); u.vertical = !1 } const a = Math.hypot(S.textLineMatrix[0], S.textLineMatrix[1]), s = Math.hypot(S.ctm[0], S.ctm[1]); u.textAdvanceScale = s * a; const { fontSize: r } = S; u.trackingSpaceMin = .102 * r; u.notASpace = .03 * r; u.negativeSpaceMax = -.2 * r; u.spaceInFlowMin = .102 * r; u.spaceInFlowMax = .6 * r; u.hasEOL = !1; u.initialized = !0; return u } function updateAdvanceScale() { if (!u.initialized) return; const e = Math.hypot(S.textLineMatrix[0], S.textLineMatrix[1]), t = Math.hypot(S.ctm[0], S.ctm[1]) * e; if (t !== u.textAdvanceScale) { if (u.vertical) { u.totalHeight += u.height * u.textAdvanceScale; u.height = 0 } else { u.totalWidth += u.width * u.textAdvanceScale; u.width = 0 } u.textAdvanceScale = t } } function runBidiTransform(e) { let t = e.str.join(""); C || (t = function normalizeUnicode(e) { if (!gt) { gt = /([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu; It = new Map([["ſt", "ſt"]]) } return e.replaceAll(gt, ((e, t, i) => t ? t.normalize("NFKC") : It.get(i))) }(t)); const i = bidi(t, -1, e.vertical); return { str: i.str, dir: i.dir, width: Math.abs(e.totalWidth), height: Math.abs(e.totalHeight), transform: e.transform, fontName: e.fontName, hasEOL: e.hasEOL } } async function handleSetFont(e, i) { const r = await p.loadFont(e, i, s); if (r.font.isType3Font) try { await r.loadType3Data(p, s, t) } catch { } S.loadedName = r.loadedName; S.font = r.font; S.fontMatrix = r.font.fontMatrix || a } function applyInverseRotation(e, t, i) { const a = Math.hypot(i[0], i[1]); return [(i[0] * e + i[1] * t) / a, (i[2] * e + i[3] * t) / a] } function compareWithLastPosition(e) { const t = getCurrentTextTransform(); let i = t[4], a = t[5]; if (S.font?.vertical) { if (i < c[0] || i > c[2] || a + e < c[1] || a > c[3]) return !1 } else if (i + e < c[0] || i > c[2] || a < c[1] || a > c[3]) return !1; if (!S.font || !u.prevTransform) return !0; let s = u.prevTransform[4], r = u.prevTransform[5]; if (s === i && r === a) return !0; let n = -1; t[0] && 0 === t[1] && 0 === t[2] ? n = t[0] > 0 ? 0 : 180 : t[1] && 0 === t[0] && 0 === t[3] && (n = t[1] > 0 ? 90 : 270); switch (n) { case 0: break; case 90: [i, a] = [a, i];[s, r] = [r, s]; break; case 180: [i, a, s, r] = [-i, -a, -s, -r]; break; case 270: [i, a] = [-a, -i];[s, r] = [-r, -s]; break; default: [i, a] = applyInverseRotation(i, a, t);[s, r] = applyInverseRotation(s, r, u.prevTransform) }if (S.font.vertical) { const e = (r - a) / u.textAdvanceScale, t = i - s, n = Math.sign(u.height); if (e < n * u.negativeSpaceMax) { if (Math.abs(t) > .5 * u.width) { appendEOL(); return !0 } resetLastChars(); flushTextContentItem(); return !0 } if (Math.abs(t) > u.width) { appendEOL(); return !0 } e <= n * u.notASpace && resetLastChars(); if (e <= n * u.trackingSpaceMin) if (shouldAddWhitepsace()) { resetLastChars(); flushTextContentItem(); pushWhitespace({ height: Math.abs(e) }) } else u.height += e; else if (!addFakeSpaces(e, u.prevTransform, n)) if (0 === u.str.length) { resetLastChars(); pushWhitespace({ height: Math.abs(e) }) } else u.height += e; Math.abs(t) > .25 * u.width && flushTextContentItem(); return !0 } const o = (i - s) / u.textAdvanceScale, g = a - r, h = Math.sign(u.width); if (o < h * u.negativeSpaceMax) { if (Math.abs(g) > .5 * u.height) { appendEOL(); return !0 } resetLastChars(); flushTextContentItem(); return !0 } if (Math.abs(g) > u.height) { appendEOL(); return !0 } o <= h * u.notASpace && resetLastChars(); if (o <= h * u.trackingSpaceMin) if (shouldAddWhitepsace()) { resetLastChars(); flushTextContentItem(); pushWhitespace({ width: Math.abs(o) }) } else u.width += o; else if (!addFakeSpaces(o, u.prevTransform, h)) if (0 === u.str.length) { resetLastChars(); pushWhitespace({ width: Math.abs(o) }) } else u.width += o; Math.abs(g) > .25 * u.height && flushTextContentItem(); return !0 } function buildTextContentItem({ chars: e, extraSpacing: t }) { const i = S.font; if (!e) { const e = S.charSpacing + t; e && (i.vertical ? S.translateTextMatrix(0, -e) : S.translateTextMatrix(e * S.textHScale, 0)); Q && compareWithLastPosition(0); return } const a = i.charsToGlyphs(e), s = S.fontMatrix[0] * S.fontSize; for (let e = 0, r = a.length; e < r; e++) { const n = a[e], { category: o } = n; if (o.isInvisibleFormatMark) continue; let g = S.charSpacing + (e + 1 === r ? t : 0), c = n.width; i.vertical && (c = n.vmetric ? n.vmetric[0] : -c); let h = c * s; if (!Q && o.isWhitespace) { if (i.vertical) { g += -h + S.wordSpacing; S.translateTextMatrix(0, -g) } else { g += h + S.wordSpacing; S.translateTextMatrix(g * S.textHScale, 0) } saveLastChar(" "); continue } if (!o.isZeroWidthDiacritic && !compareWithLastPosition(h)) { i.vertical ? S.translateTextMatrix(0, h) : S.translateTextMatrix(h * S.textHScale, 0); continue } const l = ensureTextContentItem(); o.isZeroWidthDiacritic && (h = 0); if (i.vertical) { S.translateTextMatrix(0, h); h = Math.abs(h); l.height += h } else { h *= S.textHScale; S.translateTextMatrix(h, 0); l.width += h } h && (l.prevTransform = getCurrentTextTransform()); const C = n.unicode; saveLastChar(C) && l.str.push(" "); l.str.push(C); g && (i.vertical ? S.translateTextMatrix(0, -g) : S.translateTextMatrix(g * S.textHScale, 0)) } } function appendEOL() { resetLastChars(); if (u.initialized) { u.hasEOL = !0; flushTextContentItem() } else E.items.push({ str: "", dir: "ltr", width: 0, height: 0, transform: getCurrentTextTransform(), fontName: S.loadedName, hasEOL: !0 }) } function addFakeSpaces(e, t, i) { if (i * u.spaceInFlowMin <= e && e <= i * u.spaceInFlowMax) { if (u.initialized) { resetLastChars(); u.str.push(" ") } return !1 } const a = u.fontName; let s = 0; if (u.vertical) { s = e; e = 0 } flushTextContentItem(); resetLastChars(); pushWhitespace({ width: Math.abs(e), height: Math.abs(s), transform: t || getCurrentTextTransform(), fontName: a }); return !0 } function flushTextContentItem() { if (u.initialized && u.str) { u.vertical ? u.totalHeight += u.height * u.textAdvanceScale : u.totalWidth += u.width * u.textAdvanceScale; E.items.push(runBidiTransform(u)); u.initialized = !1; u.str.length = 0 } } function enqueueChunk(e = !1) { const t = E.items.length; if (0 !== t && !(e && t < 10)) { o.enqueue(E, t); E.items = []; E.styles = Object.create(null) } } const k = new TimeSlotManager; return new Promise((function promiseBody(e, a) { const next = function (t) { enqueueChunk(!0); Promise.all([t, o.ready]).then((function () { try { promiseBody(e, a) } catch (e) { a(e) } }), a) }; t.ensureNotTerminated(); k.reset(); const u = {}; let d, f = []; for (; !(d = k.check());) { f.length = 0; u.args = f; if (!F.read(u)) break; const e = S; S = r.state; const a = u.fn; f = u.args; switch (0 | a) { case se: var R = f[0].name, N = f[1]; if (S.font && R === S.fontName && N === S.fontSize) break; flushTextContentItem(); S.fontName = R; S.fontSize = N; next(handleSetFont(R, null)); return; case ne: S.textRise = f[0]; break; case ie: S.textHScale = f[0] / 100; break; case ae: S.leading = f[0]; break; case oe: S.translateTextLineMatrix(f[0], f[1]); S.textMatrix = S.textLineMatrix.slice(); break; case ge: S.leading = -f[1]; S.translateTextLineMatrix(f[0], f[1]); S.textMatrix = S.textLineMatrix.slice(); break; case ce: S.carriageReturn(); break; case Ie: S.setTextMatrix(f[0], f[1], f[2], f[3], f[4], f[5]); S.setTextLineMatrix(f[0], f[1], f[2], f[3], f[4], f[5]); updateAdvanceScale(); break; case ee: S.charSpacing = f[0]; break; case te: S.wordSpacing = f[0]; break; case $A: S.textMatrix = i.slice(); S.textLineMatrix = i.slice(); break; case le: if (!r.state.font) { p.ensureStateFont(r.state); continue } const a = (S.font.vertical ? 1 : -1) * S.fontSize / 1e3, u = f[0]; for (let e = 0, t = u.length; e < t; e++) { const t = u[e]; if ("string" == typeof t) y.push(t); else if ("number" == typeof t && 0 !== t) { const e = y.join(""); y.length = 0; buildTextContentItem({ chars: e, extraSpacing: t * a }) } } if (y.length > 0) { const e = y.join(""); y.length = 0; buildTextContentItem({ chars: e, extraSpacing: 0 }) } break; case he: if (!r.state.font) { p.ensureStateFont(r.state); continue } buildTextContentItem({ chars: f[0], extraSpacing: 0 }); break; case Ce: if (!r.state.font) { p.ensureStateFont(r.state); continue } S.carriageReturn(); buildTextContentItem({ chars: f[0], extraSpacing: 0 }); break; case Be: if (!r.state.font) { p.ensureStateFont(r.state); continue } S.wordSpacing = f[0]; S.charSpacing = f[1]; S.carriageReturn(); buildTextContentItem({ chars: f[2], extraSpacing: 0 }); break; case Me: flushTextContentItem(); w || (w = s.get("XObject") || Dict.empty); var G = f[0] instanceof Name, x = f[0].name; if (G && b.getByName(x)) break; next(new Promise((function (e, i) { if (!G) throw new FormatError("XObject must be referred to by name."); let a = w.getRaw(x); if (a instanceof Ref) { if (b.getByRef(a)) { e(); return } if (p.globalImageCache.getData(a, p.pageIndex)) { e(); return } a = m.fetch(a) } if (!(a instanceof BaseStream)) throw new FormatError("XObject should be a stream"); const E = a.dict.get("Subtype"); if (!(E instanceof Name)) throw new FormatError("XObject should have a Name subtype"); if ("Form" !== E.name) { b.set(x, a.dict.objId, !0); e(); return } const u = r.state.clone(), d = new StateManager(u), f = lookupMatrix(a.dict.getArray("Matrix"), null); f && d.transform(f); enqueueChunk(); const y = { enqueueInvoked: !1, enqueue(e, t) { this.enqueueInvoked = !0; o.enqueue(e, t) }, get desiredSize() { return o.desiredSize }, get ready() { return o.ready } }; p.getTextContent({ stream: a, task: t, resources: a.dict.get("Resources") || s, stateManager: d, includeMarkedContent: n, sink: y, seenStyles: g, viewBox: c, lang: h, markedContentData: l, disableNormalization: C, keepWhiteSpace: Q }).then((function () { y.enqueueInvoked || b.set(x, a.dict.objId, !0); e() }), i) })).catch((function (e) { if (!(e instanceof AbortException)) { if (!p.options.ignoreErrors) throw e; warn(`getTextContent - ignoring XObject: "${e}".`) } }))); return; case NA: G = f[0] instanceof Name; x = f[0].name; if (G && D.getByName(x)) break; next(new Promise((function (e, t) { if (!G) throw new FormatError("GState must be referred to by name."); const i = s.get("ExtGState"); if (!(i instanceof Dict)) throw new FormatError("ExtGState should be a dictionary."); const a = i.get(x); if (!(a instanceof Dict)) throw new FormatError("GState should be a dictionary."); const r = a.get("Font"); if (r) { flushTextContentItem(); S.fontName = null; S.fontSize = r[1]; handleSetFont(null, r[0]).then(e, t) } else { D.set(x, a.objId, !0); e() } })).catch((function (e) { if (!(e instanceof AbortException)) { if (!p.options.ignoreErrors) throw e; warn(`getTextContent - ignoring ExtGState: "${e}".`) } }))); return; case Je: flushTextContentItem(); if (n) { l.level++; E.items.push({ type: "beginMarkedContent", tag: f[0] instanceof Name ? f[0].name : null }) } break; case He: flushTextContentItem(); if (n) { l.level++; let e = null; f[1] instanceof Dict && (e = f[1].get("MCID")); E.items.push({ type: "beginMarkedContentProps", id: Number.isInteger(e) ? `${p.idFactory.getPageObjId()}_mc${e}` : null, tag: f[0] instanceof Name ? f[0].name : null }) } break; case Ye: flushTextContentItem(); if (n) { if (0 === l.level) break; l.level--; E.items.push({ type: "endMarkedContent" }) } break; case xA: !e || e.font === S.font && e.fontSize === S.fontSize && e.fontName === S.fontName || flushTextContentItem() }if (E.items.length >= o.desiredSize) { d = !0; break } } if (d) next(ks); else { flushTextContentItem(); enqueueChunk(); e() } })).catch((e => { if (!(e instanceof AbortException)) { if (!this.options.ignoreErrors) throw e; warn(`getTextContent - ignoring errors during "${t.name}" task: "${e}".`); flushTextContentItem(); enqueueChunk() } })) } async extractDataStructures(e, t) { const i = this.xref; let a; const s = this.readToUnicode(t.toUnicode); if (t.composite) { const i = e.get("CIDSystemInfo"); i instanceof Dict && (t.cidSystemInfo = { registry: stringToPDFString(i.get("Registry")), ordering: stringToPDFString(i.get("Ordering")), supplement: i.get("Supplement") }); try { const t = e.get("CIDToGIDMap"); t instanceof BaseStream && (a = t.getBytes()) } catch (e) { if (!this.options.ignoreErrors) throw e; warn(`extractDataStructures - ignoring CIDToGIDMap data: "${e}".`) } } const r = []; let n, o = null; if (e.has("Encoding")) { n = e.get("Encoding"); if (n instanceof Dict) { o = n.get("BaseEncoding"); o = o instanceof Name ? o.name : null; if (n.has("Differences")) { const e = n.get("Differences"); let t = 0; for (const a of e) { const e = i.fetchIfRef(a); if ("number" == typeof e) t = e; else { if (!(e instanceof Name)) throw new FormatError(`Invalid entry in 'Differences' array: ${e}`); r[t++] = e.name } } } } else if (n instanceof Name) o = n.name; else { const e = "Encoding is not a Name nor a Dict"; if (!this.options.ignoreErrors) throw new FormatError(e); warn(e) } "MacRomanEncoding" !== o && "MacExpertEncoding" !== o && "WinAnsiEncoding" !== o && (o = null) } const g = !t.file || t.isInternalFont, c = Zi()[t.name]; o && g && c && (o = null); if (o) t.defaultEncoding = getEncoding(o); else { const e = !!(t.flags & Ti), i = !!(t.flags & qi); n = fi; "TrueType" !== t.type || i || (n = pi); if (e || c) { n = di; g && (/Symbol/i.test(t.name) ? n = mi : /Dingbats/i.test(t.name) ? n = yi : /Wingdings/i.test(t.name) && (n = pi)) } t.defaultEncoding = n } t.differences = r; t.baseEncodingName = o; t.hasEncoding = !!o || r.length > 0; t.dict = e; t.toUnicode = await s; const h = await this.buildToUnicode(t); t.toUnicode = h; a && (t.cidToGidMap = this.readCidToGidMap(a, h)); return t } _simpleFontToUnicode(e, t = !1) { assert(!e.composite, "Must be a simple font."); const i = [], a = e.defaultEncoding.slice(), s = e.baseEncodingName, r = e.differences; for (const e in r) { const t = r[e]; ".notdef" !== t && (a[e] = t) } const n = Ni(); for (const r in a) { let o = a[r]; if ("" === o) continue; let g = n[o]; if (void 0 !== g) { i[r] = String.fromCharCode(g); continue } let c = 0; switch (o[0]) { case "G": 3 === o.length && (c = parseInt(o.substring(1), 16)); break; case "g": 5 === o.length && (c = parseInt(o.substring(1), 16)); break; case "C": case "c": if (o.length >= 3 && o.length <= 4) { const i = o.substring(1); if (t) { c = parseInt(i, 16); break } c = +i; if (Number.isNaN(c) && Number.isInteger(parseInt(i, 16))) return this._simpleFontToUnicode(e, !0) } break; case "u": g = getUnicodeForGlyph(o, n); -1 !== g && (c = g); break; default: switch (o) { case "f_h": case "f_t": case "T_h": i[r] = o.replaceAll("_", ""); continue } }if (c > 0 && c <= 1114111 && Number.isInteger(c)) { if (s && c === +r) { const e = getEncoding(s); if (e && (o = e[r])) { i[r] = String.fromCharCode(n[o]); continue } } i[r] = String.fromCodePoint(c) } } return i } 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 ToUnicodeMap(this._simpleFontToUnicode(e)); if (e.composite && (e.cMap.builtInCMap && !(e.cMap instanceof 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: i } = e.cidSystemInfo, a = Name.get(`${t}-${i}-UCS2`), s = await CMapFactory.create({ encoding: a, fetchBuiltInCMap: this._fetchBuiltInCMapBound, useCMap: null }), r = [], n = []; e.cMap.forEach((function (e, t) { if (t > 65535) throw new FormatError("Max size of CID is 65,535"); const i = s.lookup(t); if (i) { n.length = 0; for (let e = 0, t = i.length; e < t; e += 2)n.push((i.charCodeAt(e) << 8) + i.charCodeAt(e + 1)); r[e] = String.fromCharCode(...n) } })); return new ToUnicodeMap(r) } return new IdentityToUnicodeMap(e.firstChar, e.lastChar) } async readToUnicode(e) { if (!e) return null; if (e instanceof Name) { const t = await CMapFactory.create({ encoding: e, fetchBuiltInCMap: this._fetchBuiltInCMapBound, useCMap: null }); return t instanceof IdentityCMap ? new IdentityToUnicodeMap(0, 65535) : new ToUnicodeMap(t.getMap()) } if (e instanceof BaseStream) try { const t = await CMapFactory.create({ encoding: e, fetchBuiltInCMap: this._fetchBuiltInCMapBound, useCMap: null }); if (t instanceof IdentityCMap) return new IdentityToUnicodeMap(0, 65535); const i = new Array(t.length); t.forEach((function (e, t) { if ("number" == typeof t) { i[e] = String.fromCodePoint(t); return } const a = []; for (let e = 0; e < t.length; e += 2) { const i = t.charCodeAt(e) << 8 | t.charCodeAt(e + 1); if (55296 != (63488 & i)) { a.push(i); continue } e += 2; const s = t.charCodeAt(e) << 8 | t.charCodeAt(e + 1); a.push(((1023 & i) << 10) + (1023 & s) + 65536) } i[e] = String.fromCodePoint(...a) })); return new ToUnicodeMap(i) } catch (e) { if (e instanceof AbortException) return null; if (this.options.ignoreErrors) { warn(`readToUnicode - ignoring ToUnicode data: "${e}".`); return null } throw e } return null } readCidToGidMap(e, t) { const i = []; for (let a = 0, s = e.length; a < s; a++) { const s = e[a++] << 8 | e[a], r = a >> 1; (0 !== s || t.has(r)) && (i[r] = s) } return i } extractWidths(e, t, i) { const a = this.xref; let s = [], r = 0; const n = []; let o; if (i.composite) { const t = e.get("DW"); r = Number.isInteger(t) ? t : 1e3; const g = e.get("W"); if (Array.isArray(g)) for (let e = 0, t = g.length; e < t; e++) { let t = a.fetchIfRef(g[e++]); if (!Number.isInteger(t)) break; const i = a.fetchIfRef(g[e]); if (Array.isArray(i)) for (const e of i) { const i = a.fetchIfRef(e); "number" == typeof i && (s[t] = i); t++ } else { if (!Number.isInteger(i)) break; { const r = a.fetchIfRef(g[++e]); if ("number" != typeof r) continue; for (let e = t; e <= i; e++)s[e] = r } } } if (i.vertical) { const t = e.getArray("DW2"); let i = isNumberArray(t, 2) ? t : [880, -1e3]; o = [i[1], .5 * r, i[0]]; i = e.get("W2"); if (Array.isArray(i)) for (let e = 0, t = i.length; e < t; e++) { let t = a.fetchIfRef(i[e++]); if (!Number.isInteger(t)) break; const s = a.fetchIfRef(i[e]); if (Array.isArray(s)) for (let e = 0, i = s.length; e < i; e++) { const i = [a.fetchIfRef(s[e++]), a.fetchIfRef(s[e++]), a.fetchIfRef(s[e])]; isNumberArray(i, null) && (n[t] = i); t++ } else { if (!Number.isInteger(s)) break; { const r = [a.fetchIfRef(i[++e]), a.fetchIfRef(i[++e]), a.fetchIfRef(i[++e])]; if (!isNumberArray(r, null)) continue; for (let e = t; e <= s; e++)n[e] = r } } } } } else { const n = e.get("Widths"); if (Array.isArray(n)) { let e = i.firstChar; for (const t of n) { const i = a.fetchIfRef(t); "number" == typeof i && (s[e] = i); e++ } const o = t.get("MissingWidth"); r = "number" == typeof o ? o : 0 } else { const t = e.get("BaseFont"); if (t instanceof Name) { const e = this.getBaseFontMetrics(t.name); s = this.buildCharCodeToWidth(e.widths, i); r = e.defaultWidth } } } let g = !0, c = r; for (const e in s) { const t = s[e]; if (t) if (c) { if (c !== t) { g = !1; break } } else c = t } g ? i.flags |= vi : i.flags &= ~vi; i.defaultWidth = r; i.widths = s; i.defaultVMetrics = o; i.vmetrics = n } isSerifFont(e) { const t = e.split("-", 1)[0]; return t in ji() || /serif/gi.test(t) } getBaseFontMetrics(e) { let t = 0, i = Object.create(null), a = !1; let s = Pi()[e] || e; const r = Aa(); s in r || (s = this.isSerifFont(e) ? "Times-Roman" : "Helvetica"); const n = r[s]; if ("number" == typeof n) { t = n; a = !0 } else i = n(); return { defaultWidth: t, monospace: a, widths: i } } buildCharCodeToWidth(e, t) { const i = Object.create(null), a = t.differences, s = t.defaultEncoding; for (let t = 0; t < 256; t++)t in a && e[a[t]] ? i[t] = e[a[t]] : t in s && e[s[t]] && (i[t] = e[s[t]]); return i } preEvaluateFont(e) { const t = e; let i = e.get("Subtype"); if (!(i instanceof Name)) throw new FormatError("invalid font Subtype"); let a, s = !1; if ("Type0" === i.name) { const t = e.get("DescendantFonts"); if (!t) throw new FormatError("Descendant fonts are not specified"); if (!((e = Array.isArray(t) ? this.xref.fetchIfRef(t[0]) : t) instanceof Dict)) throw new FormatError("Descendant font is not a dictionary."); i = e.get("Subtype"); if (!(i instanceof Name)) throw new FormatError("invalid font Subtype"); s = !0 } let r = e.get("FirstChar"); Number.isInteger(r) || (r = 0); let n = e.get("LastChar"); Number.isInteger(n) || (n = s ? 65535 : 255); const o = e.get("FontDescriptor"), g = e.get("ToUnicode") || t.get("ToUnicode"); if (o) { a = new MurmurHash3_64; const i = t.getRaw("Encoding"); if (i instanceof Name) a.update(i.name); else if (i instanceof Ref) a.update(i.toString()); else if (i instanceof Dict) for (const e of i.getRawValues()) if (e instanceof Name) a.update(e.name); else if (e instanceof Ref) a.update(e.toString()); else if (Array.isArray(e)) { const t = e.length, i = new Array(t); for (let a = 0; a < t; a++) { const t = e[a]; t instanceof Name ? i[a] = t.name : ("number" == typeof t || t instanceof Ref) && (i[a] = t.toString()) } a.update(i.join()) } a.update(`${r}-${n}`); if (g instanceof BaseStream) { const e = g.str || g, t = e.buffer ? new Uint8Array(e.buffer.buffer, 0, e.bufferLength) : new Uint8Array(e.bytes.buffer, e.start, e.end - e.start); a.update(t) } else g instanceof Name && a.update(g.name); const o = e.get("Widths") || t.get("Widths"); if (Array.isArray(o)) { const e = []; for (const t of o) ("number" == typeof t || t instanceof Ref) && e.push(t.toString()); a.update(e.join()) } if (s) { a.update("compositeFont"); const i = e.get("W") || t.get("W"); if (Array.isArray(i)) { const e = []; for (const t of i) if ("number" == typeof t || t instanceof Ref) e.push(t.toString()); else if (Array.isArray(t)) { const i = []; for (const e of t) ("number" == typeof e || e instanceof Ref) && i.push(e.toString()); e.push(`[${i.join()}]`) } a.update(e.join()) } const s = e.getRaw("CIDToGIDMap") || t.getRaw("CIDToGIDMap"); s instanceof Name ? a.update(s.name) : s instanceof Ref ? a.update(s.toString()) : s instanceof BaseStream && a.update(s.peekBytes()) } } return { descriptor: o, dict: e, baseDict: t, composite: s, type: i.name, firstChar: r, lastChar: n, toUnicode: g, hash: a ? a.hexdigest() : "" } } async translateFont({ descriptor: e, dict: t, baseDict: i, composite: s, type: r, firstChar: n, lastChar: o, toUnicode: g, cssFontInfo: c }) { const h = "Type3" === r; if (!e) { if (!h) { let e = t.get("BaseFont"); if (!(e instanceof Name)) throw new FormatError("Base font is not specified"); e = e.name.replaceAll(/[,_]/g, "-"); const a = this.getBaseFontMetrics(e), s = e.split("-", 1)[0], c = (this.isSerifFont(s) ? Ki : 0) | (a.monospace ? vi : 0) | (Zi()[s] ? Ti : qi), l = { type: r, name: e, loadedName: i.loadedName, systemFontInfo: null, widths: a.widths, defaultWidth: a.defaultWidth, isSimulatedFlags: !0, flags: c, firstChar: n, lastChar: o, toUnicode: g, xHeight: 0, capHeight: 0, italicAngle: 0, isType3Font: h }, C = t.get("Widths"), Q = getStandardFontName(e); let E = null; if (Q) { E = await this.fetchStandardFontData(Q); l.isInternalFont = !!E } !l.isInternalFont && this.options.useSystemFonts && (l.systemFontInfo = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, e, Q, r)); const u = await this.extractDataStructures(t, l); if (Array.isArray(C)) { const e = []; let t = n; for (const i of C) { const a = this.xref.fetchIfRef(i); "number" == typeof a && (e[t] = a); t++ } u.widths = e } else u.widths = this.buildCharCodeToWidth(a.widths, u); return new Font(e, E, u) } { const i = lookupNormalRect(t.getArray("FontBBox"), [0, 0, 0, 0]); (e = new Dict(null)).set("FontName", Name.get(r)); e.set("FontBBox", i) } } let l = e.get("FontName"), C = t.get("BaseFont"); "string" == typeof l && (l = Name.get(l)); "string" == typeof C && (C = Name.get(C)); const Q = l?.name, E = C?.name; if (!h && Q !== E) { info(`The FontDescriptor's FontName is "${Q}" but should be the same as the Font's BaseFont "${E}".`); Q && E && (E.startsWith(Q) || !isKnownFontName(Q) && isKnownFontName(E)) && (l = null) } l ||= C; if (!(l instanceof Name)) throw new FormatError("invalid font name"); let u, d, f, p, m; try { u = e.get("FontFile", "FontFile2", "FontFile3") } catch (e) { if (!this.options.ignoreErrors) throw e; warn(`translateFont - fetching "${l.name}" font file: "${e}".`); u = new NullStream } let y = !1, w = null, b = null; if (u) { if (u.dict) { const e = u.dict.get("Subtype"); e instanceof Name && (d = e.name); f = u.dict.get("Length1"); p = u.dict.get("Length2"); m = u.dict.get("Length3") } } else if (c) { const e = getXfaFontName(l.name); if (e) { c.fontFamily = `${c.fontFamily}-PdfJS-XFA`; c.metrics = e.metrics || null; w = e.factors || null; u = await this.fetchStandardFontData(e.name); y = !!u; i = t = getXfaFontDict(l.name); s = !0 } } else if (!h) { const e = getStandardFontName(l.name); if (e) { u = await this.fetchStandardFontData(e); y = !!u } !y && this.options.useSystemFonts && (b = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, l.name, e, r)) } const D = lookupMatrix(t.getArray("FontMatrix"), a), F = lookupNormalRect(e.getArray("FontBBox") || t.getArray("FontBBox"), void 0); let S = e.get("Ascent"); "number" != typeof S && (S = void 0); let k = e.get("Descent"); "number" != typeof k && (k = void 0); let R = e.get("XHeight"); "number" != typeof R && (R = 0); let N = e.get("CapHeight"); "number" != typeof N && (N = 0); let G = e.get("Flags"); Number.isInteger(G) || (G = 0); let x = e.get("ItalicAngle"); "number" != typeof x && (x = 0); const M = { type: r, name: l.name, subtype: d, file: u, length1: f, length2: p, length3: m, isInternalFont: y, loadedName: i.loadedName, composite: s, fixedPitch: !1, fontMatrix: D, firstChar: n, lastChar: o, toUnicode: g, bbox: F, ascent: S, descent: k, xHeight: R, capHeight: N, flags: G, italicAngle: x, isType3Font: h, cssFontInfo: c, scaleFactors: w, systemFontInfo: b }; if (s) { const e = i.get("Encoding"); e instanceof Name && (M.cidEncoding = e.name); const t = await CMapFactory.create({ encoding: e, fetchBuiltInCMap: this._fetchBuiltInCMapBound, useCMap: null }); M.cMap = t; M.vertical = M.cMap.vertical } const U = await this.extractDataStructures(t, M); this.extractWidths(t, e, U); return new Font(l.name, u, U) } static buildFontPaths(e, t, i, a) { function buildPath(t) { const s = `${e.loadedName}_path_${t}`; try { if (e.renderer.hasBuiltPath(t)) return; i.send("commonobj", [s, "FontPath", e.renderer.getPathJs(t)]) } catch (e) { if (a.ignoreErrors) { warn(`buildFontPaths - ignoring ${s} 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 Dict; e.set("BaseFont", Name.get("Helvetica")); e.set("Type", Name.get("FallbackType")); e.set("Subtype", Name.get("FallbackType")); e.set("Encoding", Name.get("WinAnsiEncoding")); return shadow(this, "fallbackFontDict", e) } } class TranslatedFont { constructor({ loadedName: e, font: t, dict: i, evaluatorOptions: a }) { this.loadedName = e; this.font = t; this.dict = i; this._evaluatorOptions = a || Ds; 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, i) { if (this.type3Loaded) return this.type3Loaded; if (!this.font.isType3Font) throw new Error("Must be a Type3 font."); const a = e.clone({ ignoreErrors: !1 }), s = new RefSet(e.type3FontRefs); this.dict.objId && !s.has(this.dict.objId) && s.put(this.dict.objId); a.type3FontRefs = s; const r = this.font, n = this.type3Dependencies; let o = Promise.resolve(); const g = this.dict.get("CharProcs"), c = this.dict.get("Resources") || t, h = Object.create(null), l = Util.normalizeRect(r.bbox || [0, 0, 0, 0]), C = l[2] - l[0], Q = l[3] - l[1], E = Math.hypot(C, Q); for (const e of g.getKeys()) o = o.then((() => { const t = g.get(e), s = new OperatorList; return a.getOperatorList({ stream: t, task: i, resources: c, operatorList: s }).then((() => { s.fnArray[0] === Ee && this._removeType3ColorOperators(s, E); h[e] = s.getIR(); for (const e of s.dependencies) n.add(e) })).catch((function (t) { warn(`Type3 font resource "${e}" is not available.`); const i = new OperatorList; h[e] = i.getIR() })) })); this.type3Loaded = o.then((() => { r.charProcOperatorList = h; if (this._bbox) { r.isCharBBox = !0; r.bbox = this._bbox } })); return this.type3Loaded } _removeType3ColorOperators(e, t = NaN) { const i = Util.normalizeRect(e.argsArray[0].slice(2)), a = i[2] - i[0], s = i[3] - i[1], r = Math.hypot(a, s); if (0 === a || 0 === s) { e.fnArray.splice(0, 1); e.argsArray.splice(0, 1) } else if (0 === t || Math.round(r / t) >= 10) { this._bbox || (this._bbox = [1 / 0, 1 / 0, -1 / 0, -1 / 0]); this._bbox[0] = Math.min(this._bbox[0], i[0]); this._bbox[1] = Math.min(this._bbox[1], i[1]); this._bbox[2] = Math.max(this._bbox[2], i[2]); this._bbox[3] = Math.max(this._bbox[3], i[3]) } let n = 0, o = e.length; for (; n < o;) { switch (e.fnArray[n]) { case Ee: break; case ue: case de: case fe: case pe: case me: case ye: case we: case be: case De: case Fe: case Se: case ke: case Re: case kA: e.fnArray.splice(n, 1); e.argsArray.splice(n, 1); o--; continue; case NA: const [t] = e.argsArray[n]; let i = 0, a = t.length; for (; i < a;) { const [e] = t[i]; switch (e) { case "TR": case "TR2": case "HT": case "BG": case "BG2": case "UCR": case "UCR2": t.splice(i, 1); a--; continue }i++ } }n++ } } } class StateManager { constructor(e = new EvalState) { this.state = e; this.stateStack = [] } save() { const e = this.state; this.stateStack.push(this.state); this.state = e.clone() } restore() { const e = this.stateStack.pop(); e && (this.state = e) } transform(e) { this.state.ctm = Util.transform(this.state.ctm, e) } } class TextState { constructor() { this.ctm = new Float32Array(i); this.fontName = null; this.fontSize = 0; this.loadedName = null; this.font = null; this.fontMatrix = a; this.textMatrix = i.slice(); this.textLineMatrix = i.slice(); this.charSpacing = 0; this.wordSpacing = 0; this.leading = 0; this.textHScale = 1; this.textRise = 0 } setTextMatrix(e, t, i, a, s, r) { const n = this.textMatrix; n[0] = e; n[1] = t; n[2] = i; n[3] = a; n[4] = s; n[5] = r } setTextLineMatrix(e, t, i, a, s, r) { const n = this.textLineMatrix; n[0] = e; n[1] = t; n[2] = i; n[3] = a; n[4] = s; n[5] = r } translateTextMatrix(e, t) { const i = this.textMatrix; i[4] = i[0] * e + i[2] * t + i[4]; i[5] = i[1] * e + i[3] * t + i[5] } translateTextLineMatrix(e, t) { const i = this.textLineMatrix; i[4] = i[0] * e + i[2] * t + i[4]; i[5] = i[1] * e + i[3] * t + i[5] } carriageReturn() { this.translateTextLineMatrix(0, -this.leading); this.textMatrix = this.textLineMatrix.slice() } clone() { const e = Object.create(this); e.textMatrix = this.textMatrix.slice(); e.textLineMatrix = this.textLineMatrix.slice(); e.fontMatrix = this.fontMatrix.slice(); return e } } class EvalState { constructor() { this.ctm = new Float32Array(i); this.font = null; this.textRenderingMode = y; this.fillColorSpace = ColorSpace.singletons.gray; this.strokeColorSpace = ColorSpace.singletons.gray } clone() { return Object.create(this) } } class EvaluatorPreprocessor { static get opMap() { return shadow(this, "opMap", Object.assign(Object.create(null), { w: { id: wA, numArgs: 1, variableArgs: !1 }, J: { id: bA, numArgs: 1, variableArgs: !1 }, j: { id: DA, numArgs: 1, variableArgs: !1 }, M: { id: FA, numArgs: 1, variableArgs: !1 }, d: { id: SA, numArgs: 2, variableArgs: !1 }, ri: { id: kA, numArgs: 1, variableArgs: !1 }, i: { id: RA, numArgs: 1, variableArgs: !1 }, gs: { id: NA, numArgs: 1, variableArgs: !1 }, q: { id: GA, numArgs: 0, variableArgs: !1 }, Q: { id: xA, numArgs: 0, variableArgs: !1 }, cm: { id: MA, numArgs: 6, variableArgs: !1 }, m: { id: UA, numArgs: 2, variableArgs: !1 }, l: { id: LA, numArgs: 2, variableArgs: !1 }, c: { id: JA, numArgs: 6, variableArgs: !1 }, v: { id: HA, numArgs: 4, variableArgs: !1 }, y: { id: YA, numArgs: 4, variableArgs: !1 }, h: { id: vA, numArgs: 0, variableArgs: !1 }, re: { id: KA, numArgs: 4, variableArgs: !1 }, S: { id: TA, numArgs: 0, variableArgs: !1 }, s: { id: qA, numArgs: 0, variableArgs: !1 }, f: { id: OA, numArgs: 0, variableArgs: !1 }, F: { id: OA, numArgs: 0, variableArgs: !1 }, "f*": { id: PA, numArgs: 0, variableArgs: !1 }, B: { id: WA, numArgs: 0, variableArgs: !1 }, "B*": { id: XA, numArgs: 0, variableArgs: !1 }, b: { id: jA, numArgs: 0, variableArgs: !1 }, "b*": { id: ZA, numArgs: 0, variableArgs: !1 }, n: { id: VA, numArgs: 0, variableArgs: !1 }, W: { id: zA, numArgs: 0, variableArgs: !1 }, "W*": { id: _A, numArgs: 0, variableArgs: !1 }, BT: { id: $A, numArgs: 0, variableArgs: !1 }, ET: { id: Ae, numArgs: 0, variableArgs: !1 }, Tc: { id: ee, numArgs: 1, variableArgs: !1 }, Tw: { id: te, numArgs: 1, variableArgs: !1 }, Tz: { id: ie, numArgs: 1, variableArgs: !1 }, TL: { id: ae, numArgs: 1, variableArgs: !1 }, Tf: { id: se, numArgs: 2, variableArgs: !1 }, Tr: { id: re, numArgs: 1, variableArgs: !1 }, Ts: { id: ne, numArgs: 1, variableArgs: !1 }, Td: { id: oe, numArgs: 2, variableArgs: !1 }, TD: { id: ge, numArgs: 2, variableArgs: !1 }, Tm: { id: Ie, numArgs: 6, variableArgs: !1 }, "T*": { id: ce, numArgs: 0, variableArgs: !1 }, Tj: { id: he, numArgs: 1, variableArgs: !1 }, TJ: { id: le, numArgs: 1, variableArgs: !1 }, "'": { id: Ce, numArgs: 1, variableArgs: !1 }, '"': { id: Be, numArgs: 3, variableArgs: !1 }, d0: { id: Qe, numArgs: 2, variableArgs: !1 }, d1: { id: Ee, numArgs: 6, variableArgs: !1 }, CS: { id: ue, numArgs: 1, variableArgs: !1 }, cs: { id: de, numArgs: 1, variableArgs: !1 }, SC: { id: fe, numArgs: 4, variableArgs: !0 }, SCN: { id: pe, numArgs: 33, variableArgs: !0 }, sc: { id: me, numArgs: 4, variableArgs: !0 }, scn: { id: ye, numArgs: 33, variableArgs: !0 }, G: { id: we, numArgs: 1, variableArgs: !1 }, g: { id: be, numArgs: 1, variableArgs: !1 }, RG: { id: De, numArgs: 3, variableArgs: !1 }, rg: { id: Fe, numArgs: 3, variableArgs: !1 }, K: { id: Se, numArgs: 4, variableArgs: !1 }, k: { id: ke, numArgs: 4, variableArgs: !1 }, sh: { id: Re, numArgs: 1, variableArgs: !1 }, BI: { id: Ne, numArgs: 0, variableArgs: !1 }, ID: { id: Ge, numArgs: 0, variableArgs: !1 }, EI: { id: xe, numArgs: 1, variableArgs: !1 }, Do: { id: Me, numArgs: 1, variableArgs: !1 }, MP: { id: Ue, numArgs: 1, variableArgs: !1 }, DP: { id: Le, numArgs: 2, variableArgs: !1 }, BMC: { id: Je, numArgs: 1, variableArgs: !1 }, BDC: { id: He, numArgs: 2, variableArgs: !1 }, EMC: { id: Ye, numArgs: 0, variableArgs: !1 }, BX: { id: ve, numArgs: 0, variableArgs: !1 }, EX: { id: Ke, numArgs: 0, variableArgs: !1 }, BM: null, BD: null, true: null, fa: null, fal: null, fals: null, false: null, nu: null, nul: null, null: null })) } static MAX_INVALID_PATH_OPS = 10; constructor(e, t, i = new StateManager) { this.parser = new Parser({ lexer: new Lexer(e, EvaluatorPreprocessor.opMap), xref: t }); this.stateManager = i; this.nonProcessedArgs = []; this._isPathOp = !1; this._numInvalidPathOPS = 0 } get savedStatesDepth() { return this.stateManager.stateStack.length } read(e) { let t = e.args; for (; ;) { const i = this.parser.getObj(); if (i instanceof Cmd) { const a = i.cmd, s = EvaluatorPreprocessor.opMap[a]; if (!s) { warn(`Unknown command "${a}".`); continue } const r = s.id, n = s.numArgs; let o = null !== t ? t.length : 0; this._isPathOp || (this._numInvalidPathOPS = 0); this._isPathOp = r >= UA && r <= VA; if (s.variableArgs) o > n && info(`Command ${a}: expected [0, ${n}] args, but received ${o} args.`); else { if (o !== n) { const e = this.nonProcessedArgs; for (; o > n;) { e.push(t.shift()); o-- } for (; o < n && 0 !== e.length;) { null === t && (t = []); t.unshift(e.pop()); o++ } } if (o < n) { const e = `command ${a}: expected ${n} args, but received ${o} args.`; if (this._isPathOp && ++this._numInvalidPathOPS > EvaluatorPreprocessor.MAX_INVALID_PATH_OPS) throw new FormatError(`Invalid ${e}`); warn(`Skipping ${e}`); null !== t && (t.length = 0); continue } } this.preprocessCommand(r, t); e.fn = r; e.args = t; return !0 } if (i === pt) return !1; if (null !== i) { null === t && (t = []); t.push(i); if (t.length > 33) throw new FormatError("Too many arguments") } } } preprocessCommand(e, t) { switch (0 | e) { case GA: this.stateManager.save(); break; case xA: this.stateManager.restore(); break; case MA: this.stateManager.transform(t) } } } class DefaultAppearanceEvaluator extends EvaluatorPreprocessor { constructor(e) { super(new 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: i, args: a } = e; switch (0 | i) { case se: const [e, i] = a; e instanceof Name && (t.fontName = e.name); "number" == typeof i && i > 0 && (t.fontSize = i); break; case Fe: ColorSpace.singletons.rgb.getRgbItem(a, 0, t.fontColor, 0); break; case be: ColorSpace.singletons.gray.getRgbItem(a, 0, t.fontColor, 0); break; case ke: ColorSpace.singletons.cmyk.getRgbItem(a, 0, t.fontColor, 0) } } } catch (e) { warn(`parseDefaultAppearance - ignoring errors: "${e}".`) } return t } } function parseDefaultAppearance(e) { return new DefaultAppearanceEvaluator(e).parse() } class AppearanceStreamEvaluator extends EvaluatorPreprocessor { constructor(e, t, i) { super(e); this.stream = e; this.evaluatorOptions = t; this.xref = i; this.resources = e.dict?.get("Resources") } parse() { const e = { fn: 0, args: [] }; let t = { scaleFactor: 1, fontSize: 0, fontName: "", fontColor: new Uint8ClampedArray(3), fillColorSpace: ColorSpace.singletons.gray }, i = !1; const a = []; try { for (; ;) { e.args.length = 0; if (i || !this.read(e)) break; const { fn: s, args: r } = e; switch (0 | s) { case GA: a.push({ scaleFactor: t.scaleFactor, fontSize: t.fontSize, fontName: t.fontName, fontColor: t.fontColor.slice(), fillColorSpace: t.fillColorSpace }); break; case xA: t = a.pop() || t; break; case Ie: t.scaleFactor *= Math.hypot(r[0], r[1]); break; case se: const [e, s] = r; e instanceof Name && (t.fontName = e.name); "number" == typeof s && s > 0 && (t.fontSize = s * t.scaleFactor); break; case de: t.fillColorSpace = ColorSpace.parse({ cs: r[0], xref: this.xref, resources: this.resources, pdfFunctionFactory: this._pdfFunctionFactory, localColorSpaceCache: this._localColorSpaceCache }); break; case me: t.fillColorSpace.getRgbItem(r, 0, t.fontColor, 0); break; case Fe: ColorSpace.singletons.rgb.getRgbItem(r, 0, t.fontColor, 0); break; case be: ColorSpace.singletons.gray.getRgbItem(r, 0, t.fontColor, 0); break; case ke: ColorSpace.singletons.cmyk.getRgbItem(r, 0, t.fontColor, 0); break; case he: case le: case Ce: case Be: i = !0 } } } catch (e) { warn(`parseAppearanceStream - ignoring errors: "${e}".`) } this.stream.reset(); delete t.scaleFactor; delete t.fillColorSpace; return t } get _localColorSpaceCache() { return shadow(this, "_localColorSpaceCache", new LocalColorSpaceCache) } get _pdfFunctionFactory() { return shadow(this, "_pdfFunctionFactory", new PDFFunctionFactory({ xref: this.xref, isEvalSupported: this.evaluatorOptions.isEvalSupported })) } } function getPdfColor(e, t) { if (e[0] === e[1] && e[1] === e[2]) { return `${numberToString(e[0] / 255)} ${t ? "g" : "G"}` } return Array.from(e, (e => 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 i = new OffscreenCanvas(1, 1); this.ctxMeasure = i.getContext("2d"); FakeUnicodeFont._fontNameId || (FakeUnicodeFont._fontNameId = 1); this.fontName = Name.get(`InvalidPDFjsFont_${t}_${FakeUnicodeFont._fontNameId++}`) } get fontDescriptorRef() { if (!FakeUnicodeFont._fontDescriptorRef) { const e = new Dict(this.xref); e.set("Type", Name.get("FontDescriptor")); e.set("FontName", this.fontName); e.set("FontFamily", "MyriadPro Regular"); e.set("FontBBox", [0, 0, 0, 0]); e.set("FontStretch", 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 Dict(this.xref); e.set("BaseFont", this.fontName); e.set("Type", Name.get("Font")); e.set("Subtype", Name.get("CIDFontType0")); e.set("CIDToGIDMap", Name.get("Identity")); e.set("FirstChar", this.firstChar); e.set("LastChar", this.lastChar); e.set("FontDescriptor", this.fontDescriptorRef); e.set("DW", 1e3); const t = [], i = [...this.widths.entries()].sort(); let a = null, s = null; for (const [e, r] of i) if (a) if (e === a + s.length) s.push(r); else { t.push(a, s); a = e; s = [r] } else { a = e; s = [r] } a && t.push(a, s); e.set("W", t); const r = new Dict(this.xref); r.set("Ordering", "Identity"); r.set("Registry", "Adobe"); r.set("Supplement", 0); e.set("CIDSystemInfo", r); return this.xref.getNewPersistentRef(e) } get baseFontRef() { const e = new Dict(this.xref); e.set("BaseFont", this.fontName); e.set("Type", Name.get("Font")); e.set("Subtype", Name.get("Type0")); e.set("Encoding", Name.get("Identity-H")); e.set("DescendantFonts", [this.descendantFontRef]); e.set("ToUnicode", Name.get("Identity-H")); return this.xref.getNewPersistentRef(e) } get resources() { const e = new Dict(this.xref), t = new 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 i of e.split(/\r\n?|\n/)) for (const e of i.split("")) { const i = e.charCodeAt(0); if (this.widths.has(i)) continue; const a = t.measureText(e), s = Math.ceil(a.width); this.widths.set(i, s); this.firstChar = Math.min(i, this.firstChar); this.lastChar = Math.max(i, this.lastChar) } return this.resources } static getFirstPositionInfo(e, t, i) { const [a, n, o, g] = e; let c = o - a, h = g - n; t % 180 != 0 && ([c, h] = [h, c]); const l = s * i; return { coords: [0, h + r * i - l], bbox: [0, 0, c, h], matrix: 0 !== t ? getRotationMatrix(t, h, l) : void 0 } } createAppearance(e, t, i, a, n, o) { const g = this._createContext(), c = []; let h = -1 / 0; for (const t of e.split(/\r\n?|\n/)) { c.push(t); const e = g.measureText(t).width; h = Math.max(h, e); for (const e of codePointIter(t)) { const t = String.fromCodePoint(e); let i = this.widths.get(e); if (void 0 === i) { const a = g.measureText(t); i = Math.ceil(a.width); this.widths.set(e, i); this.firstChar = Math.min(e, this.firstChar); this.lastChar = Math.max(e, this.lastChar) } } } h *= a / 1e3; const [l, C, Q, E] = t; let u = Q - l, d = E - C; i % 180 != 0 && ([u, d] = [d, u]); let f = 1; h > u && (f = u / h); let p = 1; const m = s * a, y = r * a, w = m * c.length; w > d && (p = d / w); const b = a * Math.min(f, p), D = ["q", `0 0 ${numberToString(u)} ${numberToString(d)} re W n`, "BT", `1 0 0 1 0 ${numberToString(d + y)} Tm 0 Tc ${getPdfColor(n, !0)}`, `/${this.fontName.name} ${numberToString(b)} Tf`], { resources: F } = this; if (1 !== (o = "number" == typeof o && o >= 0 && o <= 1 ? o : 1)) { D.push("/R0 gs"); const e = new Dict(this.xref), t = new Dict(this.xref); t.set("ca", o); t.set("CA", o); t.set("Type", Name.get("ExtGState")); e.set("R0", t); F.set("ExtGState", e) } const S = numberToString(m); for (const e of c) D.push(`0 -${S} Td <${stringToUTF16HexString(e)}> Tj`); D.push("ET", "Q"); const k = D.join("\n"), R = new Dict(this.xref); R.set("Subtype", Name.get("Form")); R.set("Type", Name.get("XObject")); R.set("BBox", [0, 0, u, d]); R.set("Length", k.length); R.set("Resources", F); if (i) { const e = getRotationMatrix(i, u, d); R.set("Matrix", e) } const N = new StringStream(k); N.dict = R; return N } } class NameOrNumberTree { constructor(e, t, i) { this.constructor === NameOrNumberTree && unreachable("Cannot initialize NameOrNumberTree."); this.root = e; this.xref = t; this._type = i } getAll() { const e = new Map; if (!this.root) return e; const t = this.xref, i = new RefSet; i.put(this.root); const a = [this.root]; for (; a.length > 0;) { const s = t.fetchIfRef(a.shift()); if (!(s instanceof Dict)) continue; if (s.has("Kids")) { const e = s.get("Kids"); if (!Array.isArray(e)) continue; for (const t of e) { if (i.has(t)) throw new FormatError(`Duplicate entry in "${this._type}" tree.`); a.push(t); i.put(t) } continue } const r = s.get(this._type); if (Array.isArray(r)) for (let i = 0, a = r.length; i < a; i += 2)e.set(t.fetchIfRef(r[i]), t.fetchIfRef(r[i + 1])) } return e } get(e) { if (!this.root) return null; const t = this.xref; let i = t.fetchIfRef(this.root), a = 0; for (; i.has("Kids");) { if (++a > 10) { warn(`Search depth limit reached for "${this._type}" tree.`); return null } const s = i.get("Kids"); if (!Array.isArray(s)) return null; let r = 0, n = s.length - 1; for (; r <= n;) { const a = r + n >> 1, o = t.fetchIfRef(s[a]), g = o.get("Limits"); if (e < t.fetchIfRef(g[0])) n = a - 1; else { if (!(e > t.fetchIfRef(g[1]))) { i = o; break } r = a + 1 } } if (r > n) return null } const s = i.get(this._type); if (Array.isArray(s)) { let i = 0, a = s.length - 2; for (; i <= a;) { const r = i + a >> 1, n = r + (1 & r), o = t.fetchIfRef(s[n]); if (e < o) a = n - 2; else { if (!(e > o)) return t.fetchIfRef(s[n + 1]); i = n + 2 } } } return null } } class NameTree extends NameOrNumberTree { constructor(e, t) { super(e, t, "Names") } } class NumberTree extends NameOrNumberTree { constructor(e, t) { super(e, t, "Nums") } } function clearGlobalCaches() { !function clearPatternCaches() { ya = Object.create(null) }(); !function clearPrimitiveCaches() { mt = Object.create(null); yt = Object.create(null); wt = Object.create(null) }(); !function clearUnicodeCaches() { Hi.clear() }(); JpxImage.cleanup() } function pickPlatformItem(e) { return e instanceof Dict ? 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 : null } class FileSpec { #S = !1; constructor(e, t, i = !1) { if (e instanceof Dict) { this.xref = t; this.root = e; e.has("FS") && (this.fs = e.get("FS")); e.has("RF") && warn("Related file specifications are not supported"); i || (e.has("EF") ? this.#S = !0 : warn("Non-embedded file specifications are not supported")) } } get filename() { let e = ""; const t = pickPlatformItem(this.root); t && "string" == typeof t && (e = stringToPDFString(t).replaceAll("\\\\", "\\").replaceAll("\\/", "/").replaceAll("\\", "/")); return shadow(this, "filename", e || "unnamed") } get content() { if (!this.#S) return null; this._contentRef ||= pickPlatformItem(this.root?.get("EF")); let e = null; if (this._contentRef) { const t = this.xref.fetchIfRef(this._contentRef); t instanceof BaseStream ? e = t.getBytes() : warn("Embedded file specification points to non-existing/invalid content") } else warn("Embedded file specification does not have any content"); return e } get description() { let e = ""; const t = this.root?.get("Desc"); t && "string" == typeof t && (e = stringToPDFString(t)); return shadow(this, "description", e) } get serializable() { return { rawFilename: this.filename, filename: (e = this.filename, e.substring(e.lastIndexOf("/") + 1)), content: this.content, description: this.description }; var e } } const Rs = 0, Ns = -2, Gs = -3, xs = -4, Ms = -5, Us = -6, Ls = -9; function isWhitespace(e, t) { const i = e[t]; return " " === i || "\n" === i || "\r" === i || "\t" === i } 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 i = []; let a = t; function skipWs() { for (; a < e.length && isWhitespace(e, a);)++a } for (; a < e.length && !isWhitespace(e, a) && ">" !== e[a] && "/" !== e[a];)++a; const s = e.substring(t, a); skipWs(); for (; a < e.length && ">" !== e[a] && "/" !== e[a] && "?" !== e[a];) { skipWs(); let t = "", s = ""; for (; a < e.length && !isWhitespace(e, a) && "=" !== e[a];) { t += e[a]; ++a } skipWs(); if ("=" !== e[a]) return null; ++a; skipWs(); const r = e[a]; if ('"' !== r && "'" !== r) return null; const n = e.indexOf(r, ++a); if (n < 0) return null; s = e.substring(a, n); i.push({ name: t, value: this._resolveEntities(s) }); a = n + 1; skipWs() } return { name: s, attributes: i, parsed: a - t } } _parseProcessingInstruction(e, t) { let i = t; for (; i < e.length && !isWhitespace(e, i) && ">" !== e[i] && "?" !== e[i] && "/" !== e[i];)++i; const a = e.substring(t, i); !function skipWs() { for (; i < e.length && isWhitespace(e, i);)++i }(); const s = i; for (; i < e.length && ("?" !== e[i] || ">" !== e[i + 1]);)++i; return { name: a, value: e.substring(s, i), parsed: i - t } } parseXml(e) { let t = 0; for (; t < e.length;) { let i = t; if ("<" === e[t]) { ++i; let t; switch (e[i]) { case "/": ++i; t = e.indexOf(">", i); if (t < 0) { this.onError(Ls); return } this.onEndElement(e.substring(i, t)); i = t + 1; break; case "?": ++i; const a = this._parseProcessingInstruction(e, i); if ("?>" !== e.substring(i + a.parsed, i + a.parsed + 2)) { this.onError(Gs); return } this.onPi(a.name, a.value); i += a.parsed + 2; break; case "!": if ("--" === e.substring(i + 1, i + 3)) { t = e.indexOf("--\x3e", i + 3); if (t < 0) { this.onError(Ms); return } this.onComment(e.substring(i + 3, t)); i = t + 3 } else if ("[CDATA[" === e.substring(i + 1, i + 8)) { t = e.indexOf("]]>", i + 8); if (t < 0) { this.onError(Ns); return } this.onCdata(e.substring(i + 8, t)); i = t + 3 } else { if ("DOCTYPE" !== e.substring(i + 1, i + 8)) { this.onError(Us); return } { const a = e.indexOf("[", i + 8); let s = !1; t = e.indexOf(">", i + 8); if (t < 0) { this.onError(xs); return } if (a > 0 && t > a) { t = e.indexOf("]>", i + 8); if (t < 0) { this.onError(xs); return } s = !0 } const r = e.substring(i + 8, t + (s ? 1 : 0)); this.onDoctype(r); i = t + (s ? 2 : 1) } } break; default: const s = this._parseContent(e, i); if (null === s) { this.onError(Us); return } let r = !1; if ("/>" === e.substring(i + s.parsed, i + s.parsed + 2)) r = !0; else if (">" !== e.substring(i + s.parsed, i + s.parsed + 1)) { this.onError(Ls); return } this.onBeginElement(s.name, s.attributes, r); i += s.parsed + (r ? 2 : 1) } } else { for (; i < e.length && "<" !== e[i];)i++; const a = e.substring(t, i); this.onText(this._resolveEntities(a)) } t = i } } onResolveEntity(e) { return `&${e};` } onPi(e, t) { } onComment(e) { } onCdata(e) { } onDoctype(e) { } onText(e) { } onBeginElement(e, t, i) { } onEndElement(e) { } onError(e) { } } class SimpleDOMNode { constructor(e, t) { this.nodeName = e; this.nodeValue = t; Object.defineProperty(this, "parentNode", { value: null, writable: !0 }) } get firstChild() { return this.childNodes?.[0] } get nextSibling() { const e = this.parentNode.childNodes; if (!e) return; const t = e.indexOf(this); return -1 !== t ? e[t + 1] : void 0 } get textContent() { return this.childNodes ? this.childNodes.map((function (e) { return e.textContent })).join("") : this.nodeValue || "" } get children() { return this.childNodes || [] } hasChildNodes() { return this.childNodes?.length > 0 } searchNode(e, t) { if (t >= e.length) return this; const i = e[t]; if (i.name.startsWith("#") && t < e.length - 1) return this.searchNode(e, t + 1); const a = []; let s = this; for (; ;) { if (i.name === s.nodeName) { if (0 !== i.pos) { if (0 === a.length) return null; { const [r] = a.pop(); let n = 0; for (const a of r.childNodes) if (i.name === a.nodeName) { if (n === i.pos) return a.searchNode(e, t + 1); n++ } return s.searchNode(e, t + 1) } } { const i = s.searchNode(e, t + 1); if (null !== i) return i } } if (s.childNodes?.length > 0) { a.push([s, 0]); s = s.childNodes[0] } else { if (0 === a.length) return null; for (; 0 !== a.length;) { const [e, t] = a.pop(), i = t + 1; if (i < e.childNodes.length) { a.push([e, i]); s = e.childNodes[i]; break } } if (0 === a.length) return null } } } dump(e) { if ("#text" !== this.nodeName) { e.push(`<${this.nodeName}`); if (this.attributes) for (const t of this.attributes) e.push(` ${t.name}="${encodeToXmlString(t.value)}"`); if (this.hasChildNodes()) { e.push(">"); for (const t of this.childNodes) t.dump(e); e.push(``) } else this.nodeValue ? e.push(`>${encodeToXmlString(this.nodeValue)}`) : e.push("/>") } else e.push(encodeToXmlString(this.nodeValue)) } } class SimpleXMLParser extends XMLParserBase { constructor({ hasAttributes: e = !1, lowerCaseName: t = !1 }) { super(); this._currentFragment = null; this._stack = null; this._errorCode = Rs; this._hasAttributes = e; this._lowerCaseName = t } parseFromString(e) { this._currentFragment = []; this._stack = []; this._errorCode = Rs; this.parseXml(e); if (this._errorCode !== Rs) return; const [t] = this._currentFragment; return t ? { documentElement: t } : void 0 } onText(e) { if (function isWhitespaceString(e) { for (let t = 0, i = e.length; t < i; t++)if (!isWhitespace(e, t)) return !1; return !0 }(e)) return; const t = new SimpleDOMNode("#text", e); this._currentFragment.push(t) } onCdata(e) { const t = new SimpleDOMNode("#text", e); this._currentFragment.push(t) } onBeginElement(e, t, i) { this._lowerCaseName && (e = e.toLowerCase()); const a = new SimpleDOMNode(e); a.childNodes = []; this._hasAttributes && (a.attributes = t); this._currentFragment.push(a); if (!i) { this._stack.push(this._currentFragment); this._currentFragment = a.childNodes } } onEndElement(e) { this._currentFragment = this._stack.pop() || []; const t = this._currentFragment.at(-1); if (!t) return null; for (const e of t.childNodes) e.parentNode = t; return t } onError(e) { this._errorCode = e } } class MetadataParser { constructor(e) { e = this._repair(e); const t = new 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 i = t.replaceAll(/\\([0-3])([0-7])([0-7])/g, (function (e, t, i, a) { return String.fromCharCode(64 * t + 8 * i + 1 * a) })).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.`) })), a = [">"]; for (let e = 0, t = i.length; e < t; e += 2) { const t = 256 * i.charCodeAt(e) + i.charCodeAt(e + 1); t >= 32 && t < 127 && 60 !== t && 62 !== t && 38 !== t ? a.push(String.fromCharCode(t)) : a.push("&#x" + (65536 + t).toString(16).substring(1) + ";") } return a.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, i = this._getSequence(t) || []; this._metadataMap.set(e.nodeName, i.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 } } } class DecryptStream extends DecodeStream { constructor(e, t, i) { super(t); this.str = e; this.dict = e.dict; this.decrypt = i; 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 i = this.bufferLength, a = i + e.length; this.ensureBuffer(a).set(e, i); this.bufferLength = a } } class ARCFourCipher { constructor(e) { this.a = 0; this.b = 0; const t = new Uint8Array(256), i = e.length; for (let e = 0; e < 256; ++e)t[e] = e; for (let a = 0, s = 0; a < 256; ++a) { const r = t[a]; s = s + r + e[a % i] & 255; t[a] = t[s]; t[s] = r } this.s = t } encryptBlock(e) { let t = this.a, i = this.b; const a = this.s, s = e.length, r = new Uint8Array(s); for (let n = 0; n < s; ++n) { t = t + 1 & 255; const s = a[t]; i = i + s & 255; const o = a[i]; a[t] = o; a[i] = s; r[n] = e[n] ^ a[s + o & 255] } this.a = t; this.b = i; return r } decryptBlock(e) { return this.encryptBlock(e) } encrypt(e) { return this.encryptBlock(e) } } const Js = function calculateMD5Closure() { const e = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]), t = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]); return function hash(i, a, s) { let r = 1732584193, n = -271733879, o = -1732584194, g = 271733878; const c = s + 72 & -64, h = new Uint8Array(c); let l, C; for (l = 0; l < s; ++l)h[l] = i[a++]; h[l++] = 128; const Q = c - 8; for (; l < Q;)h[l++] = 0; h[l++] = s << 3 & 255; h[l++] = s >> 5 & 255; h[l++] = s >> 13 & 255; h[l++] = s >> 21 & 255; h[l++] = s >>> 29 & 255; h[l++] = 0; h[l++] = 0; h[l++] = 0; const E = new Int32Array(16); for (l = 0; l < c;) { for (C = 0; C < 16; ++C, l += 4)E[C] = h[l] | h[l + 1] << 8 | h[l + 2] << 16 | h[l + 3] << 24; let i, a, s = r, c = n, Q = o, u = g; for (C = 0; C < 64; ++C) { if (C < 16) { i = c & Q | ~c & u; a = C } else if (C < 32) { i = u & c | ~u & Q; a = 5 * C + 1 & 15 } else if (C < 48) { i = c ^ Q ^ u; a = 3 * C + 5 & 15 } else { i = Q ^ (c | ~u); a = 7 * C & 15 } const r = u, n = s + i + t[C] + E[a] | 0, o = e[C]; u = Q; Q = c; c = c + (n << o | n >>> 32 - o) | 0; s = r } r = r + s | 0; n = n + c | 0; o = o + Q | 0; g = g + u | 0 } return new Uint8Array([255 & r, r >> 8 & 255, r >> 16 & 255, r >>> 24 & 255, 255 & n, n >> 8 & 255, n >> 16 & 255, n >>> 24 & 255, 255 & o, o >> 8 & 255, o >> 16 & 255, o >>> 24 & 255, 255 & g, g >> 8 & 255, g >> 16 & 255, g >>> 24 & 255]) } }(); 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 << e - 32; this.low = 0 } else { this.high = this.high << e | this.low >>> 32 - e; this.low <<= e } } rotateRight(e) { let t, i; if (32 & e) { i = this.low; t = this.high } else { t = this.low; i = this.high } e &= 31; this.low = t >>> e | i << 32 - e; this.high = i >>> e | t << 32 - e } not() { this.high = ~this.high; this.low = ~this.low } add(e) { const t = (this.low >>> 0) + (e.low >>> 0); let i = (this.high >>> 0) + (e.high >>> 0); t > 4294967295 && (i += 1); this.low = 0 | t; this.high = 0 | i } 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 Hs = function calculateSHA256Closure() { function rotr(e, t) { return e >>> t | e << 32 - t } function ch(e, t, i) { return e & t ^ ~e & i } function maj(e, t, i) { return e & t ^ e & i ^ t & i } 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, i, a) { let s = 1779033703, r = 3144134277, n = 1013904242, o = 2773480762, g = 1359893119, c = 2600822924, h = 528734635, l = 1541459225; const C = 64 * Math.ceil((a + 9) / 64), Q = new Uint8Array(C); let E, u; for (E = 0; E < a; ++E)Q[E] = t[i++]; Q[E++] = 128; const d = C - 8; for (; E < d;)Q[E++] = 0; Q[E++] = 0; Q[E++] = 0; Q[E++] = 0; Q[E++] = a >>> 29 & 255; Q[E++] = a >> 21 & 255; Q[E++] = a >> 13 & 255; Q[E++] = a >> 5 & 255; Q[E++] = a << 3 & 255; const f = new Uint32Array(64); for (E = 0; E < C;) { for (u = 0; u < 16; ++u) { f[u] = Q[E] << 24 | Q[E + 1] << 16 | Q[E + 2] << 8 | Q[E + 3]; E += 4 } for (u = 16; u < 64; ++u)f[u] = (rotr(p = f[u - 2], 17) ^ rotr(p, 19) ^ p >>> 10) + f[u - 7] + littleSigma(f[u - 15]) + f[u - 16] | 0; let t, i, a = s, C = r, d = n, m = o, y = g, w = c, b = h, D = l; for (u = 0; u < 64; ++u) { t = D + sigmaPrime(y) + ch(y, w, b) + e[u] + f[u]; i = sigma(a) + maj(a, C, d); D = b; b = w; w = y; y = m + t | 0; m = d; d = C; C = a; a = t + i | 0 } s = s + a | 0; r = r + C | 0; n = n + d | 0; o = o + m | 0; g = g + y | 0; c = c + w | 0; h = h + b | 0; l = l + D | 0 } var p; return new Uint8Array([s >> 24 & 255, s >> 16 & 255, s >> 8 & 255, 255 & s, r >> 24 & 255, r >> 16 & 255, r >> 8 & 255, 255 & r, n >> 24 & 255, n >> 16 & 255, n >> 8 & 255, 255 & n, o >> 24 & 255, o >> 16 & 255, o >> 8 & 255, 255 & o, g >> 24 & 255, g >> 16 & 255, g >> 8 & 255, 255 & g, c >> 24 & 255, c >> 16 & 255, c >> 8 & 255, 255 & c, h >> 24 & 255, h >> 16 & 255, h >> 8 & 255, 255 & h, l >> 24 & 255, l >> 16 & 255, l >> 8 & 255, 255 & l]) } }(), Ys = function calculateSHA512Closure() { function ch(e, t, i, a, s) { e.assign(t); e.and(i); s.assign(t); s.not(); s.and(a); e.xor(s) } function maj(e, t, i, a, s) { e.assign(t); e.and(i); s.assign(t); s.and(a); e.xor(s); s.assign(i); s.and(a); e.xor(s) } function sigma(e, t, i) { e.assign(t); e.rotateRight(28); i.assign(t); i.rotateRight(34); e.xor(i); i.assign(t); i.rotateRight(39); e.xor(i) } function sigmaPrime(e, t, i) { e.assign(t); e.rotateRight(14); i.assign(t); i.rotateRight(18); e.xor(i); i.assign(t); i.rotateRight(41); e.xor(i) } function littleSigma(e, t, i) { e.assign(t); e.rotateRight(1); i.assign(t); i.rotateRight(8); e.xor(i); i.assign(t); i.shiftRight(7); e.xor(i) } function littleSigmaPrime(e, t, i) { e.assign(t); e.rotateRight(19); i.assign(t); i.rotateRight(61); e.xor(i); i.assign(t); i.shiftRight(6); e.xor(i) } 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, i, a, s = !1) { let r, n, o, g, c, h, l, C; if (s) { r = new Word64(3418070365, 3238371032); n = new Word64(1654270250, 914150663); o = new Word64(2438529370, 812702999); g = new Word64(355462360, 4144912697); c = new Word64(1731405415, 4290775857); h = new Word64(2394180231, 1750603025); l = new Word64(3675008525, 1694076839); C = new Word64(1203062813, 3204075428) } else { r = new Word64(1779033703, 4089235720); n = new Word64(3144134277, 2227873595); o = new Word64(1013904242, 4271175723); g = new Word64(2773480762, 1595750129); c = new Word64(1359893119, 2917565137); h = new Word64(2600822924, 725511199); l = new Word64(528734635, 4215389547); C = new Word64(1541459225, 327033209) } const Q = 128 * Math.ceil((a + 17) / 128), E = new Uint8Array(Q); let u, d; for (u = 0; u < a; ++u)E[u] = t[i++]; E[u++] = 128; const f = Q - 16; for (; u < f;)E[u++] = 0; E[u++] = 0; E[u++] = 0; E[u++] = 0; E[u++] = 0; E[u++] = 0; E[u++] = 0; E[u++] = 0; E[u++] = 0; E[u++] = 0; E[u++] = 0; E[u++] = 0; E[u++] = a >>> 29 & 255; E[u++] = a >> 21 & 255; E[u++] = a >> 13 & 255; E[u++] = a >> 5 & 255; E[u++] = a << 3 & 255; const p = new Array(80); for (u = 0; u < 80; u++)p[u] = new Word64(0, 0); let m = new Word64(0, 0), y = new Word64(0, 0), w = new Word64(0, 0), b = new Word64(0, 0), D = new Word64(0, 0), F = new Word64(0, 0), S = new Word64(0, 0), k = new Word64(0, 0); const R = new Word64(0, 0), N = new Word64(0, 0), G = new Word64(0, 0), x = new Word64(0, 0); let M, U; for (u = 0; u < Q;) { for (d = 0; d < 16; ++d) { p[d].high = E[u] << 24 | E[u + 1] << 16 | E[u + 2] << 8 | E[u + 3]; p[d].low = E[u + 4] << 24 | E[u + 5] << 16 | E[u + 6] << 8 | E[u + 7]; u += 8 } for (d = 16; d < 80; ++d) { M = p[d]; littleSigmaPrime(M, p[d - 2], x); M.add(p[d - 7]); littleSigma(G, p[d - 15], x); M.add(G); M.add(p[d - 16]) } m.assign(r); y.assign(n); w.assign(o); b.assign(g); D.assign(c); F.assign(h); S.assign(l); k.assign(C); for (d = 0; d < 80; ++d) { R.assign(k); sigmaPrime(G, D, x); R.add(G); ch(G, D, F, S, x); R.add(G); R.add(e[d]); R.add(p[d]); sigma(N, m, x); maj(G, m, y, w, x); N.add(G); M = k; k = S; S = F; F = D; b.add(R); D = b; b = w; w = y; y = m; M.assign(R); M.add(N); m = M } r.add(m); n.add(y); o.add(w); g.add(b); c.add(D); h.add(F); l.add(S); C.add(k) } if (s) { U = new Uint8Array(48); r.copyTo(U, 0); n.copyTo(U, 8); o.copyTo(U, 16); g.copyTo(U, 24); c.copyTo(U, 32); h.copyTo(U, 40) } else { U = new Uint8Array(64); r.copyTo(U, 0); n.copyTo(U, 8); o.copyTo(U, 16); g.copyTo(U, 24); c.copyTo(U, 32); h.copyTo(U, 40); l.copyTo(U, 48); C.copyTo(U, 56) } return U } }(); class NullCipher { decryptBlock(e) { return e } encrypt(e) { return e } } class AESBaseCipher { constructor() { this.constructor === AESBaseCipher && unreachable("Cannot initialize AESBaseCipher."); this._s = new Uint8Array([99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22]); this._inv_s = new Uint8Array([82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125]); this._mix = new Uint32Array([0, 235474187, 470948374, 303765277, 941896748, 908933415, 607530554, 708780849, 1883793496, 2118214995, 1817866830, 1649639237, 1215061108, 1181045119, 1417561698, 1517767529, 3767586992, 4003061179, 4236429990, 4069246893, 3635733660, 3602770327, 3299278474, 3400528769, 2430122216, 2664543715, 2362090238, 2193862645, 2835123396, 2801107407, 3035535058, 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, 3810496343, 3977675356, 4279080257, 4043610186, 2876494627, 2776292904, 3076639029, 3110650942, 2472011535, 2640243204, 2403728665, 2169303058, 1001089995, 899835584, 666464733, 699432150, 59727847, 226906860, 530400753, 294930682, 1273168787, 1172967064, 1475418501, 1509430414, 1942435775, 2110667444, 1876241833, 1641816226, 2910219766, 2743034109, 2976151520, 3211623147, 2505202138, 2606453969, 2302690252, 2269728455, 3711829422, 3543599269, 3240894392, 3475313331, 3843699074, 3943906441, 4178062228, 4144047775, 1306967366, 1139781709, 1374988112, 1610459739, 1975683434, 2076935265, 1775276924, 1742315127, 1034867998, 866637845, 566021896, 800440835, 92987698, 193195065, 429456164, 395441711, 1984812685, 2017778566, 1784663195, 1683407248, 1315562145, 1080094634, 1383856311, 1551037884, 101039829, 135050206, 437757123, 337553864, 1042385657, 807962610, 573804783, 742039012, 2531067453, 2564033334, 2328828971, 2227573024, 2935566865, 2700099354, 3001755655, 3168937228, 3868552805, 3902563182, 4203181171, 4102977912, 3736164937, 3501741890, 3265478751, 3433712980, 1106041591, 1340463100, 1576976609, 1408749034, 2043211483, 2009195472, 1708848333, 1809054150, 832877231, 1068351396, 766945465, 599762354, 159417987, 126454664, 361929877, 463180190, 2709260871, 2943682380, 3178106961, 3009879386, 2572697195, 2538681184, 2236228733, 2336434550, 3509871135, 3745345300, 3441850377, 3274667266, 3910161971, 3877198648, 4110568485, 4211818798, 2597806476, 2497604743, 2261089178, 2295101073, 2733856160, 2902087851, 3202437046, 2968011453, 3936291284, 3835036895, 4136440770, 4169408201, 3535486456, 3702665459, 3467192302, 3231722213, 2051518780, 1951317047, 1716890410, 1750902305, 1113818384, 1282050075, 1584504582, 1350078989, 168810852, 67556463, 371049330, 404016761, 841739592, 1008918595, 775550814, 540080725, 3969562369, 3801332234, 4035489047, 4269907996, 3569255213, 3669462566, 3366754619, 3332740144, 2631065433, 2463879762, 2160117071, 2395588676, 2767645557, 2868897406, 3102011747, 3069049960, 202008497, 33778362, 270040487, 504459436, 875451293, 975658646, 675039627, 641025152, 2084704233, 1917518562, 1615861247, 1851332852, 1147550661, 1248802510, 1484005843, 1451044056, 933301370, 967311729, 733156972, 632953703, 260388950, 25965917, 328671808, 496906059, 1206477858, 1239443753, 1543208500, 1441952575, 2144161806, 1908694277, 1675577880, 1842759443, 3610369226, 3644379585, 3408119516, 3307916247, 4011190502, 3776767469, 4077384432, 4245618683, 2809771154, 2842737049, 3144396420, 3043140495, 2673705150, 2438237621, 2203032232, 2370213795]); this._mixCol = new Uint8Array(256); for (let e = 0; e < 256; e++)this._mixCol[e] = e < 128 ? e << 1 : e << 1 ^ 27; this.buffer = new Uint8Array(16); this.bufferPosition = 0 } _expandKey(e) { unreachable("Cannot call `_expandKey` on the base class") } _decrypt(e, t) { let i, a, s; const r = new Uint8Array(16); r.set(e); for (let e = 0, i = this._keySize; e < 16; ++e, ++i)r[e] ^= t[i]; for (let e = this._cyclesOfRepetition - 1; e >= 1; --e) { i = r[13]; r[13] = r[9]; r[9] = r[5]; r[5] = r[1]; r[1] = i; i = r[14]; a = r[10]; r[14] = r[6]; r[10] = r[2]; r[6] = i; r[2] = a; i = r[15]; a = r[11]; s = r[7]; r[15] = r[3]; r[11] = i; r[7] = a; r[3] = s; for (let e = 0; e < 16; ++e)r[e] = this._inv_s[r[e]]; for (let i = 0, a = 16 * e; i < 16; ++i, ++a)r[i] ^= t[a]; for (let e = 0; e < 16; e += 4) { const t = this._mix[r[e]], a = this._mix[r[e + 1]], s = this._mix[r[e + 2]], n = this._mix[r[e + 3]]; i = t ^ a >>> 8 ^ a << 24 ^ s >>> 16 ^ s << 16 ^ n >>> 24 ^ n << 8; r[e] = i >>> 24 & 255; r[e + 1] = i >> 16 & 255; r[e + 2] = i >> 8 & 255; r[e + 3] = 255 & i } } i = r[13]; r[13] = r[9]; r[9] = r[5]; r[5] = r[1]; r[1] = i; i = r[14]; a = r[10]; r[14] = r[6]; r[10] = r[2]; r[6] = i; r[2] = a; i = r[15]; a = r[11]; s = r[7]; r[15] = r[3]; r[11] = i; r[7] = a; r[3] = s; for (let e = 0; e < 16; ++e) { r[e] = this._inv_s[r[e]]; r[e] ^= t[e] } return r } _encrypt(e, t) { const i = this._s; let a, s, r; const n = new Uint8Array(16); n.set(e); for (let e = 0; e < 16; ++e)n[e] ^= t[e]; for (let e = 1; e < this._cyclesOfRepetition; e++) { for (let e = 0; e < 16; ++e)n[e] = i[n[e]]; r = n[1]; n[1] = n[5]; n[5] = n[9]; n[9] = n[13]; n[13] = r; r = n[2]; s = n[6]; n[2] = n[10]; n[6] = n[14]; n[10] = r; n[14] = s; r = n[3]; s = n[7]; a = n[11]; n[3] = n[15]; n[7] = r; n[11] = s; n[15] = a; for (let e = 0; e < 16; e += 4) { const t = n[e + 0], i = n[e + 1], s = n[e + 2], r = n[e + 3]; a = t ^ i ^ s ^ r; n[e + 0] ^= a ^ this._mixCol[t ^ i]; n[e + 1] ^= a ^ this._mixCol[i ^ s]; n[e + 2] ^= a ^ this._mixCol[s ^ r]; n[e + 3] ^= a ^ this._mixCol[r ^ t] } for (let i = 0, a = 16 * e; i < 16; ++i, ++a)n[i] ^= t[a] } for (let e = 0; e < 16; ++e)n[e] = i[n[e]]; r = n[1]; n[1] = n[5]; n[5] = n[9]; n[9] = n[13]; n[13] = r; r = n[2]; s = n[6]; n[2] = n[10]; n[6] = n[14]; n[10] = r; n[14] = s; r = n[3]; s = n[7]; a = n[11]; n[3] = n[15]; n[7] = r; n[11] = s; n[15] = a; for (let e = 0, i = this._keySize; e < 16; ++e, ++i)n[e] ^= t[i]; return n } _decryptBlock2(e, t) { const i = e.length; let a = this.buffer, s = this.bufferPosition; const r = []; let n = this.iv; for (let t = 0; t < i; ++t) { a[s] = e[t]; ++s; if (s < 16) continue; const i = this._decrypt(a, this._key); for (let e = 0; e < 16; ++e)i[e] ^= n[e]; n = a; r.push(i); a = new Uint8Array(16); s = 0 } this.buffer = a; this.bufferLength = s; this.iv = n; if (0 === r.length) return new Uint8Array(0); let o = 16 * r.length; if (t) { const e = r.at(-1); let t = e[15]; if (t <= 16) { for (let i = 15, a = 16 - t; i >= a; --i)if (e[i] !== t) { t = 0; break } o -= t; r[r.length - 1] = e.subarray(0, 16 - t) } } const g = new Uint8Array(o); for (let e = 0, t = 0, i = r.length; e < i; ++e, t += 16)g.set(r[e], t); return g } decryptBlock(e, t, i = null) { const a = e.length, s = this.buffer; let r = this.bufferPosition; if (i) this.iv = i; else { for (let t = 0; r < 16 && t < a; ++t, ++r)s[r] = e[t]; if (r < 16) { this.bufferLength = r; return new Uint8Array(0) } this.iv = s; e = e.subarray(16) } this.buffer = new Uint8Array(16); this.bufferLength = 0; this.decryptBlock = this._decryptBlock2; return this.decryptBlock(e, t) } encrypt(e, t) { const i = e.length; let a = this.buffer, s = this.bufferPosition; const r = []; t || (t = new Uint8Array(16)); for (let n = 0; n < i; ++n) { a[s] = e[n]; ++s; if (s < 16) continue; for (let e = 0; e < 16; ++e)a[e] ^= t[e]; const i = this._encrypt(a, this._key); t = i; r.push(i); a = new Uint8Array(16); s = 0 } this.buffer = a; this.bufferLength = s; this.iv = t; if (0 === r.length) return new Uint8Array(0); const n = 16 * r.length, o = new Uint8Array(n); for (let e = 0, t = 0, i = r.length; e < i; ++e, t += 16)o.set(r[e], t); return o } } class AES128Cipher extends AESBaseCipher { constructor(e) { super(); this._cyclesOfRepetition = 10; this._keySize = 160; this._rcon = new Uint8Array([141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, 116, 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, 116, 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, 116, 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, 116, 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, 116, 232, 203, 141]); this._key = this._expandKey(e) } _expandKey(e) { const t = this._s, i = this._rcon, a = new Uint8Array(176); a.set(e); for (let e = 16, s = 1; e < 176; ++s) { let r = a[e - 3], n = a[e - 2], o = a[e - 1], g = a[e - 4]; r = t[r]; n = t[n]; o = t[o]; g = t[g]; r ^= i[s]; for (let t = 0; t < 4; ++t) { a[e] = r ^= a[e - 16]; e++; a[e] = n ^= a[e - 16]; e++; a[e] = o ^= a[e - 16]; e++; a[e] = g ^= a[e - 16]; e++ } } return a } } class AES256Cipher extends AESBaseCipher { constructor(e) { super(); this._cyclesOfRepetition = 14; this._keySize = 224; this._key = this._expandKey(e) } _expandKey(e) { const t = this._s, i = new Uint8Array(240); i.set(e); let a, s, r, n, o = 1; for (let e = 32, g = 1; e < 240; ++g) { if (e % 32 == 16) { a = t[a]; s = t[s]; r = t[r]; n = t[n] } else if (e % 32 == 0) { a = i[e - 3]; s = i[e - 2]; r = i[e - 1]; n = i[e - 4]; a = t[a]; s = t[s]; r = t[r]; n = t[n]; a ^= o; (o <<= 1) >= 256 && (o = 255 & (27 ^ o)) } for (let t = 0; t < 4; ++t) { i[e] = a ^= i[e - 32]; e++; i[e] = s ^= i[e - 32]; e++; i[e] = r ^= i[e - 32]; e++; i[e] = n ^= i[e - 32]; e++ } } return i } } class PDF17 { checkOwnerPassword(e, t, i, a) { const s = new Uint8Array(e.length + 56); s.set(e, 0); s.set(t, e.length); s.set(i, e.length + t.length); return isArrayEqual(Hs(s, 0, s.length), a) } checkUserPassword(e, t, i) { const a = new Uint8Array(e.length + 8); a.set(e, 0); a.set(t, e.length); return isArrayEqual(Hs(a, 0, a.length), i) } getOwnerKey(e, t, i, a) { const s = new Uint8Array(e.length + 56); s.set(e, 0); s.set(t, e.length); s.set(i, e.length + t.length); const r = Hs(s, 0, s.length); return new AES256Cipher(r).decryptBlock(a, !1, new Uint8Array(16)) } getUserKey(e, t, i) { const a = new Uint8Array(e.length + 8); a.set(e, 0); a.set(t, e.length); const s = Hs(a, 0, a.length); return new AES256Cipher(s).decryptBlock(i, !1, new Uint8Array(16)) } } class PDF20 { _hash(e, t, i) { let a = Hs(t, 0, t.length).subarray(0, 32), s = [0], r = 0; for (; r < 64 || s.at(-1) > r - 32;) { const t = e.length + a.length + i.length, c = new Uint8Array(t); let h = 0; c.set(e, h); h += e.length; c.set(a, h); h += a.length; c.set(i, h); const l = new Uint8Array(64 * t); for (let e = 0, i = 0; e < 64; e++, i += t)l.set(c, i); s = new AES128Cipher(a.subarray(0, 16)).encrypt(l, a.subarray(16, 32)); const C = s.slice(0, 16).reduce(((e, t) => e + t), 0) % 3; 0 === C ? a = Hs(s, 0, s.length) : 1 === C ? a = (n = s, o = 0, g = s.length, Ys(n, o, g, !0)) : 2 === C && (a = Ys(s, 0, s.length)); r++ } var n, o, g; return a.subarray(0, 32) } checkOwnerPassword(e, t, i, a) { const s = new Uint8Array(e.length + 56); s.set(e, 0); s.set(t, e.length); s.set(i, e.length + t.length); return isArrayEqual(this._hash(e, s, i), a) } checkUserPassword(e, t, i) { const a = new Uint8Array(e.length + 8); a.set(e, 0); a.set(t, e.length); return isArrayEqual(this._hash(e, a, []), i) } getOwnerKey(e, t, i, a) { const s = new Uint8Array(e.length + 56); s.set(e, 0); s.set(t, e.length); s.set(i, e.length + t.length); const r = this._hash(e, s, i); return new AES256Cipher(r).decryptBlock(a, !1, new Uint8Array(16)) } getUserKey(e, t, i) { const a = new Uint8Array(e.length + 8); a.set(e, 0); a.set(t, e.length); const s = this._hash(e, a, []); return new AES256Cipher(s).decryptBlock(i, !1, new Uint8Array(16)) } } class CipherTransform { constructor(e, t) { this.StringCipherConstructor = e; this.StreamCipherConstructor = t } createStream(e, t) { const i = new this.StreamCipherConstructor; return new DecryptStream(e, t, (function cipherTransformDecryptStream(e, t) { return i.decryptBlock(e, t) })) } decryptString(e) { const t = new this.StringCipherConstructor; let i = stringToBytes(e); i = t.decryptBlock(i, !0); return bytesToString(i) } encryptString(e) { const t = new this.StringCipherConstructor; if (t instanceof AESBaseCipher) { const i = 16 - e.length % 16; e += String.fromCharCode(i).repeat(i); const a = new Uint8Array(16); if ("undefined" != typeof crypto) crypto.getRandomValues(a); else for (let e = 0; e < 16; e++)a[e] = Math.floor(256 * Math.random()); let s = stringToBytes(e); s = t.encrypt(s, a); const r = new Uint8Array(16 + s.length); r.set(a); r.set(s, 16); return bytesToString(r) } let i = stringToBytes(e); i = t.encrypt(i); return bytesToString(i) } } class CipherTransformFactory { static #k = 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]); #R(e, t, i, a, s, r, n, o, g, c, h, l) { if (t) { const e = Math.min(127, t.length); t = t.subarray(0, e) } else t = []; const C = 6 === e ? new PDF20 : new PDF17; return C.checkUserPassword(t, o, n) ? C.getUserKey(t, g, h) : t.length && C.checkOwnerPassword(t, a, r, i) ? C.getOwnerKey(t, s, r, c) : null } #N(e, t, i, a, s, r, n, o) { const g = 40 + i.length + e.length, c = new Uint8Array(g); let h, l, C = 0; if (t) { l = Math.min(32, t.length); for (; C < l; ++C)c[C] = t[C] } h = 0; for (; C < 32;)c[C++] = CipherTransformFactory.#k[h++]; for (h = 0, l = i.length; h < l; ++h)c[C++] = i[h]; c[C++] = 255 & s; c[C++] = s >> 8 & 255; c[C++] = s >> 16 & 255; c[C++] = s >>> 24 & 255; for (h = 0, l = e.length; h < l; ++h)c[C++] = e[h]; if (r >= 4 && !o) { c[C++] = 255; c[C++] = 255; c[C++] = 255; c[C++] = 255 } let Q = Js(c, 0, C); const E = n >> 3; if (r >= 3) for (h = 0; h < 50; ++h)Q = Js(Q, 0, E); const u = Q.subarray(0, E); let d, f; if (r >= 3) { for (C = 0; C < 32; ++C)c[C] = CipherTransformFactory.#k[C]; for (h = 0, l = e.length; h < l; ++h)c[C++] = e[h]; d = new ARCFourCipher(u); f = d.encryptBlock(Js(c, 0, C)); l = u.length; const t = new Uint8Array(l); for (h = 1; h <= 19; ++h) { for (let e = 0; e < l; ++e)t[e] = u[e] ^ h; d = new ARCFourCipher(t); f = d.encryptBlock(f) } for (h = 0, l = f.length; h < l; ++h)if (a[h] !== f[h]) return null } else { d = new ARCFourCipher(u); f = d.encryptBlock(CipherTransformFactory.#k); for (h = 0, l = f.length; h < l; ++h)if (a[h] !== f[h]) return null } return u } #G(e, t, i, a) { const s = new Uint8Array(32); let r = 0; const n = Math.min(32, e.length); for (; r < n; ++r)s[r] = e[r]; let o = 0; for (; r < 32;)s[r++] = CipherTransformFactory.#k[o++]; let g = Js(s, 0, r); const c = a >> 3; if (i >= 3) for (o = 0; o < 50; ++o)g = Js(g, 0, g.length); let h, l; if (i >= 3) { l = t; const e = new Uint8Array(c); for (o = 19; o >= 0; o--) { for (let t = 0; t < c; ++t)e[t] = g[t] ^ o; h = new ARCFourCipher(e); l = h.encryptBlock(l) } } else { h = new ARCFourCipher(g.subarray(0, c)); l = h.encryptBlock(t) } return l } #x(e, t, i, a = !1) { const s = new Uint8Array(i.length + 9), r = i.length; let n; for (n = 0; n < r; ++n)s[n] = i[n]; s[n++] = 255 & e; s[n++] = e >> 8 & 255; s[n++] = e >> 16 & 255; s[n++] = 255 & t; s[n++] = t >> 8 & 255; if (a) { s[n++] = 115; s[n++] = 65; s[n++] = 108; s[n++] = 84 } return Js(s, 0, n).subarray(0, Math.min(i.length + 5, 16)) } #M(e, t, i, a, s) { if (!(t instanceof Name)) throw new FormatError("Invalid crypt filter name."); const r = this, n = e.get(t.name), o = n?.get("CFM"); if (!o || "None" === o.name) return function () { return new NullCipher }; if ("V2" === o.name) return function () { return new ARCFourCipher(r.#x(i, a, s, !1)) }; if ("AESV2" === o.name) return function () { return new AES128Cipher(r.#x(i, a, s, !0)) }; if ("AESV3" === o.name) return function () { return new AES256Cipher(s) }; throw new FormatError("Unknown crypto method") } constructor(e, t, i) { const a = e.get("Filter"); if (!isName(a, "Standard")) throw new FormatError("unknown encryption method"); this.filterName = a.name; this.dict = e; const s = e.get("V"); if (!Number.isInteger(s) || 1 !== s && 2 !== s && 4 !== s && 5 !== s) throw new FormatError("unsupported encryption algorithm"); this.algorithm = s; let r = e.get("Length"); if (!r) if (s <= 3) r = 40; else { const t = e.get("CF"), i = e.get("StmF"); if (t instanceof Dict && i instanceof Name) { t.suppressEncryption = !0; const e = t.get(i.name); r = e?.get("Length") || 128; r < 40 && (r <<= 3) } } if (!Number.isInteger(r) || r < 40 || r % 8 != 0) throw new FormatError("invalid key length"); const n = stringToBytes(e.get("O")), o = stringToBytes(e.get("U")), g = n.subarray(0, 32), c = o.subarray(0, 32), h = e.get("P"), l = e.get("R"), C = (4 === s || 5 === s) && !1 !== e.get("EncryptMetadata"); this.encryptMetadata = C; const Q = stringToBytes(t); let E, u; if (i) { if (6 === l) try { i = utf8StringToString(i) } catch { warn("CipherTransformFactory: Unable to convert UTF8 encoded password.") } E = stringToBytes(i) } if (5 !== s) u = this.#N(Q, E, g, c, h, l, r, C); else { const t = n.subarray(32, 40), i = n.subarray(40, 48), a = o.subarray(0, 48), s = o.subarray(32, 40), r = o.subarray(40, 48), h = stringToBytes(e.get("OE")), C = stringToBytes(e.get("UE")), Q = stringToBytes(e.get("Perms")); u = this.#R(l, E, g, t, i, a, c, s, r, h, C, Q) } if (!u && !i) throw new PasswordException("No password given", it); if (!u && i) { const e = this.#G(E, g, l, r); u = this.#N(Q, e, g, c, h, l, r, C) } if (!u) throw new PasswordException("Incorrect Password", at); this.encryptionKey = u; if (s >= 4) { const t = e.get("CF"); t instanceof Dict && (t.suppressEncryption = !0); this.cf = t; this.stmf = e.get("StmF") || Name.get("Identity"); this.strf = e.get("StrF") || Name.get("Identity"); this.eff = e.get("EFF") || this.stmf } } createCipherTransform(e, t) { if (4 === this.algorithm || 5 === this.algorithm) return new CipherTransform(this.#M(this.cf, this.strf, e, t, this.encryptionKey), this.#M(this.cf, this.stmf, e, t, this.encryptionKey)); const i = this.#x(e, t, this.encryptionKey, !1), cipherConstructor = function () { return new ARCFourCipher(i) }; return new CipherTransform(cipherConstructor, cipherConstructor) } } async function writeObject(e, t, i, { encrypt: a = null }) { const s = a?.createCipherTransform(e.num, e.gen); i.push(`${e.num} ${e.gen} obj\n`); t instanceof Dict ? await writeDict(t, i, s) : t instanceof BaseStream ? await writeStream(t, i, s) : (Array.isArray(t) || ArrayBuffer.isView(t)) && await writeArray(t, i, s); i.push("\nendobj\n") } async function writeDict(e, t, i) { t.push("<<"); for (const a of e.getKeys()) { t.push(` /${escapePDFName(a)} `); await writeValue(e.getRaw(a), t, i) } t.push(">>") } async function writeStream(e, t, i) { let a = e.getBytes(); const { dict: s } = e, [r, n] = await Promise.all([s.getAsync("Filter"), s.getAsync("DecodeParms")]), o = isName(Array.isArray(r) ? await s.xref.fetchIfRefAsync(r[0]) : r, "FlateDecode"); if (a.length >= 256 || o) try { const e = new CompressionStream("deflate"), t = e.writable.getWriter(); t.write(a); t.close(); const i = await new Response(e.readable).arrayBuffer(); a = new Uint8Array(i); let g, c; if (r) { if (!o) { g = Array.isArray(r) ? [Name.get("FlateDecode"), ...r] : [Name.get("FlateDecode"), r]; n && (c = Array.isArray(n) ? [null, ...n] : [null, n]) } } else g = Name.get("FlateDecode"); g && s.set("Filter", g); c && s.set("DecodeParms", c) } catch (e) { info(`writeStream - cannot compress data: "${e}".`) } let g = bytesToString(a); i && (g = i.encryptString(g)); s.set("Length", g.length); await writeDict(s, t, i); t.push(" stream\n", g, "\nendstream") } async function writeArray(e, t, i) { t.push("["); let a = !0; for (const s of e) { a ? a = !1 : t.push(" "); await writeValue(s, t, i) } t.push("]") } async function writeValue(e, t, i) { if (e instanceof Name) t.push(`/${escapePDFName(e.name)}`); else if (e instanceof Ref) t.push(`${e.num} ${e.gen} R`); else if (Array.isArray(e) || ArrayBuffer.isView(e)) await writeArray(e, t, i); else if ("string" == typeof e) { i && (e = i.encryptString(e)); t.push(`(${escapeString(e)})`) } else "number" == typeof e ? t.push(numberToString(e)) : "boolean" == typeof e ? t.push(e.toString()) : e instanceof Dict ? await writeDict(e, t, i) : e instanceof BaseStream ? await writeStream(e, t, i) : null === e ? t.push("null") : warn(`Unhandled value in writer: ${typeof e}, please file a bug.`) } function writeInt(e, t, i, a) { for (let s = t + i - 1; s > i - 1; s--) { a[s] = 255 & e; e >>= 8 } return i + t } function writeString(e, t, i) { for (let a = 0, s = e.length; a < s; a++)i[t + a] = 255 & e.charCodeAt(a) } function updateXFA({ xfaData: e, xfaDatasetsRef: t, newRefs: i, xref: a }) { if (null === e) { e = function writeXFADataForAcroform(e, t) { const i = new SimpleXMLParser({ hasAttributes: !0 }).parseFromString(e); for (const { xfa: e } of t) { if (!e) continue; const { path: t, value: a } = e; if (!t) continue; const s = parseXFAPath(t); let r = i.documentElement.searchNode(s, 0); !r && s.length > 1 && (r = i.documentElement.searchNode([s.at(-1)], 0)); r ? r.childNodes = Array.isArray(a) ? a.map((e => new SimpleDOMNode("value", e))) : [new SimpleDOMNode("#text", a)] : warn(`Node not found for path: ${t}`) } const a = []; i.documentElement.dump(a); return a.join("") }(a.fetchIfRef(t).getString(), i) } const s = a.encrypt; if (s) { e = s.createCipherTransform(t.num, t.gen).encryptString(e) } const r = `${t.num} ${t.gen} obj\n<< /Type /EmbeddedFile /Length ${e.length}>>\nstream\n` + e + "\nendstream\nendobj\n"; i.push({ ref: t, data: r }) } function getIndexes(e) { const t = []; for (const { ref: i } of e) i.num === t.at(-2) + t.at(-1) ? t[t.length - 1] += 1 : t.push(i.num, 1); return t } function computeIDs(e, t, i) { if (Array.isArray(t.fileIds) && t.fileIds.length > 0) { const a = function computeMD5(e, t) { const i = Math.floor(Date.now() / 1e3), a = t.filename || "", s = [i.toString(), a, e.toString()]; let r = s.reduce(((e, t) => e + t.length), 0); for (const e of Object.values(t.info)) { s.push(e); r += e.length } const n = new Uint8Array(r); let o = 0; for (const e of s) { writeString(e, o, n); o += e.length } return bytesToString(Js(n)) }(e, t); i.set("ID", [t.fileIds[0], a]) } } async function incrementalUpdate({ originalData: e, xrefInfo: t, newRefs: i, xref: a = null, hasXfa: s = !1, xfaDatasetsRef: r = null, hasXfaDatasetsEntry: n = !1, needAppearances: o, acroFormRef: g = null, acroForm: c = null, xfaData: h = null, useXrefStream: l = !1 }) { await async function updateAcroform({ xref: e, acroForm: t, acroFormRef: i, hasXfa: a, hasXfaDatasetsEntry: s, xfaDatasetsRef: r, needAppearances: n, newRefs: o }) { !a || s || r || warn("XFA - Cannot save it"); if (!n && (!a || !r || s)) return; const g = t.clone(); if (a && !s) { const e = t.get("XFA").slice(); e.splice(2, 0, "datasets"); e.splice(3, 0, r); g.set("XFA", e) } n && g.set("NeedAppearances", !0); const c = []; await writeObject(i, g, c, e); o.push({ ref: i, data: c.join("") }) }({ xref: a, acroForm: c, acroFormRef: g, hasXfa: s, hasXfaDatasetsEntry: n, xfaDatasetsRef: r, needAppearances: o, newRefs: i }); s && updateXFA({ xfaData: h, xfaDatasetsRef: r, newRefs: i, xref: a }); const C = []; let Q = e.length; const E = e.at(-1); if (10 !== E && 13 !== E) { C.push("\n"); Q += 1 } const u = function getTrailerDict(e, t, i) { const a = new Dict(null); a.set("Prev", e.startXRef); const s = e.newRef; if (i) { t.push({ ref: s, data: "" }); a.set("Size", s.num + 1); a.set("Type", Name.get("XRef")) } else a.set("Size", s.num); null !== e.rootRef && a.set("Root", e.rootRef); null !== e.infoRef && a.set("Info", e.infoRef); null !== e.encryptRef && a.set("Encrypt", e.encryptRef); return a }(t, i, l); i = i.sort(((e, t) => e.ref.num - t.ref.num)); for (const { data: e } of i) null !== e && C.push(e); await (l ? async function getXRefStreamTable(e, t, i, a, s) { const r = []; let n = 0, o = 0; for (const { ref: e, data: a } of i) { let i; n = Math.max(n, t); if (null !== a) { i = Math.min(e.gen, 65535); r.push([1, t, i]); t += a.length } else { i = Math.min(e.gen + 1, 65535); r.push([0, 0, i]) } o = Math.max(o, i) } a.set("Index", getIndexes(i)); const g = [1, getSizeInBytes(n), getSizeInBytes(o)]; a.set("W", g); computeIDs(t, e, a); const c = g.reduce(((e, t) => e + t), 0), h = new Uint8Array(c * r.length), l = new Stream(h); l.dict = a; let C = 0; for (const [e, t, i] of r) { C = writeInt(e, g[0], C, h); C = writeInt(t, g[1], C, h); C = writeInt(i, g[2], C, h) } await writeObject(e.newRef, l, s, {}); s.push("startxref\n", t.toString(), "\n%%EOF\n") }(t, Q, i, u, C) : async function getXRefTable(e, t, i, a, s) { s.push("xref\n"); const r = getIndexes(i); let n = 0; for (const { ref: e, data: a } of i) { if (e.num === r[n]) { s.push(`${r[n]} ${r[n + 1]}\n`); n += 2 } if (null !== a) { s.push(`${t.toString().padStart(10, "0")} ${Math.min(e.gen, 65535).toString().padStart(5, "0")} n\r\n`); t += a.length } else s.push(`0000000000 ${Math.min(e.gen + 1, 65535).toString().padStart(5, "0")} f\r\n`) } computeIDs(t, e, a); s.push("trailer\n"); await writeDict(a, s); s.push("\nstartxref\n", t.toString(), "\n%%EOF\n") }(t, Q, i, u, C)); const d = C.reduce(((e, t) => e + t.length), e.length), f = new Uint8Array(d); f.set(e); let p = e.length; for (const e of C) { writeString(e, p, f); p += e.length } return f } const vs = 1, Ks = 2, Ts = 3, qs = 4, Os = 5; class StructTreeRoot { constructor(e, t) { this.dict = e; this.ref = t instanceof Ref ? t : null; this.roleMap = new Map; this.structParentIds = null } init() { this.readRoleMap() } #U(e, t, i) { if (!(e instanceof Ref) || t < 0) return; this.structParentIds ||= new RefSetCache; let a = this.structParentIds.get(e); if (!a) { a = []; this.structParentIds.put(e, a) } a.push([t, i]) } addAnnotationIdToPage(e, t) { this.#U(e, t, qs) } readRoleMap() { const e = this.dict.get("RoleMap"); e instanceof Dict && e.forEach(((e, t) => { t instanceof Name && this.roleMap.set(e, t.name) })) } static async canCreateStructureTree({ catalogRef: e, pdfManager: t, newAnnotationsByPage: i }) { if (!(e instanceof Ref)) { warn("Cannot save the struct tree: no catalog reference."); return !1 } let a = 0, s = !0; for (const [e, r] of i) { const { ref: i } = await t.getPage(e); if (!(i instanceof Ref)) { warn(`Cannot save the struct tree: page ${e} has no ref.`); s = !0; break } for (const e of r) if (e.accessibilityData?.type) { e.parentTreeId = a++; s = !1 } } if (s) { for (const e of i.values()) for (const t of e) delete t.parentTreeId; return !1 } return !0 } static async createStructureTree({ newAnnotationsByPage: e, xref: t, catalogRef: i, pdfManager: a, newRefs: s }) { const r = a.catalog.cloneDict(), n = new RefSetCache; n.put(i, r); const o = t.getNewTemporaryRef(); r.set("StructTreeRoot", o); const g = new Dict(t); g.set("Type", Name.get("StructTreeRoot")); const c = t.getNewTemporaryRef(); g.set("ParentTree", c); const h = []; g.set("K", h); n.put(o, g); const l = new Dict(t), C = []; l.set("Nums", C); const Q = await this.#L({ newAnnotationsByPage: e, structTreeRootRef: o, kids: h, nums: C, xref: t, pdfManager: a, cache: n }); g.set("ParentTreeNextKey", Q); n.put(c, l); const E = []; for (const [e, i] of n.items()) { E.length = 0; await writeObject(e, i, E, t); s.push({ ref: e, data: E.join("") }) } } async canUpdateStructTree({ pdfManager: e, xref: t, newAnnotationsByPage: i }) { if (!this.ref) { warn("Cannot update the struct tree: no root reference."); return !1 } let a = this.dict.get("ParentTreeNextKey"); if (!Number.isInteger(a) || a < 0) { warn("Cannot update the struct tree: invalid next key."); return !1 } const s = this.dict.get("ParentTree"); if (!(s instanceof Dict)) { warn("Cannot update the struct tree: ParentTree isn't a dict."); return !1 } const r = s.get("Nums"); if (!Array.isArray(r)) { warn("Cannot update the struct tree: nums isn't an array."); return !1 } const n = new NumberTree(s, t); for (const t of i.keys()) { const { pageDict: i } = await e.getPage(t); if (!i.has("StructParents")) continue; const a = i.get("StructParents"); if (!Number.isInteger(a) || !Array.isArray(n.get(a))) { warn(`Cannot save the struct tree: page ${t} has a wrong id.`); return !1 } } let o = !0; for (const [t, s] of i) { const { pageDict: i } = await e.getPage(t); StructTreeRoot.#J({ elements: s, xref: this.dict.xref, pageDict: i, numberTree: n }); for (const e of s) if (e.accessibilityData?.type) { e.parentTreeId = a++; o = !1 } } if (o) { for (const e of i.values()) for (const t of e) { delete t.parentTreeId; delete t.structTreeParent } return !1 } return !0 } async updateStructureTree({ newAnnotationsByPage: e, pdfManager: t, newRefs: i }) { const a = this.dict.xref, s = this.dict.clone(), r = this.ref, n = new RefSetCache; n.put(r, s); let o, g = s.getRaw("ParentTree"); if (g instanceof Ref) o = a.fetch(g); else { o = g; g = a.getNewTemporaryRef(); s.set("ParentTree", g) } o = o.clone(); n.put(g, o); let c = o.getRaw("Nums"), h = null; if (c instanceof Ref) { h = c; c = a.fetch(h) } c = c.slice(); h || o.set("Nums", c); const l = await StructTreeRoot.#L({ newAnnotationsByPage: e, structTreeRootRef: r, kids: null, nums: c, xref: a, pdfManager: t, cache: n }); s.set("ParentTreeNextKey", l); h && n.put(h, c); const C = []; for (const [e, t] of n.items()) { C.length = 0; await writeObject(e, t, C, a); i.push({ ref: e, data: C.join("") }) } } static async#L({ newAnnotationsByPage: e, structTreeRootRef: t, kids: i, nums: a, xref: s, pdfManager: r, cache: n }) { const o = Name.get("OBJR"); let g = -1 / 0; for (const [c, h] of e) { const { ref: e } = await r.getPage(c), l = e instanceof Ref; for (const { accessibilityData: r, ref: c, parentTreeId: C, structTreeParent: Q } of h) { if (!r?.type) continue; const { type: h, title: E, lang: u, alt: d, expanded: f, actualText: p } = r; g = Math.max(g, C); const m = s.getNewTemporaryRef(), y = new Dict(s); y.set("S", Name.get(h)); E && y.set("T", E); u && y.set("Lang", u); d && y.set("Alt", d); f && y.set("E", f); p && y.set("ActualText", p); await this.#H({ structTreeParent: Q, tagDict: y, newTagRef: m, structTreeRootRef: t, fallbackKids: i, xref: s, cache: n }); const w = new Dict(s); y.set("K", w); w.set("Type", o); l && w.set("Pg", e); w.set("Obj", c); n.put(m, y); a.push(C, m) } } return g + 1 } static #J({ elements: e, xref: t, pageDict: i, numberTree: a }) { const s = new Map; for (const t of e) if (t.structTreeParentId) { const e = parseInt(t.structTreeParentId.split("_mc")[1], 10); let i = s.get(e); if (!i) { i = []; s.set(e, i) } i.push(t) } const r = i.get("StructParents"); if (!Number.isInteger(r)) return; const n = a.get(r), updateElement = (e, i, a) => { const r = s.get(e); if (r) { const e = i.getRaw("P"), s = t.fetchIfRef(e); if (e instanceof Ref && s instanceof Dict) { const e = { ref: a, dict: i }; for (const t of r) t.structTreeParent = e } return !0 } return !1 }; for (const e of n) { if (!(e instanceof Ref)) continue; const i = t.fetch(e), a = i.get("K"); if (Number.isInteger(a)) updateElement(a, i, e); else if (Array.isArray(a)) for (let s of a) { s = t.fetchIfRef(s); if (Number.isInteger(s) && updateElement(s, i, e)) break; if (!(s instanceof Dict)) continue; if (!isName(s.get("Type"), "MCR")) break; const a = s.get("MCID"); if (Number.isInteger(a) && updateElement(a, i, e)) break } } } static async#H({ structTreeParent: e, tagDict: t, newTagRef: i, structTreeRootRef: a, fallbackKids: s, xref: r, cache: n }) { let o, g = null; if (e) { ({ ref: g } = e); o = e.dict.getRaw("P") || a } else o = a; t.set("P", o); const c = r.fetchIfRef(o); if (!c) { s.push(i); return } let h = n.get(o); if (!h) { h = c.clone(); n.put(o, h) } const l = h.getRaw("K"); let C = l instanceof Ref ? n.get(l) : null; if (!C) { C = r.fetchIfRef(l); C = Array.isArray(C) ? C.slice() : [l]; const e = r.getNewTemporaryRef(); h.set("K", e); n.put(e, C) } const Q = C.indexOf(g); C.splice(Q >= 0 ? Q + 1 : C.length, 0, i) } } 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 Name ? e.name : "", { root: i } = this.tree; return i.roleMap.has(t) ? i.roleMap.get(t) : t } parseKids() { let e = null; const t = this.dict.getRaw("Pg"); t instanceof Ref && (e = t.toString()); const i = this.dict.get("K"); if (Array.isArray(i)) for (const t of i) { const i = this.parseKid(e, t); i && this.kids.push(i) } else { const t = this.parseKid(e, i); t && this.kids.push(t) } } parseKid(e, t) { if (Number.isInteger(t)) return this.tree.pageDict.objId !== e ? null : new StructElement({ type: vs, mcid: t, pageObjId: e }); let i = null; t instanceof Ref ? i = this.dict.xref.fetch(t) : t instanceof Dict && (i = t); if (!i) return null; const a = i.getRaw("Pg"); a instanceof Ref && (e = a.toString()); const s = i.get("Type") instanceof Name ? i.get("Type").name : null; if ("MCR" === s) { if (this.tree.pageDict.objId !== e) return null; const t = i.getRaw("Stm"); return new StructElement({ type: Ks, refObjId: t instanceof Ref ? t.toString() : null, pageObjId: e, mcid: i.get("MCID") }) } if ("OBJR" === s) { if (this.tree.pageDict.objId !== e) return null; const t = i.getRaw("Obj"); return new StructElement({ type: Ts, refObjId: t instanceof Ref ? t.toString() : null, pageObjId: e }) } return new StructElement({ type: Os, dict: i }) } } class StructElement { constructor({ type: e, dict: t = null, mcid: i = null, pageObjId: a = null, refObjId: s = null }) { this.type = e; this.dict = t; this.mcid = i; this.pageObjId = a; this.refObjId = s; this.parentNode = null } } 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 i = this.pageDict.get("StructParents"), a = e instanceof Ref && this.root.structParentIds?.get(e); if (!Number.isInteger(i) && !a) return; const s = new Map, r = new NumberTree(t, this.rootDict.xref); if (Number.isInteger(i)) { const e = r.get(i); if (Array.isArray(e)) for (const t of e) t instanceof Ref && this.addNode(this.rootDict.xref.fetch(t), s) } if (a) for (const [e, t] of a) { const i = r.get(e); if (i) { const e = this.addNode(this.rootDict.xref.fetchIfRef(i), s); 1 === e?.kids?.length && e.kids[0].type === Ts && (e.kids[0].type = t) } } } addNode(e, t, i = 0) { if (i > 40) { warn("StructTree MAX_DEPTH reached."); return null } if (t.has(e)) return t.get(e); const a = new StructElementNode(this, e); t.set(e, a); const s = e.get("P"); if (!s || isName(s.get("Type"), "StructTreeRoot")) { this.addTopLevelNode(e, a) || t.delete(e); return a } const r = this.addNode(s, t, i + 1); if (!r) return a; let n = !1; for (const t of r.kids) if (t.type === Os && t.dict === e) { t.parentNode = a; n = !0 } n || t.delete(e); return a } addTopLevelNode(e, t) { const i = this.rootDict.get("K"); if (!i) return !1; if (i instanceof Dict) { if (i.objId !== e.objId) return !1; this.nodes[0] = t; return !0 } if (!Array.isArray(i)) return !0; let a = !1; for (let s = 0; s < i.length; s++) { const r = i[s]; if (r?.toString() === e.objId) { this.nodes[s] = t; a = !0 } } return a } get serializable() { function nodeToSerializable(e, t, i = 0) { if (i > 40) { warn("StructTree too deep to be fully serialized."); return } const a = Object.create(null); a.role = e.role; a.children = []; t.children.push(a); const s = e.dict.get("Alt"); "string" == typeof s && (a.alt = stringToPDFString(s)); const r = e.dict.get("Lang"); "string" == typeof r && (a.lang = stringToPDFString(r)); for (const t of e.kids) { const e = t.type === Os ? t.parentNode : null; e ? nodeToSerializable(e, a, i + 1) : t.type === vs || t.type === Ks ? a.children.push({ type: "content", id: `p${t.pageObjId}_mc${t.mcid}` }) : t.type === Ts ? a.children.push({ type: "object", id: t.refObjId }) : t.type === qs && a.children.push({ type: "annotation", id: `pdfjs_internal_id_${t.refObjId}` }) } } const e = Object.create(null); e.children = []; e.role = "Root"; for (const t of this.nodes) t && nodeToSerializable(t, e); return e } } function isValidExplicitDest(e) { if (!Array.isArray(e) || e.length < 2) return !1; const [t, i, ...a] = e; if (!(t instanceof Ref || Number.isInteger(t))) return !1; if (!(i instanceof Name)) return !1; let s = !0; switch (i.name) { case "XYZ": if (3 !== a.length) return !1; break; case "Fit": case "FitB": return 0 === a.length; case "FitH": case "FitBH": case "FitV": case "FitBV": if (1 !== a.length) return !1; break; case "FitR": if (4 !== a.length) return !1; s = !1; break; default: return !1 }for (const e of a) if (!("number" == typeof e || s && null === e)) return !1; return !0 } function fetchDest(e) { e instanceof Dict && (e = e.get("D")); return isValidExplicitDest(e) ? e : null } function fetchRemoteDest(e) { let t = e.get("D"); if (t) { t instanceof Name && (t = t.name); if ("string" == typeof t) return stringToPDFString(t); if (isValidExplicitDest(t)) return JSON.stringify(t) } return null } class Catalog { constructor(e, t) { this.pdfManager = e; this.xref = t; this._catDict = t.getCatalogObj(); if (!(this._catDict instanceof Dict)) throw new FormatError("Catalog object is not a dictionary."); this.toplevelPagesDict; this._actualNumPages = null; this.fontCache = new RefSetCache; this.builtInCMapCache = new Map; this.standardFontDataCache = new Map; this.globalImageCache = new GlobalImageCache; this.pageKidsCountCache = new RefSetCache; this.pageIndexCache = new RefSetCache; this.nonBlendModesSet = new RefSet; this.systemFontCache = new Map } cloneDict() { return this._catDict.clone() } get version() { const e = this._catDict.get("Version"); if (e instanceof Name) { if (Dt.test(e.name)) return shadow(this, "version", e.name); warn(`Invalid PDF catalog version: ${e.name}`) } return shadow(this, "version", null) } get lang() { const e = this._catDict.get("Lang"); return shadow(this, "lang", e && "string" == typeof e ? stringToPDFString(e) : null) } get needsRendering() { const e = this._catDict.get("NeedsRendering"); return shadow(this, "needsRendering", "boolean" == typeof e && e) } get collection() { let e = null; try { const t = this._catDict.get("Collection"); t instanceof Dict && t.size > 0 && (e = t) } catch (e) { if (e instanceof MissingDataException) throw e; info("Cannot fetch Collection entry; assuming no collection is present.") } return shadow(this, "collection", e) } get acroForm() { let e = null; try { const t = this._catDict.get("AcroForm"); t instanceof Dict && t.size > 0 && (e = t) } catch (e) { if (e instanceof MissingDataException) throw e; info("Cannot fetch AcroForm entry; assuming no forms are present.") } return shadow(this, "acroForm", e) } get acroFormRef() { const e = this._catDict.getRaw("AcroForm"); return shadow(this, "acroFormRef", e instanceof Ref ? e : null) } get metadata() { const e = this._catDict.getRaw("Metadata"); if (!(e instanceof Ref)) return shadow(this, "metadata", null); let t = null; try { const i = this.xref.fetch(e, !this.xref.encrypt?.encryptMetadata); if (i instanceof BaseStream && i.dict instanceof Dict) { const e = i.dict.get("Type"), a = i.dict.get("Subtype"); if (isName(e, "Metadata") && isName(a, "XML")) { const e = stringToUTF8String(i.getString()); e && (t = new MetadataParser(e).serializable) } } } catch (e) { if (e instanceof MissingDataException) throw e; info(`Skipping invalid Metadata: "${e}".`) } return shadow(this, "metadata", t) } get markInfo() { let e = null; try { e = this._readMarkInfo() } catch (e) { if (e instanceof MissingDataException) throw e; warn("Unable to read mark info.") } return shadow(this, "markInfo", e) } _readMarkInfo() { const e = this._catDict.get("MarkInfo"); if (!(e instanceof Dict)) return null; const t = { Marked: !1, UserProperties: !1, Suspects: !1 }; for (const i in t) { const a = e.get(i); "boolean" == typeof a && (t[i] = a) } return t } get structTreeRoot() { let e = null; try { e = this._readStructTreeRoot() } catch (e) { if (e instanceof MissingDataException) throw e; warn("Unable read to structTreeRoot info.") } return shadow(this, "structTreeRoot", e) } _readStructTreeRoot() { const e = this._catDict.getRaw("StructTreeRoot"), t = this.xref.fetchIfRef(e); if (!(t instanceof Dict)) return null; const i = new StructTreeRoot(t, e); i.init(); return i } get toplevelPagesDict() { const e = this._catDict.get("Pages"); if (!(e instanceof Dict)) throw new FormatError("Invalid top-level pages dictionary."); return shadow(this, "toplevelPagesDict", e) } get documentOutline() { let e = null; try { e = this._readDocumentOutline() } catch (e) { if (e instanceof MissingDataException) throw e; warn("Unable to read document outline.") } return shadow(this, "documentOutline", e) } _readDocumentOutline() { let e = this._catDict.get("Outlines"); if (!(e instanceof Dict)) return null; e = e.getRaw("First"); if (!(e instanceof Ref)) return null; const t = { items: [] }, i = [{ obj: e, parent: t }], a = new RefSet; a.put(e); const s = this.xref, r = new Uint8ClampedArray(3); for (; i.length > 0;) { const t = i.shift(), n = s.fetchIfRef(t.obj); if (null === n) continue; n.has("Title") || warn("Invalid outline item encountered."); const o = { url: null, dest: null, action: null }; Catalog.parseDestDictionary({ destDict: n, resultObj: o, docBaseUrl: this.baseUrl, docAttachments: this.attachments }); const g = n.get("Title"), c = n.get("F") || 0, h = n.getArray("C"), l = n.get("Count"); let C = r; !isNumberArray(h, 3) || 0 === h[0] && 0 === h[1] && 0 === h[2] || (C = ColorSpace.singletons.rgb.getRgb(h, 0)); const Q = { action: o.action, attachment: o.attachment, dest: o.dest, url: o.url, unsafeUrl: o.unsafeUrl, newWindow: o.newWindow, setOCGState: o.setOCGState, title: "string" == typeof g ? stringToPDFString(g) : "", color: C, count: Number.isInteger(l) ? l : void 0, bold: !!(2 & c), italic: !!(1 & c), items: [] }; t.parent.items.push(Q); e = n.getRaw("First"); if (e instanceof Ref && !a.has(e)) { i.push({ obj: e, parent: Q }); a.put(e) } e = n.getRaw("Next"); if (e instanceof Ref && !a.has(e)) { i.push({ obj: e, parent: t.parent }); a.put(e) } } return t.items.length > 0 ? t.items : null } get permissions() { let e = null; try { e = this._readPermissions() } catch (e) { if (e instanceof MissingDataException) throw e; warn("Unable to read permissions.") } return shadow(this, "permissions", e) } _readPermissions() { const e = this.xref.trailer.get("Encrypt"); if (!(e instanceof Dict)) return null; let t = e.get("P"); if ("number" != typeof t) return null; t += 2 ** 32; const i = []; for (const e in m) { const a = m[e]; t & a && i.push(a) } return i } get optionalContentConfig() { let e = null; try { const t = this._catDict.get("OCProperties"); if (!t) return shadow(this, "optionalContentConfig", null); const i = t.get("D"); if (!i) return shadow(this, "optionalContentConfig", null); const a = t.get("OCGs"); if (!Array.isArray(a)) return shadow(this, "optionalContentConfig", null); const s = [], r = new RefSet; for (const e of a) if (e instanceof Ref && !r.has(e)) { r.put(e); s.push(this.#Y(e)) } e = this.#v(i, r); e.groups = s } catch (e) { if (e instanceof MissingDataException) throw e; warn(`Unable to read optional content config: ${e}`) } return shadow(this, "optionalContentConfig", e) } #Y(e) { const t = this.xref.fetch(e), i = { id: e.toString(), name: null, intent: null, usage: { print: null, view: null } }, a = t.get("Name"); "string" == typeof a && (i.name = stringToPDFString(a)); let s = t.getArray("Intent"); Array.isArray(s) || (s = [s]); s.every((e => e instanceof Name)) && (i.intent = s.map((e => e.name))); const r = t.get("Usage"); if (!(r instanceof Dict)) return i; const n = i.usage, o = r.get("Print"); if (o instanceof Dict) { const e = o.get("PrintState"); if (e instanceof Name) switch (e.name) { case "ON": case "OFF": n.print = { printState: e.name } } } const g = r.get("View"); if (g instanceof Dict) { const e = g.get("ViewState"); if (e instanceof Name) switch (e.name) { case "ON": case "OFF": n.view = { viewState: e.name } } } return i } #v(e, t) { function parseOnOff(e) { const i = []; if (Array.isArray(e)) for (const a of e) a instanceof Ref && t.has(a) && i.push(a.toString()); return i } function parseOrder(e, i = 0) { if (!Array.isArray(e)) return null; const s = []; for (const r of e) { if (r instanceof Ref && t.has(r)) { a.put(r); s.push(r.toString()); continue } const e = parseNestedOrder(r, i); e && s.push(e) } if (i > 0) return s; const r = []; for (const e of t) a.has(e) || r.push(e.toString()); r.length && s.push({ name: null, order: r }); return s } function parseNestedOrder(e, t) { if (++t > s) { warn("parseNestedOrder - reached MAX_NESTED_LEVELS."); return null } const a = i.fetchIfRef(e); if (!Array.isArray(a)) return null; const r = i.fetchIfRef(a[0]); if ("string" != typeof r) return null; const n = parseOrder(a.slice(1), t); return n && n.length ? { name: stringToPDFString(r), order: n } : null } const i = this.xref, a = new RefSet, s = 10; return { name: "string" == typeof e.get("Name") ? stringToPDFString(e.get("Name")) : null, creator: "string" == typeof e.get("Creator") ? stringToPDFString(e.get("Creator")) : null, baseState: e.get("BaseState") instanceof 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 FormatError("Page count in top-level pages dictionary is not an integer."); return 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 NameTree) for (const [i, a] of e.getAll()) { const e = fetchDest(a); e && (t[stringToPDFString(i)] = e) } else e instanceof Dict && e.forEach((function (e, i) { const a = fetchDest(i); a && (t[e] = a) })); return shadow(this, "destinations", t) } getDestination(e) { const t = this._readDests(); if (t instanceof NameTree) { const i = fetchDest(t.get(e)); if (i) return i; const a = this.destinations[e]; if (a) { warn(`Found "${e}" at an incorrect position in the NameTree.`); return a } } else if (t instanceof Dict) { const i = fetchDest(t.get(e)); if (i) return i } return null } _readDests() { const e = this._catDict.get("Names"); return e?.has("Dests") ? new 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 MissingDataException) throw e; warn("Unable to read page labels.") } return shadow(this, "pageLabels", e) } _readPageLabels() { const e = this._catDict.getRaw("PageLabels"); if (!e) return null; const t = new Array(this.numPages); let i = null, a = ""; const s = new NumberTree(e, this.xref).getAll(); let r = "", n = 1; for (let e = 0, o = this.numPages; e < o; e++) { const o = s.get(e); if (void 0 !== o) { if (!(o instanceof Dict)) throw new FormatError("PageLabel is not a dictionary."); if (o.has("Type") && !isName(o.get("Type"), "PageLabel")) throw new FormatError("Invalid type in PageLabel dictionary."); if (o.has("S")) { const e = o.get("S"); if (!(e instanceof Name)) throw new FormatError("Invalid style in PageLabel dictionary."); i = e.name } else i = null; if (o.has("P")) { const e = o.get("P"); if ("string" != typeof e) throw new FormatError("Invalid prefix in PageLabel dictionary."); a = stringToPDFString(e) } else a = ""; if (o.has("St")) { const e = o.get("St"); if (!(Number.isInteger(e) && e >= 1)) throw new FormatError("Invalid start in PageLabel dictionary."); n = e } else n = 1 } switch (i) { case "D": r = n; break; case "R": case "r": r = toRomanNumerals(n, "r" === i); break; case "A": case "a": const e = 26, t = "a" === i ? 97 : 65, a = n - 1; r = String.fromCharCode(t + a % e).repeat(Math.floor(a / e) + 1); break; default: if (i) throw new FormatError(`Invalid style "${i}" in PageLabel dictionary.`); r = "" }t[e] = a + r; n++ } return t } get pageLayout() { const e = this._catDict.get("PageLayout"); let t = ""; if (e instanceof Name) switch (e.name) { case "SinglePage": case "OneColumn": case "TwoColumnLeft": case "TwoColumnRight": case "TwoPageLeft": case "TwoPageRight": t = e.name }return shadow(this, "pageLayout", t) } get pageMode() { const e = this._catDict.get("PageMode"); let t = "UseNone"; if (e instanceof Name) switch (e.name) { case "UseNone": case "UseOutlines": case "UseThumbs": case "FullScreen": case "UseOC": case "UseAttachments": t = e.name }return shadow(this, "pageMode", t) } get viewerPreferences() { const e = this._catDict.get("ViewerPreferences"); if (!(e instanceof Dict)) return shadow(this, "viewerPreferences", null); let t = null; for (const i of e.getKeys()) { const a = e.get(i); let s; switch (i) { case "HideToolbar": case "HideMenubar": case "HideWindowUI": case "FitWindow": case "CenterWindow": case "DisplayDocTitle": case "PickTrayByPDFSize": "boolean" == typeof a && (s = a); break; case "NonFullScreenPageMode": if (a instanceof Name) switch (a.name) { case "UseNone": case "UseOutlines": case "UseThumbs": case "UseOC": s = a.name; break; default: s = "UseNone" }break; case "Direction": if (a instanceof Name) switch (a.name) { case "L2R": case "R2L": s = a.name; break; default: s = "L2R" }break; case "ViewArea": case "ViewClip": case "PrintArea": case "PrintClip": if (a instanceof Name) switch (a.name) { case "MediaBox": case "CropBox": case "BleedBox": case "TrimBox": case "ArtBox": s = a.name; break; default: s = "CropBox" }break; case "PrintScaling": if (a instanceof Name) switch (a.name) { case "None": case "AppDefault": s = a.name; break; default: s = "AppDefault" }break; case "Duplex": if (a instanceof Name) switch (a.name) { case "Simplex": case "DuplexFlipShortEdge": case "DuplexFlipLongEdge": s = a.name; break; default: s = "None" }break; case "PrintPageRange": if (Array.isArray(a) && a.length % 2 == 0) { a.every(((e, t, i) => Number.isInteger(e) && e > 0 && (0 === t || e >= i[t - 1]) && e <= this.numPages)) && (s = a) } break; case "NumCopies": Number.isInteger(a) && a > 0 && (s = a); break; default: warn(`Ignoring non-standard key in ViewerPreferences: ${i}.`); continue }if (void 0 !== s) { t || (t = Object.create(null)); t[i] = s } else warn(`Bad value, for key "${i}", in ViewerPreferences: ${a}.`) } return shadow(this, "viewerPreferences", t) } get openAction() { const e = this._catDict.get("OpenAction"), t = Object.create(null); if (e instanceof Dict) { const i = new Dict(this.xref); i.set("A", e); const a = { url: null, dest: null, action: null }; Catalog.parseDestDictionary({ destDict: i, resultObj: a }); Array.isArray(a.dest) ? t.dest = a.dest : a.action && (t.action = a.action) } else Array.isArray(e) && (t.dest = e); return shadow(this, "openAction", objectSize(t) > 0 ? t : null) } get attachments() { const e = this._catDict.get("Names"); let t = null; if (e instanceof Dict && e.has("EmbeddedFiles")) { const i = new NameTree(e.getRaw("EmbeddedFiles"), this.xref); for (const [e, a] of i.getAll()) { const i = new FileSpec(a, this.xref); t || (t = Object.create(null)); t[stringToPDFString(e)] = i.serializable } } return shadow(this, "attachments", t) } get xfaImages() { const e = this._catDict.get("Names"); let t = null; if (e instanceof Dict && e.has("XFAImages")) { const i = new NameTree(e.getRaw("XFAImages"), this.xref); for (const [e, a] of i.getAll()) { t || (t = new Dict(this.xref)); t.set(stringToPDFString(e), a) } } return shadow(this, "xfaImages", t) } _collectJavaScript() { const e = this._catDict.get("Names"); let t = null; function appendIfJavaScriptDict(e, i) { if (!(i instanceof Dict)) return; if (!isName(i.get("S"), "JavaScript")) return; let a = i.get("JS"); if (a instanceof BaseStream) a = a.getString(); else if ("string" != typeof a) return; a = stringToPDFString(a).replaceAll("\0", ""); a && (t ||= new Map).set(e, a) } if (e instanceof Dict && e.has("JavaScript")) { const t = new NameTree(e.getRaw("JavaScript"), this.xref); for (const [e, i] of t.getAll()) appendIfJavaScriptDict(stringToPDFString(e), i) } const i = this._catDict.get("OpenAction"); i && appendIfJavaScriptDict("OpenAction", i); return t } get jsActions() { const e = this._collectJavaScript(); let t = collectActions(this.xref, this._catDict, dA); if (e) { t ||= Object.create(null); for (const [i, a] of e) i in t ? t[i].push(a) : t[i] = [a] } return shadow(this, "jsActions", t) } async fontFallback(e, t) { const i = await Promise.all(this.fontCache); for (const a of i) if (a.loadedName === e) { a.fallback(t); return } } async cleanup(e = !1) { 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], i = new RefSet, a = this._catDict.getRaw("Pages"); a instanceof Ref && i.put(a); const s = this.xref, r = this.pageKidsCountCache, n = this.pageIndexCache; let o = 0; for (; t.length;) { const a = t.pop(); if (a instanceof Ref) { const g = r.get(a); if (g >= 0 && o + g <= e) { o += g; continue } if (i.has(a)) throw new FormatError("Pages tree contains circular reference."); i.put(a); const c = await s.fetchAsync(a); if (c instanceof Dict) { let t = c.getRaw("Type"); t instanceof Ref && (t = await s.fetchAsync(t)); if (isName(t, "Page") || !c.has("Kids")) { r.has(a) || r.put(a, 1); n.has(a) || n.put(a, o); if (o === e) return [c, a]; o++; continue } } t.push(c); continue } if (!(a instanceof Dict)) throw new FormatError("Page dictionary kid reference points to wrong type of object."); const { objId: g } = a; let c = a.getRaw("Count"); c instanceof Ref && (c = await s.fetchAsync(c)); if (Number.isInteger(c) && c >= 0) { g && !r.has(g) && r.put(g, c); if (o + c <= e) { o += c; continue } } let h = a.getRaw("Kids"); h instanceof Ref && (h = await s.fetchAsync(h)); if (!Array.isArray(h)) { let t = a.getRaw("Type"); t instanceof Ref && (t = await s.fetchAsync(t)); if (isName(t, "Page") || !a.has("Kids")) { if (o === e) return [a, null]; o++; continue } throw new FormatError("Page dictionary kids object is not an array.") } for (let e = h.length - 1; e >= 0; e--)t.push(h[e]) } throw new Error(`Page index ${e} not found.`) } async getAllPageDicts(e = !1) { const { ignoreErrors: t } = this.pdfManager.evaluatorOptions, i = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }], a = new RefSet, s = this._catDict.getRaw("Pages"); s instanceof Ref && a.put(s); const r = new Map, n = this.xref, o = this.pageIndexCache; let g = 0; function addPageDict(e, t) { t && !o.has(t) && o.put(t, g); r.set(g++, [e, t]) } function addPageError(i) { if (i instanceof XRefEntryException && !e) throw i; if (e && t && 0 === g) { warn(`getAllPageDicts - Skipping invalid first page: "${i}".`); i = Dict.empty } r.set(g++, [i, null]) } for (; i.length > 0;) { const e = i.at(-1), { currentNode: t, posInKids: s } = e; let r = t.getRaw("Kids"); if (r instanceof Ref) try { r = await n.fetchAsync(r) } catch (e) { addPageError(e); break } if (!Array.isArray(r)) { addPageError(new FormatError("Page dictionary kids object is not an array.")); break } if (s >= r.length) { i.pop(); continue } const o = r[s]; let g; if (o instanceof Ref) { if (a.has(o)) { addPageError(new FormatError("Pages tree contains circular reference.")); break } a.put(o); try { g = await n.fetchAsync(o) } catch (e) { addPageError(e); break } } else g = o; if (!(g instanceof Dict)) { addPageError(new FormatError("Page dictionary kid reference points to wrong type of object.")); break } let c = g.getRaw("Type"); if (c instanceof Ref) try { c = await n.fetchAsync(c) } catch (e) { addPageError(e); break } isName(c, "Page") || !g.has("Kids") ? addPageDict(g, o instanceof Ref ? o : null) : i.push({ currentNode: g, posInKids: 0 }); e.posInKids++ } return r } getPageIndex(e) { const t = this.pageIndexCache.get(e); if (void 0 !== t) return Promise.resolve(t); const i = this.xref; let a = 0; const next = t => function pagesBeforeRef(t) { let a, s = 0; return i.fetchAsync(t).then((function (i) { if (isRefsEqual(t, e) && !isDict(i, "Page") && !(i instanceof Dict && !i.has("Type") && i.has("Contents"))) throw new FormatError("The reference does not point to a /Page dictionary."); if (!i) return null; if (!(i instanceof Dict)) throw new FormatError("Node must be a dictionary."); a = i.getRaw("Parent"); return i.getAsync("Parent") })).then((function (e) { if (!e) return null; if (!(e instanceof Dict)) throw new FormatError("Parent must be a dictionary."); return e.getAsync("Kids") })).then((function (e) { if (!e) return null; const r = []; let n = !1; for (const a of e) { if (!(a instanceof Ref)) throw new FormatError("Kid must be a reference."); if (isRefsEqual(a, t)) { n = !0; break } r.push(i.fetchAsync(a).then((function (e) { if (!(e instanceof Dict)) throw new FormatError("Kid node must be a dictionary."); e.has("Count") ? s += e.get("Count") : s++ }))) } if (!n) throw new FormatError("Kid reference not found in parent's kids."); return Promise.all(r).then((function () { return [s, a] })) })) }(t).then((t => { if (!t) { this.pageIndexCache.put(e, a); return a } const [i, s] = t; a += i; return next(s) })); return next(e) } get baseUrl() { const e = this._catDict.get("URI"); if (e instanceof Dict) { const t = e.get("Base"); if ("string" == typeof t) { const e = createValidAbsoluteUrl(t, null, { tryConvertEncoding: !0 }); if (e) return shadow(this, "baseUrl", e.href) } } return shadow(this, "baseUrl", this.pdfManager.docBaseUrl) } static parseDestDictionary({ destDict: e, resultObj: t, docBaseUrl: i = null, docAttachments: a = null }) { if (!(e instanceof Dict)) { warn("parseDestDictionary: `destDict` must be a dictionary."); return } let s, r, n = e.get("A"); if (!(n instanceof Dict)) if (e.has("Dest")) n = e.get("Dest"); else { n = e.get("AA"); n instanceof Dict && (n.has("D") ? n = n.get("D") : n.has("U") && (n = n.get("U"))) } if (n instanceof Dict) { const e = n.get("S"); if (!(e instanceof Name)) { warn("parseDestDictionary: Invalid type in Action dictionary."); return } const i = e.name; switch (i) { case "ResetForm": const e = n.get("Flags"), o = 0 == (1 & ("number" == typeof e ? e : 0)), g = [], c = []; for (const e of n.get("Fields") || []) e instanceof Ref ? c.push(e.toString()) : "string" == typeof e && g.push(stringToPDFString(e)); t.resetForm = { fields: g, refs: c, include: o }; break; case "URI": s = n.get("URI"); s instanceof Name && (s = "/" + s.name); break; case "GoTo": r = n.get("D"); break; case "Launch": case "GoToR": const h = n.get("F"); if (h instanceof Dict) { const e = new FileSpec(h, null, !0), { rawFilename: t } = e.serializable; s = t } else "string" == typeof h && (s = h); const l = fetchRemoteDest(n); l && "string" == typeof s && (s = s.split("#", 1)[0] + "#" + l); const C = n.get("NewWindow"); "boolean" == typeof C && (t.newWindow = C); break; case "GoToE": const Q = n.get("T"); let E; if (a && Q instanceof Dict) { const e = Q.get("R"), t = Q.get("N"); isName(e, "C") && "string" == typeof t && (E = a[stringToPDFString(t)]) } if (E) { t.attachment = E; const e = fetchRemoteDest(n); e && (t.attachmentDest = e) } else warn('parseDestDictionary - unimplemented "GoToE" action.'); break; case "Named": const u = n.get("N"); u instanceof Name && (t.action = u.name); break; case "SetOCGState": const d = n.get("State"), f = n.get("PreserveRB"); if (!Array.isArray(d) || 0 === d.length) break; const p = []; for (const e of d) if (e instanceof Name) switch (e.name) { case "ON": case "OFF": case "Toggle": p.push(e.name) } else e instanceof Ref && p.push(e.toString()); if (p.length !== d.length) break; t.setOCGState = { state: p, preserveRB: "boolean" != typeof f || f }; break; case "JavaScript": const m = n.get("JS"); let y; m instanceof BaseStream ? y = m.getString() : "string" == typeof m && (y = m); const w = y && recoverJsURL(stringToPDFString(y)); if (w) { s = w.url; t.newWindow = w.newWindow; break } default: if ("JavaScript" === i || "SubmitForm" === i) break; warn(`parseDestDictionary - unsupported action: "${i}".`) } } else e.has("Dest") && (r = e.get("Dest")); if ("string" == typeof s) { const e = createValidAbsoluteUrl(s, i, { addDefaultProtocol: !0, tryConvertEncoding: !0 }); e && (t.url = e.href); t.unsafeUrl = s } if (r) { r instanceof Name && (r = r.name); "string" == typeof r ? t.dest = stringToPDFString(r) : isValidExplicitDest(r) && (t.dest = r) } } } function addChildren(e, t) { if (e instanceof Dict) e = e.getRawValues(); else if (e instanceof BaseStream) e = e.dict.getRawValues(); else if (!Array.isArray(e)) return; for (const a of e) ((i = a) instanceof Ref || i instanceof Dict || i instanceof BaseStream || Array.isArray(i)) && t.push(a); var i } class ObjectLoader { constructor(e, t, i) { this.dict = e; this.keys = t; this.xref = i; this.refSet = null } async load() { if (this.xref.stream.isDataLoaded) return; const { keys: e, dict: t } = this; this.refSet = new RefSet; const i = []; for (const a of e) { const e = t.getRaw(a); void 0 !== e && i.push(e) } return this._walk(i) } async _walk(e) { const t = [], i = []; for (; e.length;) { let a = e.pop(); if (a instanceof Ref) { if (this.refSet.has(a)) continue; try { this.refSet.put(a); a = this.xref.fetch(a) } catch (e) { if (!(e instanceof MissingDataException)) { warn(`ObjectLoader._walk - requesting all data: "${e}".`); this.refSet = null; const { manager: t } = this.xref.stream; return t.requestAllChunks() } t.push(a); i.push({ begin: e.begin, end: e.end }) } } if (a instanceof BaseStream) { const e = a.getBaseStreams(); if (e) { let s = !1; for (const t of e) if (!t.isDataLoaded) { s = !0; i.push({ begin: t.start, end: t.end }) } s && t.push(a) } } addChildren(a, e) } if (i.length) { await this.xref.stream.manager.requestRanges(i); for (const e of t) e instanceof Ref && this.refSet.remove(e); return this._walk(t) } this.refSet = null } } const Ws = Symbol(), Xs = Symbol(), js = Symbol(), Zs = Symbol(), Vs = Symbol(), zs = Symbol(), _s = Symbol(), $s = Symbol(), Ar = Symbol(), er = Symbol("content"), tr = Symbol("data"), ir = Symbol(), ar = Symbol("extra"), sr = Symbol(), rr = Symbol(), nr = Symbol(), or = Symbol(), gr = Symbol(), Ir = Symbol(), cr = Symbol(), hr = Symbol(), lr = Symbol(), Cr = Symbol(), Qr = Symbol(), Er = Symbol(), ur = Symbol(), dr = Symbol(), fr = Symbol(), pr = Symbol(), mr = Symbol(), yr = Symbol(), wr = Symbol(), br = Symbol(), Dr = Symbol(), Fr = Symbol(), Sr = Symbol(), kr = Symbol(), Rr = Symbol(), Nr = Symbol(), Gr = Symbol(), xr = Symbol(), Mr = Symbol(), Ur = Symbol(), Lr = Symbol(), Jr = Symbol(), Hr = Symbol("namespaceId"), Yr = Symbol("nodeName"), vr = Symbol(), Kr = Symbol(), Tr = Symbol(), qr = Symbol(), Or = Symbol(), Pr = Symbol(), Wr = Symbol(), Xr = Symbol(), jr = Symbol("root"), Zr = Symbol(), Vr = Symbol(), zr = Symbol(), _r = Symbol(), $r = Symbol(), An = Symbol(), en = Symbol(), tn = Symbol(), an = Symbol(), sn = Symbol(), rn = Symbol(), nn = Symbol("uid"), on = Symbol(), gn = { 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 } }, In = { pt: e => e, cm: e => e / 2.54 * 72, mm: e => e / 25.4 * 72, in: e => 72 * e, px: e => e }, cn = /([+-]?\d+\.?\d*)(.*)/; function stripQuotes(e) { return e.startsWith("'") || e.startsWith('"') ? e.slice(1, -1) : e } function getInteger({ data: e, defaultValue: t, validate: i }) { if (!e) return t; e = e.trim(); const a = parseInt(e, 10); return !isNaN(a) && i(a) ? a : t } function getFloat({ data: e, defaultValue: t, validate: i }) { if (!e) return t; e = e.trim(); const a = parseFloat(e); return !isNaN(a) && i(a) ? a : t } function getKeyword({ data: e, defaultValue: t, validate: i }) { return e && i(e = e.trim()) ? e : t } function getStringOption(e, t) { return getKeyword({ data: e, defaultValue: t[0], validate: e => t.includes(e) }) } function getMeasurement(e, t = "0") { t ||= "0"; if (!e) return getMeasurement(t); const i = e.trim().match(cn); if (!i) return getMeasurement(t); const [, a, s] = i, r = parseFloat(a); if (isNaN(r)) return getMeasurement(t); if (0 === r) return 0; const n = In[s]; return n ? n(r) : r } 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 [i, a] = t; return { num: i, den: a } } function getRelevant(e) { return e ? e.trim().split(/\s+/).map((e => ({ excluded: "-" === e[0], viewname: e.substring(1) }))) : [] } class HTMLResult { static get FAILURE() { return shadow(this, "FAILURE", new HTMLResult(!1, null, null, null)) } static get EMPTY() { return shadow(this, "EMPTY", new HTMLResult(!0, null, null, null)) } constructor(e, t, i, a) { this.success = e; this.html = t; this.bbox = i; this.breakNode = a } 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) } } 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 i = this.fonts.get("PdfJS-Fallback-PdfJS-XFA"); for (const e of t) this.fonts.set(e, i) } addPdfFont(e) { const t = e.cssFontInfo, i = t.fontFamily; let a = this.fonts.get(i); if (!a) { a = Object.create(null); this.fonts.set(i, a); this.defaultFont || (this.defaultFont = a) } let s = ""; const r = parseFloat(t.fontWeight); 0 !== parseFloat(t.italicAngle) ? s = r >= 700 ? "bolditalic" : "italic" : r >= 700 && (s = "bold"); if (!s) { (e.name.includes("Bold") || e.psName?.includes("Bold")) && (s = "bold"); (e.name.includes("Italic") || e.name.endsWith("It") || e.psName?.includes("Italic") || e.psName?.endsWith("It")) && (s += "italic") } s || (s = "regular"); a[s] = e } getDefault() { return this.defaultFont } find(e, t = !0) { let i = this.fonts.get(e) || this.cache.get(e); if (i) return i; const a = /,|-|_| |bolditalic|bold|italic|regular|it/gi; let s = e.replaceAll(a, ""); i = this.fonts.get(s); if (i) { this.cache.set(e, i); return i } s = s.toLowerCase(); const r = []; for (const [e, t] of this.fonts.entries()) e.replaceAll(a, "").toLowerCase().startsWith(s) && r.push(t); if (0 === r.length) for (const [, e] of this.fonts.entries()) e.regular.name?.replaceAll(a, "").toLowerCase().startsWith(s) && r.push(e); if (0 === r.length) { s = s.replaceAll(/psmt|mt/gi, ""); for (const [e, t] of this.fonts.entries()) e.replaceAll(a, "").toLowerCase().startsWith(s) && r.push(t) } if (0 === r.length) for (const e of this.fonts.values()) e.regular.name?.replaceAll(a, "").toLowerCase().startsWith(s) && r.push(e); if (r.length >= 1) { 1 !== r.length && t && warn(`XFA - Too many choices to guess the correct font: ${e}`); this.cache.set(e, r[0]); return r[0] } if (t && !this.warned.has(e)) { this.warned.add(e); 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 } class FontInfo { constructor(e, t, i, a) { this.lineHeight = i; this.paraMargin = t || { top: 0, bottom: 0, left: 0, right: 0 }; if (!e) { [this.pdfFont, this.xfaFont] = this.defaultFont(a); return } this.xfaFont = { typeface: e.typeface, posture: e.posture, weight: e.weight, size: e.size, letterSpacing: e.letterSpacing }; const s = a.find(e.typeface); if (s) { this.pdfFont = selectFont(e, s); this.pdfFont || ([this.pdfFont, this.xfaFont] = this.defaultFont(a)) } else[this.pdfFont, this.xfaFont] = this.defaultFont(a) } 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, i, a) { this.fontFinder = a; this.stack = [new FontInfo(e, t, i, a)] } pushData(e, t, i) { const a = this.stack.at(-1); for (const t of ["typeface", "posture", "weight", "size", "letterSpacing"]) e[t] || (e[t] = a.xfaFont[t]); for (const e of ["top", "bottom", "left", "right"]) isNaN(t[e]) && (t[e] = a.paraMargin[e]); const s = new FontInfo(e, t, i || a.lineHeight, this.fontFinder); s.pdfFont || (s.pdfFont = a.pdfFont); this.stack.push(s) } popFont() { this.stack.pop() } topFont() { return this.stack.at(-1) } } class TextMeasure { constructor(e, t, i, a) { this.glyphs = []; this.fontSelector = new FontSelector(e, t, i, a); this.extraHeight = 0 } pushData(e, t, i) { this.fontSelector.pushData(e, t, i) } 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(), i = t.xfaFont.size; if (t.pdfFont) { const a = t.xfaFont.letterSpacing, s = t.pdfFont, r = s.lineHeight || 1.2, n = t.lineHeight || Math.max(1.2, r) * i, o = r - (void 0 === s.lineGap ? .2 : s.lineGap), g = Math.max(1, o) * i, c = i / 1e3, h = s.defaultWidth || s.charsToGlyphs(" ")[0].width; for (const t of e.split(/[\u2029\n]/)) { const e = s.encodeString(t).join(""), i = s.charsToGlyphs(e); for (const e of i) { const t = e.width || h; this.glyphs.push([t * c + a, n, g, 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([i, 1.2 * i, i, e, !1]); this.glyphs.push([0, 0, 0, "\n", !0]) } this.glyphs.pop() } } compute(e) { let t = -1, i = 0, a = 0, s = 0, r = 0, n = 0, o = !1, g = !0; for (let c = 0, h = this.glyphs.length; c < h; c++) { const [h, l, C, Q, E] = this.glyphs[c], u = " " === Q, d = g ? C : l; if (E) { a = Math.max(a, r); r = 0; s += n; n = d; t = -1; i = 0; g = !1 } else if (u) if (r + h > e) { a = Math.max(a, r); r = 0; s += n; n = d; t = -1; i = 0; o = !0; g = !1 } else { n = Math.max(d, n); i = r; r += h; t = c } else if (r + h > e) { s += n; n = d; if (-1 !== t) { c = t; a = Math.max(a, i); r = 0; t = -1; i = 0 } else { a = Math.max(a, r); r = h } o = !0; g = !1 } else { r += h; n = Math.max(d, n) } } a = Math.max(a, r); s += n + this.extraHeight; return { width: 1.02 * a, height: s, isBroken: o } } } const hn = /^[^.[]+/, ln = /^[^\]]+/, Cn = { dot: 0, dotDot: 1, dotHash: 2, dotBracket: 3, dotParen: 4 }, Bn = new Map([["$data", (e, t) => e.datasets ? e.datasets.data : e], ["$record", (e, t) => (e.datasets ? e.datasets.data : e)[Er]()[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]]), Qn = new WeakMap; function parseExpression(e, t, i = !0) { let a = e.match(hn); if (!a) return null; let [s] = a; const r = [{ name: s, cacheName: "." + s, index: 0, js: null, formCalc: null, operator: Cn.dot }]; let n = s.length; for (; n < e.length;) { const g = n; if ("[" === e.charAt(n++)) { a = e.slice(n).match(ln); if (!a) { warn("XFA - Invalid index in SOM expression"); return null } r.at(-1).index = "*" === (o = (o = a[0]).trim()) ? 1 / 0 : parseInt(o, 10) || 0; n += a[0].length + 1; continue } let c; switch (e.charAt(n)) { case ".": if (!t) return null; n++; c = Cn.dotDot; break; case "#": n++; c = Cn.dotHash; break; case "[": if (i) { warn("XFA - SOM expression contains a FormCalc subexpression which is not supported for now."); return null } c = Cn.dotBracket; break; case "(": if (i) { warn("XFA - SOM expression contains a JavaScript subexpression which is not supported for now."); return null } c = Cn.dotParen; break; default: c = Cn.dot }a = e.slice(n).match(hn); if (!a) break;[s] = a; n += s.length; r.push({ name: s, cacheName: e.slice(g, n), operator: c, index: 0, js: null, formCalc: null }) } var o; return r } function searchNode(e, t, i, a = !0, s = !0) { const r = parseExpression(i, a); if (!r) return null; const n = Bn.get(r[0].name); let o, g = 0; if (n) { o = !0; e = [n(e, t)]; g = 1 } else { o = null === t; e = [t || e] } for (let i = r.length; g < i; g++) { const { name: i, cacheName: a, operator: n, index: c } = r[g], h = []; for (const t of e) { if (!t.isXFAObject) continue; let e, r; if (s) { r = Qn.get(t); if (!r) { r = new Map; Qn.set(t, r) } e = r.get(a) } if (!e) { switch (n) { case Cn.dot: e = t[cr](i, !1); break; case Cn.dotDot: e = t[cr](i, !0); break; case Cn.dotHash: e = t[Ir](i); e = e.isXFAObjectArray ? e.children : [e] }s && r.set(a, e) } e.length > 0 && h.push(e) } if (0 !== h.length || o || 0 !== g) e = isFinite(c) ? h.filter((e => c < e.length)).map((e => e[c])) : h.flat(); else { const i = t[pr](); if (!(t = i)) return null; g = -1; e = [t] } } return 0 === e.length ? null : e } function createDataNode(e, t, i) { const a = parseExpression(i); if (!a) return null; if (a.some((e => e.operator === Cn.dotDot))) return null; const s = Bn.get(a[0].name); let r = 0; if (s) { e = s(e, t); r = 1 } else e = t || e; for (let t = a.length; r < t; r++) { const { name: t, operator: i, index: s } = a[r]; if (!isFinite(s)) { a[r].index = 0; return e.createNodes(a.slice(r)) } let n; switch (i) { case Cn.dot: n = e[cr](t, !1); break; case Cn.dotDot: n = e[cr](t, !0); break; case Cn.dotHash: n = e[Ir](t); n = n.isXFAObjectArray ? n.children : [n] }if (0 === n.length) return e.createNodes(a.slice(r)); if (!(s < n.length)) { a[r].index = s - n.length; return e.createNodes(a.slice(r)) } { const t = n[s]; if (!t.isXFAObject) { warn("XFA - Cannot create a node."); return null } e = t } } return null } const En = Symbol(), un = Symbol(), dn = Symbol(), fn = Symbol("_children"), pn = Symbol(), mn = Symbol(), yn = Symbol(), wn = Symbol(), bn = Symbol(), Dn = Symbol(), Fn = Symbol(), Sn = Symbol(), kn = Symbol(), Rn = Symbol("parent"), Nn = Symbol(), Gn = Symbol(), xn = Symbol(); let Mn = 0; const Un = gn.datasets.id; class XFAObject { constructor(e, t, i = !1) { this[Hr] = e; this[Yr] = t; this[Fn] = i; this[Rn] = null; this[fn] = []; this[nn] = `${t}${Mn++}`; this[yr] = null } get isXFAObject() { return !0 } get isXFAObjectArray() { return !1 } createNodes(e) { let t = this, i = null; for (const { name: a, index: s } of e) { for (let e = 0, r = isFinite(s) ? s : 0; e <= r; e++) { const e = t[Hr] === Un ? -1 : t[Hr]; i = new XmlObject(e, a); t[js](i) } t = i } return i } [Kr](e) { if (!this[Fn] || !this[Tr](e)) return !1; const t = e[Yr], i = this[t]; if (!(i instanceof XFAObjectArray)) { null !== i && this[Xr](i); this[t] = e; this[js](e); return !0 } if (i.push(e)) { this[js](e); return !0 } let a = ""; this.id ? a = ` (id: ${this.id})` : this.name && (a = ` (name: ${this.name} ${this.h.value})`); warn(`XFA - node "${this[Yr]}"${a} has already enough "${t}"!`); return !1 } [Tr](e) { return this.hasOwnProperty(e[Yr]) && e[Hr] === this[Hr] } [Gr]() { return !1 } [Ws]() { return !1 } [Sr]() { return !1 } [kr]() { return !1 } [Pr]() { this.para && this[mr]()[ar].paraStack.pop() } [Wr]() { this[mr]()[ar].paraStack.push(this.para) } [zr](e) { this.id && this[Hr] === gn.template.id && e.set(this.id, this) } [mr]() { return this[yr].template } [xr]() { return !1 } [Mr]() { return !1 } [js](e) { e[Rn] = this; this[fn].push(e); !e[yr] && this[yr] && (e[yr] = this[yr]) } [Xr](e) { const t = this[fn].indexOf(e); this[fn].splice(t, 1) } [wr]() { return this.hasOwnProperty("value") } [$r](e) { } [qr](e) { } [sr]() { } [Vs](e) { delete this[Fn]; if (this[_s]) { e.clean(this[_s]); delete this[_s] } } [Dr](e) { return this[fn].indexOf(e) } [Fr](e, t) { t[Rn] = this; this[fn].splice(e, 0, t); !t[yr] && this[yr] && (t[yr] = this[yr]) } [Ur]() { return !this.name } [Jr]() { return "" } [en]() { return 0 === this[fn].length ? this[er] : this[fn].map((e => e[en]())).join("") } get [dn]() { 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 shadow(this, dn, e._attributes) } [Nr](e) { let t = this; for (; t;) { if (t === e) return !0; t = t[pr]() } return !1 } [pr]() { return this[Rn] } [fr]() { return this[pr]() } [Er](e = null) { return e ? this[e] : this[fn] } [ir]() { const e = Object.create(null); this[er] && (e.$content = this[er]); for (const t of Object.getOwnPropertyNames(this)) { const i = this[t]; null !== i && (i instanceof XFAObject ? e[t] = i[ir]() : i instanceof XFAObjectArray ? i.isEmpty() || (e[t] = i.dump()) : e[t] = i) } return e } [rn]() { return null } [an]() { return HTMLResult.EMPTY } *[ur]() { for (const e of this[Er]()) yield e } *[wn](e, t) { for (const i of this[ur]()) if (!e || t === e.has(i[Yr])) { const e = this[gr](), t = i[an](e); t.success || (this[ar].failingNode = i); yield t } } [rr]() { return null } [Xs](e, t) { this[ar].children.push(e) } [gr]() { } [Zs]({ filter: e = null, include: t = !0 }) { if (this[ar].generator) { const e = this[gr](), t = this[ar].failingNode[an](e); if (!t.success) return t; t.html && this[Xs](t.html, t.bbox); delete this[ar].failingNode } else this[ar].generator = this[wn](e, t); for (; ;) { const e = this[ar].generator.next(); if (e.done) break; const t = e.value; if (!t.success) return t; t.html && this[Xs](t.html, t.bbox) } this[ar].generator = null; return HTMLResult.EMPTY } [_r](e) { this[Gn] = new Set(Object.keys(e)) } [Dn](e) { const t = this[dn], i = this[Gn]; return [...e].filter((e => t.has(e) && !i.has(e))) } [Zr](e, t = new Set) { for (const i of this[fn]) i[Nn](e, t) } [Nn](e, t) { const i = this[bn](e, t); i ? this[En](i, e, t) : this[Zr](e, t) } [bn](e, t) { const { use: i, usehref: a } = this; if (!i && !a) return null; let s = null, r = null, n = null, o = i; if (a) { o = a; a.startsWith("#som(") && a.endsWith(")") ? r = a.slice(5, -1) : a.startsWith(".#som(") && a.endsWith(")") ? r = a.slice(6, -1) : a.startsWith("#") ? n = a.slice(1) : a.startsWith(".#") && (n = a.slice(2)) } else i.startsWith("#") ? n = i.slice(1) : r = i; this.use = this.usehref = ""; if (n) s = e.get(n); else { s = searchNode(e.get(jr), this, r, !0, !1); s && (s = s[0]) } if (!s) { warn(`XFA - Invalid prototype reference: ${o}.`); return null } if (s[Yr] !== this[Yr]) { warn(`XFA - Incompatible prototype: ${s[Yr]} !== ${this[Yr]}.`); return null } if (t.has(s)) { warn("XFA - Cycle detected in prototypes use."); return null } t.add(s); const g = s[bn](e, t); g && s[En](g, e, t); s[Zr](e, t); t.delete(s); return s } [En](e, t, i) { if (i.has(e)) { warn("XFA - Cycle detected in prototypes use."); return } !this[er] && e[er] && (this[er] = e[er]); new Set(i).add(e); for (const t of this[Dn](e[Gn])) { this[t] = e[t]; this[Gn] && this[Gn].add(t) } for (const a of Object.getOwnPropertyNames(this)) { if (this[dn].has(a)) continue; const s = this[a], r = e[a]; if (s instanceof XFAObjectArray) { for (const e of s[fn]) e[Nn](t, i); for (let a = s[fn].length, n = r[fn].length; a < n; a++) { const r = e[fn][a][$s](); if (!s.push(r)) break; r[Rn] = this; this[fn].push(r); r[Nn](t, i) } } else if (null === s) { if (null !== r) { const e = r[$s](); e[Rn] = this; this[a] = e; this[fn].push(e); e[Nn](t, i) } } else { s[Zr](t, i); r && s[En](r, t, i) } } } static [pn](e) { return Array.isArray(e) ? e.map((e => XFAObject[pn](e))) : "object" == typeof e && null !== e ? Object.assign({}, e) : e } [$s]() { const e = Object.create(Object.getPrototypeOf(this)); for (const t of Object.getOwnPropertySymbols(this)) try { e[t] = this[t] } catch { shadow(e, t, this[t]) } e[nn] = `${e[Yr]}${Mn++}`; e[fn] = []; for (const t of Object.getOwnPropertyNames(this)) { if (this[dn].has(t)) { e[t] = XFAObject[pn](this[t]); continue } const i = this[t]; e[t] = i instanceof XFAObjectArray ? new XFAObjectArray(i[Sn]) : null } for (const t of this[fn]) { const i = t[Yr], a = t[$s](); e[fn].push(a); a[Rn] = e; null === e[i] ? e[i] = a : e[i][fn].push(a) } return e } [Er](e = null) { return e ? this[fn].filter((t => t[Yr] === e)) : this[fn] } [Ir](e) { return this[e] } [cr](e, t, i = !0) { return Array.from(this[hr](e, t, i)) } *[hr](e, t, i = !0) { if ("parent" !== e) { for (const i of this[fn]) { i[Yr] === e && (yield i); i.name === e && (yield i); (t || i[Ur]()) && (yield* i[hr](e, t, !1)) } i && this[dn].has(e) && (yield new XFAAttribute(this, e, this[e])) } else yield this[Rn] } } class XFAObjectArray { constructor(e = 1 / 0) { this[Sn] = e; this[fn] = [] } get isXFAObject() { return !1 } get isXFAObjectArray() { return !0 } push(e) { if (this[fn].length <= this[Sn]) { this[fn].push(e); return !0 } warn(`XFA - node "${e[Yr]}" accepts no more than ${this[Sn]} children`); return !1 } isEmpty() { return 0 === this[fn].length } dump() { return 1 === this[fn].length ? this[fn][0][ir]() : this[fn].map((e => e[ir]())) } [$s]() { const e = new XFAObjectArray(this[Sn]); e[fn] = this[fn].map((e => e[$s]())); return e } get children() { return this[fn] } clear() { this[fn].length = 0 } } class XFAAttribute { constructor(e, t, i) { this[Rn] = e; this[Yr] = t; this[er] = i; this[Ar] = !1; this[nn] = "attribute" + Mn++ } [pr]() { return this[Rn] } [Rr]() { return !0 } [lr]() { return this[er].trim() } [$r](e) { e = e.value || ""; this[er] = e.toString() } [en]() { return this[er] } [Nr](e) { return this[Rn] === e || this[Rn][Nr](e) } } class XmlObject extends XFAObject { constructor(e, t, i = {}) { super(e, t); this[er] = ""; this[mn] = null; if ("#text" !== t) { const e = new Map; this[un] = e; for (const [t, a] of Object.entries(i)) e.set(t, new XFAAttribute(this, t, a)); if (i.hasOwnProperty(vr)) { const e = i[vr].xfa.dataNode; void 0 !== e && ("dataGroup" === e ? this[mn] = !1 : "dataValue" === e && (this[mn] = !0)) } } this[Ar] = !1 } [sn](e) { const t = this[Yr]; if ("#text" === t) { e.push(encodeToXmlString(this[er])); return } const i = utf8StringToString(t), a = this[Hr] === Un ? "xfa:" : ""; e.push(`<${a}${i}`); for (const [t, i] of this[un].entries()) { const a = utf8StringToString(t); e.push(` ${a}="${encodeToXmlString(i[er])}"`) } null !== this[mn] && (this[mn] ? e.push(' xfa:dataNode="dataValue"') : e.push(' xfa:dataNode="dataGroup"')); if (this[er] || 0 !== this[fn].length) { e.push(">"); if (this[er]) "string" == typeof this[er] ? e.push(encodeToXmlString(this[er])) : this[er][sn](e); else for (const t of this[fn]) t[sn](e); e.push(``) } else e.push("/>") } [Kr](e) { if (this[er]) { const e = new XmlObject(this[Hr], "#text"); this[js](e); e[er] = this[er]; this[er] = "" } this[js](e); return !0 } [qr](e) { this[er] += e } [sr]() { if (this[er] && this[fn].length > 0) { const e = new XmlObject(this[Hr], "#text"); this[js](e); e[er] = this[er]; delete this[er] } } [an]() { return "#text" === this[Yr] ? HTMLResult.success({ name: "#text", value: this[er] }) : HTMLResult.EMPTY } [Er](e = null) { return e ? this[fn].filter((t => t[Yr] === e)) : this[fn] } [or]() { return this[un] } [Ir](e) { const t = this[un].get(e); return void 0 !== t ? t : this[Er](e) } *[hr](e, t) { const i = this[un].get(e); i && (yield i); for (const i of this[fn]) { i[Yr] === e && (yield i); t && (yield* i[hr](e, t)) } } *[nr](e, t) { const i = this[un].get(e); !i || t && i[Ar] || (yield i); for (const i of this[fn]) yield* i[nr](e, t) } *[Qr](e, t, i) { for (const a of this[fn]) { a[Yr] !== e || i && a[Ar] || (yield a); t && (yield* a[Qr](e, t, i)) } } [Rr]() { return null === this[mn] ? 0 === this[fn].length || this[fn][0][Hr] === gn.xhtml.id : this[mn] } [lr]() { return null === this[mn] ? 0 === this[fn].length ? this[er].trim() : this[fn][0][Hr] === gn.xhtml.id ? this[fn][0][en]().trim() : null : this[er].trim() } [$r](e) { e = e.value || ""; this[er] = e.toString() } [ir](e = !1) { const t = Object.create(null); e && (t.$ns = this[Hr]); this[er] && (t.$content = this[er]); t.$name = this[Yr]; t.children = []; for (const i of this[fn]) t.children.push(i[ir](e)); t.attributes = Object.create(null); for (const [e, i] of this[un]) t.attributes[e] = i[er]; return t } } class ContentObject extends XFAObject { constructor(e, t) { super(e, t); this[er] = "" } [qr](e) { this[er] += e } [sr]() { } } class OptionObject extends ContentObject { constructor(e, t, i) { super(e, t); this[kn] = i } [sr]() { this[er] = getKeyword({ data: this[er], defaultValue: this[kn][0], validate: e => this[kn].includes(e) }) } [Vs](e) { super[Vs](e); delete this[kn] } } class StringObject extends ContentObject { [sr]() { this[er] = this[er].trim() } } class IntegerObject extends ContentObject { constructor(e, t, i, a) { super(e, t); this[yn] = i; this[xn] = a } [sr]() { this[er] = getInteger({ data: this[er], defaultValue: this[yn], validate: this[xn] }) } [Vs](e) { super[Vs](e); delete this[yn]; delete this[xn] } } class Option01 extends IntegerObject { constructor(e, t) { super(e, t, 0, (e => 1 === e)) } } class Option10 extends IntegerObject { constructor(e, t) { super(e, t, 1, (e => 0 === e)) } } function measureToString(e) { return "string" == typeof e ? "0px" : Number.isInteger(e) ? `${e}px` : `${e.toFixed(2)}px` } const Ln = { anchorType(e, t) { const i = e[fr](); if (i && (!i.layout || "position" === i.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 i = e[fr](); let a = e.w; const s = e.h; if (i.layout?.includes("row")) { const t = i[ar], s = e.colSpan; let r; if (-1 === s) { r = t.columnWidths.slice(t.currentColumn).reduce(((e, t) => e + t), 0); t.currentColumn = 0 } else { r = t.columnWidths.slice(t.currentColumn, t.currentColumn + s).reduce(((e, t) => e + t), 0); t.currentColumn = (t.currentColumn + e.colSpan) % t.columnWidths.length } isNaN(r) || (a = e.w = r) } t.width = "" !== a ? measureToString(a) : "auto"; t.height = "" !== s ? measureToString(s) : "auto" }, position(e, t) { const i = e[fr](); if (!i?.layout || "position" === i.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[Yr]) 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[rn]().margin) } }; function setMinMaxDimensions(e, t) { if ("position" === e[fr]().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)) } } function layoutText(e, t, i, a, s, r) { const n = new TextMeasure(t, i, a, s); "string" == typeof e ? n.addString(e) : e[Or](n); return n.compute(r) } function layoutNode(e, t) { let i = null, a = null, s = !1; if ((!e.w || !e.h) && e.value) { let r = 0, n = 0; if (e.margin) { r = e.margin.leftInset + e.margin.rightInset; n = e.margin.topInset + e.margin.bottomInset } let o = null, g = null; if (e.para) { g = Object.create(null); o = "" === e.para.lineHeight ? null : e.para.lineHeight; g.top = "" === e.para.spaceAbove ? 0 : e.para.spaceAbove; g.bottom = "" === e.para.spaceBelow ? 0 : e.para.spaceBelow; g.left = "" === e.para.marginLeft ? 0 : e.para.marginLeft; g.right = "" === e.para.marginRight ? 0 : e.para.marginRight } let c = e.font; if (!c) { const t = e[mr](); let i = e[pr](); for (; i && i !== t;) { if (i.font) { c = i.font; break } i = i[pr]() } } const h = (e.w || t.width) - r, l = e[yr].fontFinder; if (e.value.exData && e.value.exData[er] && "text/html" === e.value.exData.contentType) { const t = layoutText(e.value.exData[er], c, g, o, l, h); a = t.width; i = t.height; s = t.isBroken } else { const t = e.value[en](); if (t) { const e = layoutText(t, c, g, o, l, h); a = e.width; i = e.height; s = e.isBroken } } null === a || e.w || (a += r); null === i || e.h || (i += n) } return { w: a, h: i, isBroken: s } } function computeBbox(e, t, i) { let a; if ("" !== e.w && "" !== e.h) a = [e.x, e.y, e.w, e.h]; else { if (!i) return null; let s = e.w; if ("" === s) { if (0 === e.maxW) { const t = e[fr](); s = "position" === t.layout && "" !== t.w ? 0 : e.minW } else s = Math.min(e.maxW, i.width); t.attributes.style.width = measureToString(s) } let r = e.h; if ("" === r) { if (0 === e.maxH) { const t = e[fr](); r = "position" === t.layout && "" !== t.h ? 0 : e.minH } else r = Math.min(e.maxH, i.height); t.attributes.style.height = measureToString(r) } a = [e.x, e.y, s, r] } return a } function fixDimensions(e) { const t = e[fr](); if (t.layout?.includes("row")) { const i = t[ar], a = e.colSpan; let s; s = -1 === a ? i.columnWidths.slice(i.currentColumn).reduce(((e, t) => e + t), 0) : i.columnWidths.slice(i.currentColumn, i.currentColumn + a).reduce(((e, t) => e + t), 0); isNaN(s) || (e.w = s) } 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)) } 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" } } function toStyle(e, ...t) { const i = Object.create(null); for (const a of t) { const t = e[a]; if (null !== t) if (Ln.hasOwnProperty(a)) Ln[a](e, i); else if (t instanceof XFAObject) { const e = t[rn](); e ? Object.assign(i, e) : warn(`(DEBUG) - XFA - style for ${a} not implemented yet`) } } return i } function createWrapper(e, t) { const { attributes: i } = t, { style: a } = i, s = { name: "div", attributes: { class: ["xfaWrapper"], style: Object.create(null) }, children: [] }; i.class.push("xfaWrapped"); if (e.border) { const { widths: i, insets: r } = e.border[ar]; let n, o, g = r[0], c = r[3]; const h = r[0] + r[2], l = r[1] + r[3]; switch (e.border.hand) { case "even": g -= i[0] / 2; c -= i[3] / 2; n = `calc(100% + ${(i[1] + i[3]) / 2 - l}px)`; o = `calc(100% + ${(i[0] + i[2]) / 2 - h}px)`; break; case "left": g -= i[0]; c -= i[3]; n = `calc(100% + ${i[1] + i[3] - l}px)`; o = `calc(100% + ${i[0] + i[2] - h}px)`; break; case "right": n = l ? `calc(100% - ${l}px)` : "100%"; o = h ? `calc(100% - ${h}px)` : "100%" }const C = ["xfaBorder"]; isPrintOnly(e.border) && C.push("xfaPrintOnly"); const Q = { name: "div", attributes: { class: C, style: { top: `${g}px`, left: `${c}px`, width: n, height: o } }, children: [] }; for (const e of ["border", "borderWidth", "borderColor", "borderRadius", "borderStyle"]) if (void 0 !== a[e]) { Q.attributes.style[e] = a[e]; delete a[e] } s.children.push(Q, t) } else s.children.push(t); for (const e of ["background", "backgroundClip", "top", "left", "width", "height", "minWidth", "minHeight", "maxWidth", "maxHeight", "transform", "transformOrigin", "visibility"]) if (void 0 !== a[e]) { s.attributes.style[e] = a[e]; delete a[e] } s.attributes.style.position = "absolute" === a.position ? "absolute" : "relative"; delete a.position; if (a.alignSelf) { s.attributes.style.alignSelf = a.alignSelf; delete a.alignSelf } return s } function fixTextIndent(e) { const t = getMeasurement(e.textIndent, "0px"); if (t >= 0) return; const i = "padding" + ("left" === ("right" === e.textAlign ? "right" : "left") ? "Left" : "Right"), a = getMeasurement(e[i], "0px"); e[i] = a - t + "px" } function setAccess(e, t) { switch (e.access) { case "nonInteractive": t.push("xfaNonInteractive"); break; case "readOnly": t.push("xfaReadOnly"); break; case "protected": t.push("xfaDisabled") } } function isPrintOnly(e) { return e.relevant.length > 0 && !e.relevant[0].excluded && "print" === e.relevant[0].viewname } function getCurrentPara(e) { const t = e[mr]()[ar].paraStack; return t.length ? t.at(-1) : null } function setPara(e, t, i) { if (i.attributes.class?.includes("xfaRich")) { if (t) { "" === e.h && (t.height = "auto"); "" === e.w && (t.width = "auto") } const a = getCurrentPara(e); if (a) { const e = i.attributes.style; e.display = "flex"; e.flexDirection = "column"; switch (a.vAlign) { case "top": e.justifyContent = "start"; break; case "bottom": e.justifyContent = "end"; break; case "middle": e.justifyContent = "center" }const t = a[rn](); for (const [i, a] of Object.entries(t)) i in e || (e[i] = a) } } } function setFontFamily(e, t, i, a) { if (!i) { delete a.fontFamily; return } const s = stripQuotes(e.typeface); a.fontFamily = `"${s}"`; const r = i.find(s); if (r) { const { fontFamily: i } = r.regular.cssFontInfo; i !== s && (a.fontFamily = `"${i}"`); const n = getCurrentPara(t); if (n && "" !== n.lineHeight) return; if (a.lineHeight) return; const o = selectFont(e, r); o && (a.lineHeight = Math.max(1.2, o.lineHeight)) } } function fixURL(e) { const t = createValidAbsoluteUrl(e, null, { addDefaultProtocol: !0, tryConvertEncoding: !0 }); return t ? t.href : null } function createLine(e, t) { return { name: "div", attributes: { class: ["lr-tb" === e.layout ? "xfaLr" : "xfaRl"] }, children: t } } function flushHTML(e) { if (!e[ar]) return null; const t = { name: "div", attributes: e[ar].attributes, children: e[ar].children }; if (e[ar].failingNode) { const i = e[ar].failingNode[rr](); i && (e.layout.endsWith("-tb") ? t.children.push(createLine(e, [i])) : t.children.push(i)) } return 0 === t.children.length ? null : t } function addHTML(e, t, i) { const a = e[ar], s = a.availableSpace, [r, n, o, g] = i; switch (e.layout) { case "position": a.width = Math.max(a.width, r + o); a.height = Math.max(a.height, n + g); a.children.push(t); break; case "lr-tb": case "rl-tb": if (!a.line || 1 === a.attempt) { a.line = createLine(e, []); a.children.push(a.line); a.numberInLine = 0 } a.numberInLine += 1; a.line.children.push(t); if (0 === a.attempt) { a.currentWidth += o; a.height = Math.max(a.height, a.prevHeight + g) } else { a.currentWidth = o; a.prevHeight = a.height; a.height += g; a.attempt = 0 } a.width = Math.max(a.width, a.currentWidth); break; case "rl-row": case "row": { a.children.push(t); a.width += o; a.height = Math.max(a.height, g); const e = measureToString(a.height); for (const t of a.children) t.attributes.style.height = e; break } case "table": case "tb": a.width = Math.min(s.width, Math.max(a.width, o)); a.height += g; a.children.push(t) } } function getAvailableSpace(e) { const t = e[ar].availableSpace, i = e.margin ? e.margin.topInset + e.margin.bottomInset : 0, a = e.margin ? e.margin.leftInset + e.margin.rightInset : 0; switch (e.layout) { case "lr-tb": case "rl-tb": return 0 === e[ar].attempt ? { width: t.width - a - e[ar].currentWidth, height: t.height - i - e[ar].prevHeight } : { width: t.width - a, height: t.height - i - e[ar].height }; case "rl-row": case "row": return { width: e[ar].columnWidths.slice(e[ar].currentColumn).reduce(((e, t) => e + t)), height: t.height - a }; case "table": case "tb": return { width: t.width - a, height: t.height - i - e[ar].height }; default: return t } } function checkDimensions(e, t) { if (null === e[mr]()[ar].firstUnsplittable) return !0; if (0 === e.w || 0 === e.h) return !0; const i = e[fr](), a = i[ar]?.attempt || 0, [, s, r, n] = function getTransformedBBox(e) { let t, i, a = "" === e.w ? NaN : e.w, s = "" === e.h ? NaN : e.h, [r, n] = [0, 0]; switch (e.anchorType || "") { case "bottomCenter": [r, n] = [a / 2, s]; break; case "bottomLeft": [r, n] = [0, s]; break; case "bottomRight": [r, n] = [a, s]; break; case "middleCenter": [r, n] = [a / 2, s / 2]; break; case "middleLeft": [r, n] = [0, s / 2]; break; case "middleRight": [r, n] = [a, s / 2]; break; case "topCenter": [r, n] = [a / 2, 0]; break; case "topRight": [r, n] = [a, 0] }switch (e.rotate || 0) { case 0: [t, i] = [-r, -n]; break; case 90: [t, i] = [-n, r];[a, s] = [s, -a]; break; case 180: [t, i] = [r, n];[a, s] = [-a, -s]; break; case 270: [t, i] = [n, -r];[a, s] = [-s, a] }return [e.x + t + Math.min(0, a), e.y + i + Math.min(0, s), Math.abs(a), Math.abs(s)] }(e); switch (i.layout) { case "lr-tb": case "rl-tb": return 0 === a ? e[mr]()[ar].noLayoutFailure ? "" !== e.w ? Math.round(r - t.width) <= 2 : t.width > 2 : !("" !== e.h && Math.round(n - t.height) > 2) && ("" !== e.w ? Math.round(r - t.width) <= 2 || 0 === i[ar].numberInLine && t.height > 2 : t.width > 2) : !!e[mr]()[ar].noLayoutFailure || !("" !== e.h && Math.round(n - t.height) > 2) && (("" === e.w || Math.round(r - t.width) <= 2 || !i[Mr]()) && t.height > 2); case "table": case "tb": return !!e[mr]()[ar].noLayoutFailure || ("" === e.h || e[xr]() ? ("" === e.w || Math.round(r - t.width) <= 2 || !i[Mr]()) && t.height > 2 : Math.round(n - t.height) <= 2); case "position": if (e[mr]()[ar].noLayoutFailure) return !0; if ("" === e.h || Math.round(n + s - t.height) <= 2) return !0; return n + s > e[mr]()[ar].currentContentArea.h; case "rl-row": case "row": return !!e[mr]()[ar].noLayoutFailure || ("" === e.h || Math.round(n - t.height) <= 2); default: return !0 } } const Jn = gn.template.id, Hn = "http://www.w3.org/2000/svg", Yn = /^H(\d+)$/, vn = 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"]), Kn = [[[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[Cr](); 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[js](t); e.value = t } e.value[$r](t) } function* getContainedChildren(e) { for (const t of e[Er]()) t instanceof SubformSet ? yield* t[ur]() : yield t } function isRequired(e) { return "error" === e.validate?.nullTest } function setTabIndex(e) { for (; e;) { if (!e.traversal) { e[An] = e[pr]()[An]; return } if (e[An]) return; let t = null; for (const i of e.traversal[Er]()) if ("next" === i.operation) { t = i; break } if (!t || !t.ref) { e[An] = e[pr]()[An]; return } const i = e[mr](); e[An] = ++i[An]; const a = i[Vr](t.ref, e); if (!a) return; e = a[0] } } function applyAssist(e, t) { const i = e.assist; if (i) { const e = i[an](); e && (t.title = e); const a = i.role.match(Yn); if (a) { const e = "heading", i = a[1]; t.role = e; t["aria-level"] = i } } if ("table" === e.layout) t.role = "table"; else if ("row" === e.layout) t.role = "row"; else { const i = e[pr](); "row" === i.layout && (t.role = "TH" === i.assist?.role ? "columnheader" : "cell") } } function ariaLabel(e) { if (!e.assist) return null; const t = e.assist; return t.speak && "" !== t.speak[er] ? t.speak[er] : t.toolTip ? t.toolTip[er] : null } function valueToHtml(e) { return 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[mr](); if (null === t[ar].firstUnsplittable) { t[ar].firstUnsplittable = e; t[ar].noLayoutFailure = !0 } } function unsetFirstUnsplittable(e) { const t = e[mr](); t[ar].firstUnsplittable === e && (t[ar].noLayoutFailure = !1) } function handleBreak(e) { if (e[ar]) return !1; e[ar] = Object.create(null); if ("auto" === e.targetType) return !1; const t = e[mr](); let i = null; if (e.target) { i = t[Vr](e.target, e[pr]()); if (!i) return !1; i = i[0] } const { currentPageArea: a, currentContentArea: s } = t[ar]; if ("pageArea" === e.targetType) { i instanceof PageArea || (i = null); if (e.startNew) { e[ar].target = i || a; return !0 } if (i && i !== a) { e[ar].target = i; return !0 } return !1 } i instanceof ContentArea || (i = null); const r = i && i[pr](); let n, o = r; if (e.startNew) if (i) { const e = r.contentArea.children, t = e.indexOf(s), a = e.indexOf(i); -1 !== t && t < a && (o = null); n = a - 1 } else n = a.contentArea.children.indexOf(s); else { if (!i || i === s) return !1; n = r.contentArea.children.indexOf(i) - 1; o = r === a ? null : r } e[ar].target = o; e[ar].index = n; return !0 } function handleOverflow(e, t, i) { const a = e[mr](), s = a[ar].noLayoutFailure, r = t[fr]; t[fr] = () => e; a[ar].noLayoutFailure = !0; const n = t[an](i); e[Xs](n.html, n.bbox); a[ar].noLayoutFailure = s; t[fr] = r } class AppearanceFilter extends StringObject { constructor(e) { super(Jn, "appearanceFilter"); this.id = e.id || ""; this.type = getStringOption(e.type, ["optional", "required"]); this.use = e.use || ""; this.usehref = e.usehref || "" } } class Arc extends XFAObject { constructor(e) { super(Jn, "arc", !0); this.circular = getInteger({ data: e.circular, defaultValue: 0, validate: e => 1 === e }); this.hand = getStringOption(e.hand, ["even", "left", "right"]); this.id = e.id || ""; this.startAngle = getFloat({ data: e.startAngle, defaultValue: 0, validate: e => !0 }); this.sweepAngle = getFloat({ data: e.sweepAngle, defaultValue: 360, validate: e => !0 }); this.use = e.use || ""; this.usehref = e.usehref || ""; this.edge = null; this.fill = null } [an]() { const e = this.edge || new Edge({}), t = e[rn](), i = Object.create(null); "visible" === this.fill?.presence ? Object.assign(i, this.fill[rn]()) : i.fill = "transparent"; i.strokeWidth = measureToString("visible" === e.presence ? e.thickness : 0); i.stroke = t.color; let a; const s = { xmlns: Hn, style: { width: "100%", height: "100%", overflow: "visible" } }; if (360 === this.sweepAngle) a = { name: "ellipse", attributes: { xmlns: Hn, cx: "50%", cy: "50%", rx: "50%", ry: "50%", style: i } }; else { const e = this.startAngle * Math.PI / 180, t = this.sweepAngle * Math.PI / 180, r = this.sweepAngle > 180 ? 1 : 0, [n, o, g, c] = [50 * (1 + Math.cos(e)), 50 * (1 - Math.sin(e)), 50 * (1 + Math.cos(e + t)), 50 * (1 - Math.sin(e + t))]; a = { name: "path", attributes: { xmlns: Hn, d: `M ${n} ${o} A 50 50 0 ${r} 0 ${g} ${c}`, vectorEffect: "non-scaling-stroke", style: i } }; Object.assign(s, { viewBox: "0 0 100 100", preserveAspectRatio: "none" }) } const r = { name: "svg", children: [a], attributes: s }; if (hasMargin(this[pr]()[pr]())) return HTMLResult.success({ name: "div", attributes: { style: { display: "inline", width: "100%", height: "100%" } }, children: [r] }); r.attributes.style.position = "absolute"; return HTMLResult.success(r) } } class Area extends XFAObject { constructor(e) { super(Jn, "area", !0); this.colSpan = getInteger({ data: e.colSpan, defaultValue: 1, validate: e => e >= 1 || -1 === e }); this.id = e.id || ""; this.name = e.name || ""; this.relevant = getRelevant(e.relevant); this.use = e.use || ""; this.usehref = e.usehref || ""; this.x = getMeasurement(e.x, "0pt"); this.y = getMeasurement(e.y, "0pt"); this.desc = null; this.extras = null; this.area = new XFAObjectArray; this.draw = new XFAObjectArray; this.exObject = new XFAObjectArray; this.exclGroup = new XFAObjectArray; this.field = new XFAObjectArray; this.subform = new XFAObjectArray; this.subformSet = new XFAObjectArray } *[ur]() { yield* getContainedChildren(this) } [Ur]() { return !0 } [kr]() { return !0 } [Xs](e, t) { const [i, a, s, r] = t; this[ar].width = Math.max(this[ar].width, i + s); this[ar].height = Math.max(this[ar].height, a + r); this[ar].children.push(e) } [gr]() { return this[ar].availableSpace } [an](e) { const t = toStyle(this, "position"), i = { style: t, id: this[nn], class: ["xfaArea"] }; isPrintOnly(this) && i.class.push("xfaPrintOnly"); this.name && (i.xfaName = this.name); const a = []; this[ar] = { children: a, width: 0, height: 0, availableSpace: e }; const s = this[Zs]({ filter: new Set(["area", "draw", "field", "exclGroup", "subform", "subformSet"]), include: !0 }); if (!s.success) { if (s.isBreak()) return s; delete this[ar]; return HTMLResult.FAILURE } t.width = measureToString(this[ar].width); t.height = measureToString(this[ar].height); const r = { name: "div", attributes: i, children: a }, n = [this.x, this.y, this[ar].width, this[ar].height]; delete this[ar]; return HTMLResult.success(r, n) } } class Assist extends XFAObject { constructor(e) { super(Jn, "assist", !0); this.id = e.id || ""; this.role = e.role || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.speak = null; this.toolTip = null } [an]() { return this.toolTip?.[er] || null } } class Barcode extends XFAObject { constructor(e) { super(Jn, "barcode", !0); this.charEncoding = 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 = getStringOption(e.checksum, ["none", "1mod10", "1mod10_1mod11", "2mod10", "auto"]); this.dataColumnCount = getInteger({ data: e.dataColumnCount, defaultValue: -1, validate: e => e >= 0 }); this.dataLength = getInteger({ data: e.dataLength, defaultValue: -1, validate: e => e >= 0 }); this.dataPrep = getStringOption(e.dataPrep, ["none", "flateCompress"]); this.dataRowCount = getInteger({ data: e.dataRowCount, defaultValue: -1, validate: e => e >= 0 }); this.endChar = e.endChar || ""; this.errorCorrectionLevel = getInteger({ data: e.errorCorrectionLevel, defaultValue: -1, validate: e => e >= 0 && e <= 8 }); this.id = e.id || ""; this.moduleHeight = getMeasurement(e.moduleHeight, "5mm"); this.moduleWidth = getMeasurement(e.moduleWidth, "0.25mm"); this.printCheckDigit = getInteger({ data: e.printCheckDigit, defaultValue: 0, validate: e => 1 === e }); this.rowColumnRatio = getRatio(e.rowColumnRatio); this.startChar = e.startChar || ""; this.textLocation = getStringOption(e.textLocation, ["below", "above", "aboveEmbedded", "belowEmbedded", "none"]); this.truncate = getInteger({ data: e.truncate, defaultValue: 0, validate: e => 1 === e }); this.type = 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 = getStringOption(e.upsMode, ["usCarrier", "internationalCarrier", "secureSymbol", "standardSymbol"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.wideNarrowRatio = getRatio(e.wideNarrowRatio); this.encrypt = null; this.extras = null } } class Bind extends XFAObject { constructor(e) { super(Jn, "bind", !0); this.match = getStringOption(e.match, ["once", "dataRef", "global", "none"]); this.ref = e.ref || ""; this.picture = null } } class BindItems extends XFAObject { constructor(e) { super(Jn, "bindItems"); this.connection = e.connection || ""; this.labelRef = e.labelRef || ""; this.ref = e.ref || ""; this.valueRef = e.valueRef || "" } } class Bookend extends XFAObject { constructor(e) { super(Jn, "bookend"); this.id = e.id || ""; this.leader = e.leader || ""; this.trailer = e.trailer || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class BooleanElement extends Option01 { constructor(e) { super(Jn, "boolean"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } [an](e) { return valueToHtml(1 === this[er] ? "1" : "0") } } class Border extends XFAObject { constructor(e) { super(Jn, "border", !0); this.break = getStringOption(e.break, ["close", "open"]); this.hand = getStringOption(e.hand, ["even", "left", "right"]); this.id = e.id || ""; this.presence = getStringOption(e.presence, ["visible", "hidden", "inactive", "invisible"]); this.relevant = getRelevant(e.relevant); this.use = e.use || ""; this.usehref = e.usehref || ""; this.corner = new XFAObjectArray(4); this.edge = new XFAObjectArray(4); this.extras = null; this.fill = null; this.margin = null } [Cr]() { if (!this[ar]) { const e = this.edge.children.slice(); if (e.length < 4) { const t = e.at(-1) || new Edge({}); for (let i = e.length; i < 4; i++)e.push(t) } const t = e.map((e => e.thickness)), i = [0, 0, 0, 0]; if (this.margin) { i[0] = this.margin.topInset; i[1] = this.margin.rightInset; i[2] = this.margin.bottomInset; i[3] = this.margin.leftInset } this[ar] = { widths: t, insets: i, edges: e } } return this[ar] } [rn]() { const { edges: e } = this[Cr](), t = e.map((e => { const t = e[rn](); t.color ||= "#000000"; return t })), i = Object.create(null); this.margin && Object.assign(i, this.margin[rn]()); "visible" === this.fill?.presence && Object.assign(i, this.fill[rn]()); if (this.corner.children.some((e => 0 !== e.radius))) { const e = this.corner.children.map((e => e[rn]())); if (2 === e.length || 3 === e.length) { const t = e.at(-1); for (let i = e.length; i < 4; i++)e.push(t) } i.borderRadius = e.map((e => e.radius)).join(" ") } switch (this.presence) { case "invisible": case "hidden": i.borderStyle = ""; break; case "inactive": i.borderStyle = "none"; break; default: i.borderStyle = t.map((e => e.style)).join(" ") }i.borderWidth = t.map((e => e.width)).join(" "); i.borderColor = t.map((e => e.color)).join(" "); return i } } class Break extends XFAObject { constructor(e) { super(Jn, "break", !0); this.after = getStringOption(e.after, ["auto", "contentArea", "pageArea", "pageEven", "pageOdd"]); this.afterTarget = e.afterTarget || ""; this.before = 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 = getInteger({ data: e.startNew, defaultValue: 0, validate: e => 1 === e }); this.use = e.use || ""; this.usehref = e.usehref || ""; this.extras = null } } class BreakAfter extends XFAObject { constructor(e) { super(Jn, "breakAfter", !0); this.id = e.id || ""; this.leader = e.leader || ""; this.startNew = getInteger({ data: e.startNew, defaultValue: 0, validate: e => 1 === e }); this.target = e.target || ""; this.targetType = getStringOption(e.targetType, ["auto", "contentArea", "pageArea"]); this.trailer = e.trailer || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.script = null } } class BreakBefore extends XFAObject { constructor(e) { super(Jn, "breakBefore", !0); this.id = e.id || ""; this.leader = e.leader || ""; this.startNew = getInteger({ data: e.startNew, defaultValue: 0, validate: e => 1 === e }); this.target = e.target || ""; this.targetType = getStringOption(e.targetType, ["auto", "contentArea", "pageArea"]); this.trailer = e.trailer || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.script = null } [an](e) { this[ar] = {}; return HTMLResult.FAILURE } } class Button extends XFAObject { constructor(e) { super(Jn, "button", !0); this.highlight = getStringOption(e.highlight, ["inverted", "none", "outline", "push"]); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.extras = null } [an](e) { const t = this[pr]()[pr](), i = { name: "button", attributes: { id: this[nn], class: ["xfaButton"], style: {} }, children: [] }; for (const e of t.event.children) { if ("click" !== e.activity || !e.script) continue; const t = recoverJsURL(e.script[er]); if (!t) continue; const a = fixURL(t.url); a && i.children.push({ name: "a", attributes: { id: "link" + this[nn], href: a, newWindow: t.newWindow, class: ["xfaLink"], style: {} }, children: [] }) } return HTMLResult.success(i) } } class Calculate extends XFAObject { constructor(e) { super(Jn, "calculate", !0); this.id = e.id || ""; this.override = 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 XFAObject { constructor(e) { super(Jn, "caption", !0); this.id = e.id || ""; this.placement = getStringOption(e.placement, ["left", "bottom", "inline", "right", "top"]); this.presence = getStringOption(e.presence, ["visible", "hidden", "inactive", "invisible"]); this.reserve = Math.ceil(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](e) { _setValue(this, e) } [Cr](e) { if (!this[ar]) { let { width: t, height: i } = e; switch (this.placement) { case "left": case "right": case "inline": t = this.reserve <= 0 ? t : this.reserve; break; case "top": case "bottom": i = this.reserve <= 0 ? i : this.reserve }this[ar] = layoutNode(this, { width: t, height: i }) } return this[ar] } [an](e) { if (!this.value) return HTMLResult.EMPTY; this[Wr](); const t = this.value[an](e).html; if (!t) { this[Pr](); return HTMLResult.EMPTY } const i = this.reserve; if (this.reserve <= 0) { const { w: t, h: i } = this[Cr](e); switch (this.placement) { case "left": case "right": case "inline": this.reserve = t; break; case "top": case "bottom": this.reserve = i } } const a = []; "string" == typeof t ? a.push({ name: "#text", value: t }) : a.push(t); const s = toStyle(this, "font", "margin", "visibility"); switch (this.placement) { case "left": case "right": this.reserve > 0 && (s.width = measureToString(this.reserve)); break; case "top": case "bottom": this.reserve > 0 && (s.height = measureToString(this.reserve)) }setPara(this, null, t); this[Pr](); this.reserve = i; return HTMLResult.success({ name: "div", attributes: { style: s, class: ["xfaCaption"] }, children: a }) } } class Certificate extends StringObject { constructor(e) { super(Jn, "certificate"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class Certificates extends XFAObject { constructor(e) { super(Jn, "certificates", !0); this.credentialServerPolicy = 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 XFAObject { constructor(e) { super(Jn, "checkButton", !0); this.id = e.id || ""; this.mark = getStringOption(e.mark, ["default", "check", "circle", "cross", "diamond", "square", "star"]); this.shape = getStringOption(e.shape, ["square", "round"]); this.size = getMeasurement(e.size, "10pt"); this.use = e.use || ""; this.usehref = e.usehref || ""; this.border = null; this.extras = null; this.margin = null } [an](e) { const t = toStyle("margin"), i = measureToString(this.size); t.width = t.height = i; let a, s, r; const n = this[pr]()[pr](), o = n.items.children.length && n.items.children[0][an]().html || [], g = { on: (void 0 !== o[0] ? o[0] : "on").toString(), off: (void 0 !== o[1] ? o[1] : "off").toString() }, c = (n.value?.[en]() || "off") === g.on || void 0, h = n[fr](), l = n[nn]; let C; if (h instanceof ExclGroup) { r = h[nn]; a = "radio"; s = "xfaRadio"; C = h[tr]?.[nn] || h[nn] } else { a = "checkbox"; s = "xfaCheckbox"; C = n[tr]?.[nn] || n[nn] } const Q = { name: "input", attributes: { class: [s], style: t, fieldId: l, dataId: C, type: a, checked: c, xfaOn: g.on, xfaOff: g.off, "aria-label": ariaLabel(n), "aria-required": !1 } }; r && (Q.attributes.name = r); if (isRequired(n)) { Q.attributes["aria-required"] = !0; Q.attributes.required = !0 } return HTMLResult.success({ name: "label", attributes: { class: ["xfaLabel"] }, children: [Q] }) } } class ChoiceList extends XFAObject { constructor(e) { super(Jn, "choiceList", !0); this.commitOn = getStringOption(e.commitOn, ["select", "exit"]); this.id = e.id || ""; this.open = getStringOption(e.open, ["userControl", "always", "multiSelect", "onEntry"]); this.textEntry = 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 } [an](e) { const t = toStyle(this, "border", "margin"), i = this[pr]()[pr](), a = { fontSize: `calc(${i.font?.size || 10}px * var(--scale-factor))` }, s = []; if (i.items.children.length > 0) { const e = i.items; let t = 0, r = 0; if (2 === e.children.length) { t = e.children[0].save; r = 1 - t } const n = e.children[t][an]().html, o = e.children[r][an]().html; let g = !1; const c = i.value?.[en]() || ""; for (let e = 0, t = n.length; e < t; e++) { const t = { name: "option", attributes: { value: o[e] || n[e], style: a }, value: n[e] }; o[e] === c && (t.attributes.selected = g = !0); s.push(t) } g || s.splice(0, 0, { name: "option", attributes: { hidden: !0, selected: !0 }, value: " " }) } const r = { class: ["xfaSelect"], fieldId: i[nn], dataId: i[tr]?.[nn] || i[nn], style: t, "aria-label": ariaLabel(i), "aria-required": !1 }; if (isRequired(i)) { r["aria-required"] = !0; r.required = !0 } "multiSelect" === this.open && (r.multiple = !0); return HTMLResult.success({ name: "label", attributes: { class: ["xfaLabel"] }, children: [{ name: "select", children: s, attributes: r }] }) } } class Color extends XFAObject { constructor(e) { super(Jn, "color", !0); this.cSpace = getStringOption(e.cSpace, ["SRGB"]); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.value = e.value ? function getColor(e, t = [0, 0, 0]) { let [i, a, s] = t; if (!e) return { r: i, g: a, b: s }; const r = e.trim().split(/\s*,\s*/).map((e => Math.min(Math.max(0, parseInt(e.trim(), 10)), 255))).map((e => isNaN(e) ? 0 : e)); if (r.length < 3) return { r: i, g: a, b: s };[i, a, s] = r; return { r: i, g: a, b: s } }(e.value) : ""; this.extras = null } [wr]() { return !1 } [rn]() { return this.value ? Util.makeHexColor(this.value.r, this.value.g, this.value.b) : null } } class Comb extends XFAObject { constructor(e) { super(Jn, "comb"); this.id = e.id || ""; this.numberOfCells = getInteger({ data: e.numberOfCells, defaultValue: 0, validate: e => e >= 0 }); this.use = e.use || ""; this.usehref = e.usehref || "" } } class Connect extends XFAObject { constructor(e) { super(Jn, "connect", !0); this.connection = e.connection || ""; this.id = e.id || ""; this.ref = e.ref || ""; this.usage = getStringOption(e.usage, ["exportAndImport", "exportOnly", "importOnly"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.picture = null } } class ContentArea extends XFAObject { constructor(e) { super(Jn, "contentArea", !0); this.h = getMeasurement(e.h); this.id = e.id || ""; this.name = e.name || ""; this.relevant = getRelevant(e.relevant); this.use = e.use || ""; this.usehref = e.usehref || ""; this.w = getMeasurement(e.w); this.x = getMeasurement(e.x, "0pt"); this.y = getMeasurement(e.y, "0pt"); this.desc = null; this.extras = null } [an](e) { const t = { left: measureToString(this.x), top: measureToString(this.y), width: measureToString(this.w), height: measureToString(this.h) }, i = ["xfaContentarea"]; isPrintOnly(this) && i.push("xfaPrintOnly"); return HTMLResult.success({ name: "div", children: [], attributes: { style: t, class: i, id: this[nn] } }) } } class Corner extends XFAObject { constructor(e) { super(Jn, "corner", !0); this.id = e.id || ""; this.inverted = getInteger({ data: e.inverted, defaultValue: 0, validate: e => 1 === e }); this.join = getStringOption(e.join, ["square", "round"]); this.presence = getStringOption(e.presence, ["visible", "hidden", "inactive", "invisible"]); this.radius = getMeasurement(e.radius); this.stroke = getStringOption(e.stroke, ["solid", "dashDot", "dashDotDot", "dashed", "dotted", "embossed", "etched", "lowered", "raised"]); this.thickness = getMeasurement(e.thickness, "0.5pt"); this.use = e.use || ""; this.usehref = e.usehref || ""; this.color = null; this.extras = null } [rn]() { const e = toStyle(this, "visibility"); e.radius = measureToString("square" === this.join ? 0 : this.radius); return e } } class DateElement extends ContentObject { constructor(e) { super(Jn, "date"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } [sr]() { const e = this[er].trim(); this[er] = e ? new Date(e) : null } [an](e) { return valueToHtml(this[er] ? this[er].toString() : "") } } class DateTime extends ContentObject { constructor(e) { super(Jn, "dateTime"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } [sr]() { const e = this[er].trim(); this[er] = e ? new Date(e) : null } [an](e) { return valueToHtml(this[er] ? this[er].toString() : "") } } class DateTimeEdit extends XFAObject { constructor(e) { super(Jn, "dateTimeEdit", !0); this.hScrollPolicy = getStringOption(e.hScrollPolicy, ["auto", "off", "on"]); this.id = e.id || ""; this.picker = 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 } [an](e) { const t = toStyle(this, "border", "font", "margin"), i = this[pr]()[pr](), a = { name: "input", attributes: { type: "text", fieldId: i[nn], dataId: i[tr]?.[nn] || i[nn], class: ["xfaTextfield"], style: t, "aria-label": ariaLabel(i), "aria-required": !1 } }; if (isRequired(i)) { a.attributes["aria-required"] = !0; a.attributes.required = !0 } return HTMLResult.success({ name: "label", attributes: { class: ["xfaLabel"] }, children: [a] }) } } class Decimal extends ContentObject { constructor(e) { super(Jn, "decimal"); this.fracDigits = getInteger({ data: e.fracDigits, defaultValue: 2, validate: e => !0 }); this.id = e.id || ""; this.leadDigits = getInteger({ data: e.leadDigits, defaultValue: -1, validate: e => !0 }); this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } [sr]() { const e = parseFloat(this[er].trim()); this[er] = isNaN(e) ? null : e } [an](e) { return valueToHtml(null !== this[er] ? this[er].toString() : "") } } class DefaultUi extends XFAObject { constructor(e) { super(Jn, "defaultUi", !0); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.extras = null } } class Desc extends XFAObject { constructor(e) { super(Jn, "desc", !0); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.boolean = new XFAObjectArray; this.date = new XFAObjectArray; this.dateTime = new XFAObjectArray; this.decimal = new XFAObjectArray; this.exData = new XFAObjectArray; this.float = new XFAObjectArray; this.image = new XFAObjectArray; this.integer = new XFAObjectArray; this.text = new XFAObjectArray; this.time = new XFAObjectArray } } class DigestMethod extends OptionObject { constructor(e) { super(Jn, "digestMethod", ["", "SHA1", "SHA256", "SHA512", "RIPEMD160"]); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class DigestMethods extends XFAObject { constructor(e) { super(Jn, "digestMethods", !0); this.id = e.id || ""; this.type = getStringOption(e.type, ["optional", "required"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.digestMethod = new XFAObjectArray } } class Draw extends XFAObject { constructor(e) { super(Jn, "draw", !0); this.anchorType = getStringOption(e.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); this.colSpan = getInteger({ data: e.colSpan, defaultValue: 1, validate: e => e >= 1 || -1 === e }); this.h = e.h ? getMeasurement(e.h) : ""; this.hAlign = getStringOption(e.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); this.id = e.id || ""; this.locale = e.locale || ""; this.maxH = getMeasurement(e.maxH, "0pt"); this.maxW = getMeasurement(e.maxW, "0pt"); this.minH = getMeasurement(e.minH, "0pt"); this.minW = getMeasurement(e.minW, "0pt"); this.name = e.name || ""; this.presence = getStringOption(e.presence, ["visible", "hidden", "inactive", "invisible"]); this.relevant = getRelevant(e.relevant); this.rotate = getInteger({ data: e.rotate, defaultValue: 0, validate: e => e % 90 == 0 }); this.use = e.use || ""; this.usehref = e.usehref || ""; this.w = e.w ? getMeasurement(e.w) : ""; this.x = getMeasurement(e.x, "0pt"); this.y = 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 XFAObjectArray } [$r](e) { _setValue(this, e) } [an](e) { setTabIndex(this); if ("hidden" === this.presence || "inactive" === this.presence) return HTMLResult.EMPTY; fixDimensions(this); this[Wr](); const t = this.w, i = this.h, { w: a, h: s, isBroken: r } = layoutNode(this, e); if (a && "" === this.w) { if (r && this[fr]()[Mr]()) { this[Pr](); return HTMLResult.FAILURE } this.w = a } s && "" === this.h && (this.h = s); setFirstUnsplittable(this); if (!checkDimensions(this, e)) { this.w = t; this.h = i; this[Pr](); return HTMLResult.FAILURE } unsetFirstUnsplittable(this); const n = toStyle(this, "font", "hAlign", "dimensions", "position", "presence", "rotate", "anchorType", "border", "margin"); setMinMaxDimensions(this, n); if (n.margin) { n.padding = n.margin; delete n.margin } const o = ["xfaDraw"]; this.font && o.push("xfaFont"); isPrintOnly(this) && o.push("xfaPrintOnly"); const g = { style: n, id: this[nn], class: o }; this.name && (g.xfaName = this.name); const c = { name: "div", attributes: g, children: [] }; applyAssist(this, g); const h = computeBbox(this, c, e), l = this.value ? this.value[an](e).html : null; if (null === l) { this.w = t; this.h = i; this[Pr](); return HTMLResult.success(createWrapper(this, c), h) } c.children.push(l); setPara(this, n, l); this.w = t; this.h = i; this[Pr](); return HTMLResult.success(createWrapper(this, c), h) } } class Edge extends XFAObject { constructor(e) { super(Jn, "edge", !0); this.cap = getStringOption(e.cap, ["square", "butt", "round"]); this.id = e.id || ""; this.presence = getStringOption(e.presence, ["visible", "hidden", "inactive", "invisible"]); this.stroke = getStringOption(e.stroke, ["solid", "dashDot", "dashDotDot", "dashed", "dotted", "embossed", "etched", "lowered", "raised"]); this.thickness = getMeasurement(e.thickness, "0.5pt"); this.use = e.use || ""; this.usehref = e.usehref || ""; this.color = null; this.extras = null } [rn]() { const e = toStyle(this, "visibility"); Object.assign(e, { linecap: this.cap, width: measureToString(this.thickness), color: this.color ? this.color[rn]() : "#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 OptionObject { constructor(e) { super(Jn, "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 XFAObject { constructor(e) { super(Jn, "encodings", !0); this.id = e.id || ""; this.type = getStringOption(e.type, ["optional", "required"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.encoding = new XFAObjectArray } } class Encrypt extends XFAObject { constructor(e) { super(Jn, "encrypt", !0); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.certificate = null } } class EncryptData extends XFAObject { constructor(e) { super(Jn, "encryptData", !0); this.id = e.id || ""; this.operation = 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 XFAObject { constructor(e) { super(Jn, "encryption", !0); this.id = e.id || ""; this.type = getStringOption(e.type, ["optional", "required"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.certificate = new XFAObjectArray } } class EncryptionMethod extends OptionObject { constructor(e) { super(Jn, "encryptionMethod", ["", "AES256-CBC", "TRIPLEDES-CBC", "AES128-CBC", "AES192-CBC"]); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class EncryptionMethods extends XFAObject { constructor(e) { super(Jn, "encryptionMethods", !0); this.id = e.id || ""; this.type = getStringOption(e.type, ["optional", "required"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.encryptionMethod = new XFAObjectArray } } class Event extends XFAObject { constructor(e) { super(Jn, "event", !0); this.activity = 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 = 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 ContentObject { constructor(e) { super(Jn, "exData"); this.contentType = e.contentType || ""; this.href = e.href || ""; this.id = e.id || ""; this.maxLength = getInteger({ data: e.maxLength, defaultValue: -1, validate: e => e >= -1 }); this.name = e.name || ""; this.rid = e.rid || ""; this.transferEncoding = getStringOption(e.transferEncoding, ["none", "base64", "package"]); this.use = e.use || ""; this.usehref = e.usehref || "" } [Sr]() { return "text/html" === this.contentType } [Kr](e) { if ("text/html" === this.contentType && e[Hr] === gn.xhtml.id) { this[er] = e; return !0 } if ("text/xml" === this.contentType) { this[er] = e; return !0 } return !1 } [an](e) { return "text/html" === this.contentType && this[er] ? this[er][an](e) : HTMLResult.EMPTY } } class ExObject extends XFAObject { constructor(e) { super(Jn, "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 XFAObjectArray; this.date = new XFAObjectArray; this.dateTime = new XFAObjectArray; this.decimal = new XFAObjectArray; this.exData = new XFAObjectArray; this.exObject = new XFAObjectArray; this.float = new XFAObjectArray; this.image = new XFAObjectArray; this.integer = new XFAObjectArray; this.text = new XFAObjectArray; this.time = new XFAObjectArray } } class ExclGroup extends XFAObject { constructor(e) { super(Jn, "exclGroup", !0); this.access = getStringOption(e.access, ["open", "nonInteractive", "protected", "readOnly"]); this.accessKey = e.accessKey || ""; this.anchorType = getStringOption(e.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); this.colSpan = getInteger({ data: e.colSpan, defaultValue: 1, validate: e => e >= 1 || -1 === e }); this.h = e.h ? getMeasurement(e.h) : ""; this.hAlign = getStringOption(e.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); this.id = e.id || ""; this.layout = getStringOption(e.layout, ["position", "lr-tb", "rl-row", "rl-tb", "row", "table", "tb"]); this.maxH = getMeasurement(e.maxH, "0pt"); this.maxW = getMeasurement(e.maxW, "0pt"); this.minH = getMeasurement(e.minH, "0pt"); this.minW = getMeasurement(e.minW, "0pt"); this.name = e.name || ""; this.presence = getStringOption(e.presence, ["visible", "hidden", "inactive", "invisible"]); this.relevant = getRelevant(e.relevant); this.use = e.use || ""; this.usehref = e.usehref || ""; this.w = e.w ? getMeasurement(e.w) : ""; this.x = getMeasurement(e.x, "0pt"); this.y = 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 XFAObjectArray; this.event = new XFAObjectArray; this.field = new XFAObjectArray; this.setProperty = new XFAObjectArray } [kr]() { return !0 } [wr]() { return !0 } [$r](e) { for (const t of this.field.children) { if (!t.value) { const e = new Value({}); t[js](e); t.value = e } t.value[$r](e) } } [Mr]() { return this.layout.endsWith("-tb") && 0 === this[ar].attempt && this[ar].numberInLine > 0 || this[pr]()[Mr]() } [xr]() { const e = this[fr](); if (!e[xr]()) return !1; if (void 0 !== this[ar]._isSplittable) return this[ar]._isSplittable; if ("position" === this.layout || this.layout.includes("row")) { this[ar]._isSplittable = !1; return !1 } if (e.layout?.endsWith("-tb") && 0 !== e[ar].numberInLine) return !1; this[ar]._isSplittable = !0; return !0 } [rr]() { return flushHTML(this) } [Xs](e, t) { addHTML(this, e, t) } [gr]() { return getAvailableSpace(this) } [an](e) { setTabIndex(this); if ("hidden" === this.presence || "inactive" === this.presence || 0 === this.h || 0 === this.w) return HTMLResult.EMPTY; fixDimensions(this); const t = [], i = { id: this[nn], class: [] }; setAccess(this, i.class); this[ar] || (this[ar] = Object.create(null)); Object.assign(this[ar], { children: t, attributes: i, 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 a = this[xr](); a || setFirstUnsplittable(this); if (!checkDimensions(this, e)) return HTMLResult.FAILURE; const s = new Set(["field"]); if (this.layout.includes("row")) { const e = this[fr]().columnWidths; if (Array.isArray(e) && e.length > 0) { this[ar].columnWidths = e; this[ar].currentColumn = 0 } } const r = toStyle(this, "anchorType", "dimensions", "position", "presence", "border", "margin", "hAlign"), n = ["xfaExclgroup"], o = layoutClass(this); o && n.push(o); isPrintOnly(this) && n.push("xfaPrintOnly"); i.style = r; i.class = n; this.name && (i.xfaName = this.name); this[Wr](); const g = "lr-tb" === this.layout || "rl-tb" === this.layout, c = g ? 2 : 1; for (; this[ar].attempt < c; this[ar].attempt++) { g && 1 === this[ar].attempt && (this[ar].numberInLine = 0); const e = this[Zs]({ filter: s, include: !0 }); if (e.success) break; if (e.isBreak()) { this[Pr](); return e } if (g && 0 === this[ar].attempt && 0 === this[ar].numberInLine && !this[mr]()[ar].noLayoutFailure) { this[ar].attempt = c; break } } this[Pr](); a || unsetFirstUnsplittable(this); if (this[ar].attempt === c) { a || delete this[ar]; return HTMLResult.FAILURE } let h = 0, l = 0; if (this.margin) { h = this.margin.leftInset + this.margin.rightInset; l = this.margin.topInset + this.margin.bottomInset } const C = Math.max(this[ar].width + h, this.w || 0), Q = Math.max(this[ar].height + l, this.h || 0), E = [this.x, this.y, C, Q]; "" === this.w && (r.width = measureToString(C)); "" === this.h && (r.height = measureToString(Q)); const u = { name: "div", attributes: i, children: t }; applyAssist(this, i); delete this[ar]; return HTMLResult.success(createWrapper(this, u), E) } } class Execute extends XFAObject { constructor(e) { super(Jn, "execute"); this.connection = e.connection || ""; this.executeType = getStringOption(e.executeType, ["import", "remerge"]); this.id = e.id || ""; this.runAt = getStringOption(e.runAt, ["client", "both", "server"]); this.use = e.use || ""; this.usehref = e.usehref || "" } } class Extras extends XFAObject { constructor(e) { super(Jn, "extras", !0); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.boolean = new XFAObjectArray; this.date = new XFAObjectArray; this.dateTime = new XFAObjectArray; this.decimal = new XFAObjectArray; this.exData = new XFAObjectArray; this.extras = new XFAObjectArray; this.float = new XFAObjectArray; this.image = new XFAObjectArray; this.integer = new XFAObjectArray; this.text = new XFAObjectArray; this.time = new XFAObjectArray } } class Field extends XFAObject { constructor(e) { super(Jn, "field", !0); this.access = getStringOption(e.access, ["open", "nonInteractive", "protected", "readOnly"]); this.accessKey = e.accessKey || ""; this.anchorType = getStringOption(e.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); this.colSpan = getInteger({ data: e.colSpan, defaultValue: 1, validate: e => e >= 1 || -1 === e }); this.h = e.h ? getMeasurement(e.h) : ""; this.hAlign = getStringOption(e.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); this.id = e.id || ""; this.locale = e.locale || ""; this.maxH = getMeasurement(e.maxH, "0pt"); this.maxW = getMeasurement(e.maxW, "0pt"); this.minH = getMeasurement(e.minH, "0pt"); this.minW = getMeasurement(e.minW, "0pt"); this.name = e.name || ""; this.presence = getStringOption(e.presence, ["visible", "hidden", "inactive", "invisible"]); this.relevant = getRelevant(e.relevant); this.rotate = getInteger({ data: e.rotate, defaultValue: 0, validate: e => e % 90 == 0 }); this.use = e.use || ""; this.usehref = e.usehref || ""; this.w = e.w ? getMeasurement(e.w) : ""; this.x = getMeasurement(e.x, "0pt"); this.y = 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 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 XFAObjectArray; this.connect = new XFAObjectArray; this.event = new XFAObjectArray; this.setProperty = new XFAObjectArray } [kr]() { return !0 } [$r](e) { _setValue(this, e) } [an](e) { setTabIndex(this); if (!this.ui) { this.ui = new Ui({}); this.ui[yr] = this[yr]; this[js](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[js](e) } if (!this.ui || "hidden" === this.presence || "inactive" === this.presence || 0 === this.h || 0 === this.w) return HTMLResult.EMPTY; this.caption && delete this.caption[ar]; this[Wr](); const t = this.caption ? this.caption[an](e).html : null, i = this.w, a = this.h; let s = 0, r = 0; if (this.margin) { s = this.margin.leftInset + this.margin.rightInset; r = this.margin.topInset + this.margin.bottomInset } let n = null; if ("" === this.w || "" === this.h) { let t = null, i = null, a = 0, o = 0; if (this.ui.checkButton) a = o = this.ui.checkButton.size; else { const { w: t, h: i } = layoutNode(this, e); if (null !== t) { a = t; o = i } else o = function fonts_getMetrics(e, t = !1) { let i = null; if (e) { const t = stripQuotes(e.typeface), a = e[yr].fontFinder.find(t); i = selectFont(e, a) } if (!i) return { lineHeight: 12, lineGap: 2, lineNoGap: 10 }; const a = e.size || 10, s = i.lineHeight ? Math.max(t ? 0 : 1.2, i.lineHeight) : 1.2, r = void 0 === i.lineGap ? .2 : i.lineGap; return { lineHeight: s * a, lineGap: r * a, lineNoGap: Math.max(1, s - r) * a } }(this.font, !0).lineNoGap } n = getBorderDims(this.ui[Cr]()); a += n.w; o += n.h; if (this.caption) { const { w: s, h: r, isBroken: n } = this.caption[Cr](e); if (n && this[fr]()[Mr]()) { this[Pr](); return HTMLResult.FAILURE } t = s; i = r; switch (this.caption.placement) { case "left": case "right": case "inline": t += a; break; case "top": case "bottom": i += o } } else { t = a; i = o } if (t && "" === this.w) { t += s; this.w = Math.min(this.maxW <= 0 ? 1 / 0 : this.maxW, this.minW + 1 < t ? t : this.minW) } if (i && "" === this.h) { i += r; this.h = Math.min(this.maxH <= 0 ? 1 / 0 : this.maxH, this.minH + 1 < i ? i : this.minH) } } this[Pr](); fixDimensions(this); setFirstUnsplittable(this); if (!checkDimensions(this, e)) { this.w = i; this.h = a; this[Pr](); return HTMLResult.FAILURE } unsetFirstUnsplittable(this); const o = toStyle(this, "font", "dimensions", "position", "rotate", "anchorType", "presence", "margin", "hAlign"); setMinMaxDimensions(this, o); const g = ["xfaField"]; this.font && g.push("xfaFont"); isPrintOnly(this) && g.push("xfaPrintOnly"); const c = { style: o, id: this[nn], class: g }; if (o.margin) { o.padding = o.margin; delete o.margin } setAccess(this, g); this.name && (c.xfaName = this.name); const h = [], l = { name: "div", attributes: c, children: h }; applyAssist(this, c); const C = this.border ? this.border[rn]() : null, Q = computeBbox(this, l, e), E = this.ui[an]().html; if (!E) { Object.assign(o, C); return HTMLResult.success(createWrapper(this, l), Q) } this[An] && (E.children?.[0] ? E.children[0].attributes.tabindex = this[An] : E.attributes.tabindex = this[An]); E.attributes.style || (E.attributes.style = Object.create(null)); let u = null; if (this.ui.button) { 1 === E.children.length && ([u] = E.children.splice(0, 1)); Object.assign(E.attributes.style, C) } else Object.assign(o, C); h.push(E); if (this.value) if (this.ui.imageEdit) E.children.push(this.value[an]().html); else if (!this.ui.button) { let e = ""; if (this.value.exData) e = this.value.exData[en](); else if (this.value.text) e = this.value.text[Cr](); else { const t = this.value[an]().html; null !== t && (e = t.children[0].value) } this.ui.textEdit && this.value.text?.maxChars && (E.children[0].attributes.maxLength = this.value.text.maxChars); if (e) { if (this.ui.numericEdit) { e = parseFloat(e); e = isNaN(e) ? "" : e.toString() } "textarea" === E.children[0].name ? E.children[0].attributes.textContent = e : E.children[0].attributes.value = e } } if (!this.ui.imageEdit && E.children?.[0] && this.h) { n = n || getBorderDims(this.ui[Cr]()); let t = 0; if (this.caption && ["top", "bottom"].includes(this.caption.placement)) { t = this.caption.reserve; t <= 0 && (t = this.caption[Cr](e).h); const i = this.h - t - r - n.h; E.children[0].attributes.style.height = measureToString(i) } else E.children[0].attributes.style.height = "100%" } u && E.children.push(u); if (!t) { E.attributes.class && E.attributes.class.push("xfaLeft"); this.w = i; this.h = a; return HTMLResult.success(createWrapper(this, l), Q) } if (this.ui.button) { o.padding && delete o.padding; "div" === t.name && (t.name = "span"); E.children.push(t); return HTMLResult.success(l, Q) } this.ui.checkButton && (t.attributes.class[0] = "xfaCaptionForCheckButton"); E.attributes.class || (E.attributes.class = []); E.children.splice(0, 0, t); switch (this.caption.placement) { case "left": case "inline": E.attributes.class.push("xfaLeft"); break; case "right": E.attributes.class.push("xfaRight"); break; case "top": E.attributes.class.push("xfaTop"); break; case "bottom": E.attributes.class.push("xfaBottom") }this.w = i; this.h = a; return HTMLResult.success(createWrapper(this, l), Q) } } class Fill extends XFAObject { constructor(e) { super(Jn, "fill", !0); this.id = e.id || ""; this.presence = getStringOption(e.presence, ["visible", "hidden", "inactive", "invisible"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.color = null; this.extras = null; this.linear = null; this.pattern = null; this.radial = null; this.solid = null; this.stipple = null } [rn]() { const e = this[pr](), t = e[pr]()[pr](), i = Object.create(null); let a = "color", s = a; if (e instanceof Border) { a = "background-color"; s = "background"; t instanceof Ui && (i.backgroundColor = "white") } if (e instanceof Rectangle || e instanceof Arc) { a = s = "fill"; i.fill = "white" } for (const e of Object.getOwnPropertyNames(this)) { if ("extras" === e || "color" === e) continue; const t = this[e]; if (!(t instanceof XFAObject)) continue; const r = t[rn](this.color); r && (i[r.startsWith("#") ? a : s] = r); return i } if (this.color?.value) { const e = this.color[rn](); i[e.startsWith("#") ? a : s] = e } return i } } class Filter extends XFAObject { constructor(e) { super(Jn, "filter", !0); this.addRevocationInfo = getStringOption(e.addRevocationInfo, ["", "required", "optional", "none"]); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.version = getInteger({ data: this.version, defaultValue: 5, validate: e => e >= 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 ContentObject { constructor(e) { super(Jn, "float"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } [sr]() { const e = parseFloat(this[er].trim()); this[er] = isNaN(e) ? null : e } [an](e) { return valueToHtml(null !== this[er] ? this[er].toString() : "") } } class template_Font extends XFAObject { constructor(e) { super(Jn, "font", !0); this.baselineShift = getMeasurement(e.baselineShift); this.fontHorizontalScale = getFloat({ data: e.fontHorizontalScale, defaultValue: 100, validate: e => e >= 0 }); this.fontVerticalScale = getFloat({ data: e.fontVerticalScale, defaultValue: 100, validate: e => e >= 0 }); this.id = e.id || ""; this.kerningMode = getStringOption(e.kerningMode, ["none", "pair"]); this.letterSpacing = getMeasurement(e.letterSpacing, "0"); this.lineThrough = getInteger({ data: e.lineThrough, defaultValue: 0, validate: e => 1 === e || 2 === e }); this.lineThroughPeriod = getStringOption(e.lineThroughPeriod, ["all", "word"]); this.overline = getInteger({ data: e.overline, defaultValue: 0, validate: e => 1 === e || 2 === e }); this.overlinePeriod = getStringOption(e.overlinePeriod, ["all", "word"]); this.posture = getStringOption(e.posture, ["normal", "italic"]); this.size = getMeasurement(e.size, "10pt"); this.typeface = e.typeface || "Courier"; this.underline = getInteger({ data: e.underline, defaultValue: 0, validate: e => 1 === e || 2 === e }); this.underlinePeriod = getStringOption(e.underlinePeriod, ["all", "word"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.weight = getStringOption(e.weight, ["normal", "bold"]); this.extras = null; this.fill = null } [Vs](e) { super[Vs](e); this[yr].usedTypefaces.add(this.typeface) } [rn]() { const e = 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 = measureToString(this.baselineShift)); e.fontKerning = "none" === this.kerningMode ? "none" : "normal"; e.letterSpacing = 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 = measureToString(.99 * this.size); setFontFamily(this, this, this[yr].fontFinder, e); if (0 !== this.underline) { e.textDecoration = "underline"; 2 === this.underline && (e.textDecorationStyle = "double") } e.fontWeight = this.weight; return e } } class Format extends XFAObject { constructor(e) { super(Jn, "format", !0); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.extras = null; this.picture = null } } class Handler extends StringObject { constructor(e) { super(Jn, "handler"); this.id = e.id || ""; this.type = getStringOption(e.type, ["optional", "required"]); this.use = e.use || ""; this.usehref = e.usehref || "" } } class Hyphenation extends XFAObject { constructor(e) { super(Jn, "hyphenation"); this.excludeAllCaps = getInteger({ data: e.excludeAllCaps, defaultValue: 0, validate: e => 1 === e }); this.excludeInitialCap = getInteger({ data: e.excludeInitialCap, defaultValue: 0, validate: e => 1 === e }); this.hyphenate = getInteger({ data: e.hyphenate, defaultValue: 0, validate: e => 1 === e }); this.id = e.id || ""; this.pushCharacterCount = getInteger({ data: e.pushCharacterCount, defaultValue: 3, validate: e => e >= 0 }); this.remainCharacterCount = getInteger({ data: e.remainCharacterCount, defaultValue: 3, validate: e => e >= 0 }); this.use = e.use || ""; this.usehref = e.usehref || ""; this.wordCharacterCount = getInteger({ data: e.wordCharacterCount, defaultValue: 7, validate: e => e >= 0 }) } } class Image extends StringObject { constructor(e) { super(Jn, "image"); this.aspect = 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 = getStringOption(e.transferEncoding, ["base64", "none", "package"]); this.use = e.use || ""; this.usehref = e.usehref || "" } [an]() { if (this.contentType && !vn.has(this.contentType.toLowerCase())) return HTMLResult.EMPTY; let e = this[yr].images && this[yr].images.get(this.href); if (!e && (this.href || !this[er])) return HTMLResult.EMPTY; e || "base64" !== this.transferEncoding || (e = stringToBytes(atob(this[er]))); if (!e) return HTMLResult.EMPTY; if (!this.contentType) { for (const [t, i] of Kn) if (e.length > t.length && t.every(((t, i) => t === e[i]))) { this.contentType = i; break } if (!this.contentType) return HTMLResult.EMPTY } const t = new Blob([e], { type: this.contentType }); let i; switch (this.aspect) { case "fit": case "actual": break; case "height": i = { height: "100%", objectFit: "fill" }; break; case "none": i = { width: "100%", height: "100%", objectFit: "fill" }; break; case "width": i = { width: "100%", objectFit: "fill" } }const a = this[pr](); return HTMLResult.success({ name: "img", attributes: { class: ["xfaImage"], style: i, src: URL.createObjectURL(t), alt: a ? ariaLabel(a[pr]()) : null } }) } } class ImageEdit extends XFAObject { constructor(e) { super(Jn, "imageEdit", !0); this.data = 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 } [an](e) { return "embed" === this.data ? HTMLResult.success({ name: "div", children: [], attributes: {} }) : HTMLResult.EMPTY } } class Integer extends ContentObject { constructor(e) { super(Jn, "integer"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } [sr]() { const e = parseInt(this[er].trim(), 10); this[er] = isNaN(e) ? null : e } [an](e) { return valueToHtml(null !== this[er] ? this[er].toString() : "") } } class Issuers extends XFAObject { constructor(e) { super(Jn, "issuers", !0); this.id = e.id || ""; this.type = getStringOption(e.type, ["optional", "required"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.certificate = new XFAObjectArray } } class Items extends XFAObject { constructor(e) { super(Jn, "items", !0); this.id = e.id || ""; this.name = e.name || ""; this.presence = getStringOption(e.presence, ["visible", "hidden", "inactive", "invisible"]); this.ref = e.ref || ""; this.save = getInteger({ data: e.save, defaultValue: 0, validate: e => 1 === e }); this.use = e.use || ""; this.usehref = e.usehref || ""; this.boolean = new XFAObjectArray; this.date = new XFAObjectArray; this.dateTime = new XFAObjectArray; this.decimal = new XFAObjectArray; this.exData = new XFAObjectArray; this.float = new XFAObjectArray; this.image = new XFAObjectArray; this.integer = new XFAObjectArray; this.text = new XFAObjectArray; this.time = new XFAObjectArray } [an]() { const e = []; for (const t of this[Er]()) e.push(t[en]()); return HTMLResult.success(e) } } class Keep extends XFAObject { constructor(e) { super(Jn, "keep", !0); this.id = e.id || ""; const t = ["none", "contentArea", "pageArea"]; this.intact = getStringOption(e.intact, t); this.next = getStringOption(e.next, t); this.previous = getStringOption(e.previous, t); this.use = e.use || ""; this.usehref = e.usehref || ""; this.extras = null } } class KeyUsage extends XFAObject { constructor(e) { super(Jn, "keyUsage"); const t = ["", "yes", "no"]; this.crlSign = getStringOption(e.crlSign, t); this.dataEncipherment = getStringOption(e.dataEncipherment, t); this.decipherOnly = getStringOption(e.decipherOnly, t); this.digitalSignature = getStringOption(e.digitalSignature, t); this.encipherOnly = getStringOption(e.encipherOnly, t); this.id = e.id || ""; this.keyAgreement = getStringOption(e.keyAgreement, t); this.keyCertSign = getStringOption(e.keyCertSign, t); this.keyEncipherment = getStringOption(e.keyEncipherment, t); this.nonRepudiation = getStringOption(e.nonRepudiation, t); this.type = getStringOption(e.type, ["optional", "required"]); this.use = e.use || ""; this.usehref = e.usehref || "" } } class Line extends XFAObject { constructor(e) { super(Jn, "line", !0); this.hand = getStringOption(e.hand, ["even", "left", "right"]); this.id = e.id || ""; this.slope = getStringOption(e.slope, ["\\", "/"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.edge = null } [an]() { const e = this[pr]()[pr](), t = this.edge || new Edge({}), i = t[rn](), a = Object.create(null), s = "visible" === t.presence ? t.thickness : 0; a.strokeWidth = measureToString(s); a.stroke = i.color; let r, n, o, g, c = "100%", h = "100%"; if (e.w <= s) { [r, n, o, g] = ["50%", 0, "50%", "100%"]; c = a.strokeWidth } else if (e.h <= s) { [r, n, o, g] = [0, "50%", "100%", "50%"]; h = a.strokeWidth } else "\\" === this.slope ? [r, n, o, g] = [0, 0, "100%", "100%"] : [r, n, o, g] = [0, "100%", "100%", 0]; const l = { name: "svg", children: [{ name: "line", attributes: { xmlns: Hn, x1: r, y1: n, x2: o, y2: g, style: a } }], attributes: { xmlns: Hn, width: c, height: h, style: { overflow: "visible" } } }; if (hasMargin(e)) return HTMLResult.success({ name: "div", attributes: { style: { display: "inline", width: "100%", height: "100%" } }, children: [l] }); l.attributes.style.position = "absolute"; return HTMLResult.success(l) } } class Linear extends XFAObject { constructor(e) { super(Jn, "linear", !0); this.id = e.id || ""; this.type = getStringOption(e.type, ["toRight", "toBottom", "toLeft", "toTop"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.color = null; this.extras = null } [rn](e) { e = e ? e[rn]() : "#FFFFFF"; return `linear-gradient(${this.type.replace(/([RBLT])/, " $1").toLowerCase()}, ${e}, ${this.color ? this.color[rn]() : "#000000"})` } } class LockDocument extends ContentObject { constructor(e) { super(Jn, "lockDocument"); this.id = e.id || ""; this.type = getStringOption(e.type, ["optional", "required"]); this.use = e.use || ""; this.usehref = e.usehref || "" } [sr]() { this[er] = getStringOption(this[er], ["auto", "0", "1"]) } } class Manifest extends XFAObject { constructor(e) { super(Jn, "manifest", !0); this.action = 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 XFAObjectArray } } class Margin extends XFAObject { constructor(e) { super(Jn, "margin", !0); this.bottomInset = getMeasurement(e.bottomInset, "0"); this.id = e.id || ""; this.leftInset = getMeasurement(e.leftInset, "0"); this.rightInset = getMeasurement(e.rightInset, "0"); this.topInset = getMeasurement(e.topInset, "0"); this.use = e.use || ""; this.usehref = e.usehref || ""; this.extras = null } [rn]() { return { margin: measureToString(this.topInset) + " " + measureToString(this.rightInset) + " " + measureToString(this.bottomInset) + " " + measureToString(this.leftInset) } } } class Mdp extends XFAObject { constructor(e) { super(Jn, "mdp"); this.id = e.id || ""; this.permissions = getInteger({ data: e.permissions, defaultValue: 2, validate: e => 1 === e || 3 === e }); this.signatureType = getStringOption(e.signatureType, ["filler", "author"]); this.use = e.use || ""; this.usehref = e.usehref || "" } } class Medium extends XFAObject { constructor(e) { super(Jn, "medium"); this.id = e.id || ""; this.imagingBBox = function getBBox(e) { const t = -1; if (!e) return { x: t, y: t, width: t, height: t }; const i = e.trim().split(/\s*,\s*/).map((e => getMeasurement(e, "-1"))); if (i.length < 4 || i[2] < 0 || i[3] < 0) return { x: t, y: t, width: t, height: t }; const [a, s, r, n] = i; return { x: a, y: s, width: r, height: n } }(e.imagingBBox); this.long = getMeasurement(e.long); this.orientation = getStringOption(e.orientation, ["portrait", "landscape"]); this.short = getMeasurement(e.short); this.stock = e.stock || ""; this.trayIn = getStringOption(e.trayIn, ["auto", "delegate", "pageFront"]); this.trayOut = getStringOption(e.trayOut, ["auto", "delegate"]); this.use = e.use || ""; this.usehref = e.usehref || "" } } class Message extends XFAObject { constructor(e) { super(Jn, "message", !0); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.text = new XFAObjectArray } } class NumericEdit extends XFAObject { constructor(e) { super(Jn, "numericEdit", !0); this.hScrollPolicy = 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 } [an](e) { const t = toStyle(this, "border", "font", "margin"), i = this[pr]()[pr](), a = { name: "input", attributes: { type: "text", fieldId: i[nn], dataId: i[tr]?.[nn] || i[nn], class: ["xfaTextfield"], style: t, "aria-label": ariaLabel(i), "aria-required": !1 } }; if (isRequired(i)) { a.attributes["aria-required"] = !0; a.attributes.required = !0 } return HTMLResult.success({ name: "label", attributes: { class: ["xfaLabel"] }, children: [a] }) } } class Occur extends XFAObject { constructor(e) { super(Jn, "occur", !0); this.id = e.id || ""; this.initial = "" !== e.initial ? getInteger({ data: e.initial, defaultValue: "", validate: e => !0 }) : ""; this.max = "" !== e.max ? getInteger({ data: e.max, defaultValue: 1, validate: e => !0 }) : ""; this.min = "" !== e.min ? getInteger({ data: e.min, defaultValue: 1, validate: e => !0 }) : ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.extras = null } [Vs]() { const e = this[pr](), 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 < this.min && (this.max = this.min); "" === this.initial && (this.initial = e instanceof Template ? 1 : this.min) } } class Oid extends StringObject { constructor(e) { super(Jn, "oid"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class Oids extends XFAObject { constructor(e) { super(Jn, "oids", !0); this.id = e.id || ""; this.type = getStringOption(e.type, ["optional", "required"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.oid = new XFAObjectArray } } class Overflow extends XFAObject { constructor(e) { super(Jn, "overflow"); this.id = e.id || ""; this.leader = e.leader || ""; this.target = e.target || ""; this.trailer = e.trailer || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } [Cr]() { if (!this[ar]) { const e = this[pr](), t = this[mr](), i = t[Vr](this.target, e), a = t[Vr](this.leader, e), s = t[Vr](this.trailer, e); this[ar] = { target: i?.[0] || null, leader: a?.[0] || null, trailer: s?.[0] || null, addLeader: !1, addTrailer: !1 } } return this[ar] } } class PageArea extends XFAObject { constructor(e) { super(Jn, "pageArea", !0); this.blankOrNotBlank = getStringOption(e.blankOrNotBlank, ["any", "blank", "notBlank"]); this.id = e.id || ""; this.initialNumber = getInteger({ data: e.initialNumber, defaultValue: 1, validate: e => !0 }); this.name = e.name || ""; this.numbered = getInteger({ data: e.numbered, defaultValue: 1, validate: e => !0 }); this.oddOrEven = getStringOption(e.oddOrEven, ["any", "even", "odd"]); this.pagePosition = getStringOption(e.pagePosition, ["any", "first", "last", "only", "rest"]); this.relevant = 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 XFAObjectArray; this.contentArea = new XFAObjectArray; this.draw = new XFAObjectArray; this.exclGroup = new XFAObjectArray; this.field = new XFAObjectArray; this.subform = new XFAObjectArray } [Lr]() { if (!this[ar]) { this[ar] = { numberOfUse: 0 }; return !0 } return !this.occur || -1 === this.occur.max || this[ar].numberOfUse < this.occur.max } [zs]() { delete this[ar] } [dr]() { this[ar] || (this[ar] = { numberOfUse: 0 }); const e = this[pr](); if ("orderedOccurrence" === e.relation && this[Lr]()) { this[ar].numberOfUse += 1; return this } return e[dr]() } [gr]() { return this[ar].space || { width: 0, height: 0 } } [an]() { this[ar] || (this[ar] = { numberOfUse: 1 }); const e = []; this[ar].children = e; const t = Object.create(null); if (this.medium && this.medium.short && this.medium.long) { t.width = measureToString(this.medium.short); t.height = measureToString(this.medium.long); this[ar].space = { width: this.medium.short, height: this.medium.long }; if ("landscape" === this.medium.orientation) { const e = t.width; t.width = t.height; t.height = e; this[ar].space = { width: this.medium.long, height: this.medium.short } } } else warn("XFA - No medium specified in pageArea: please file a bug."); this[Zs]({ filter: new Set(["area", "draw", "field", "subform"]), include: !0 }); this[Zs]({ filter: new Set(["contentArea"]), include: !0 }); return HTMLResult.success({ name: "div", children: e, attributes: { class: ["xfaPage"], id: this[nn], style: t, xfaName: this.name } }) } } class PageSet extends XFAObject { constructor(e) { super(Jn, "pageSet", !0); this.duplexImposition = getStringOption(e.duplexImposition, ["longEdge", "shortEdge"]); this.id = e.id || ""; this.name = e.name || ""; this.relation = getStringOption(e.relation, ["orderedOccurrence", "duplexPaginated", "simplexPaginated"]); this.relevant = getRelevant(e.relevant); this.use = e.use || ""; this.usehref = e.usehref || ""; this.extras = null; this.occur = null; this.pageArea = new XFAObjectArray; this.pageSet = new XFAObjectArray } [zs]() { for (const e of this.pageArea.children) e[zs](); for (const e of this.pageSet.children) e[zs]() } [Lr]() { return !this.occur || -1 === this.occur.max || this[ar].numberOfUse < this.occur.max } [dr]() { this[ar] || (this[ar] = { numberOfUse: 1, pageIndex: -1, pageSetIndex: -1 }); if ("orderedOccurrence" === this.relation) { if (this[ar].pageIndex + 1 < this.pageArea.children.length) { this[ar].pageIndex += 1; return this.pageArea.children[this[ar].pageIndex][dr]() } if (this[ar].pageSetIndex + 1 < this.pageSet.children.length) { this[ar].pageSetIndex += 1; return this.pageSet.children[this[ar].pageSetIndex][dr]() } if (this[Lr]()) { this[ar].numberOfUse += 1; this[ar].pageIndex = -1; this[ar].pageSetIndex = -1; return this[dr]() } const e = this[pr](); if (e instanceof PageSet) return e[dr](); this[zs](); return this[dr]() } const e = this[mr]()[ar].pageNumber, t = e % 2 == 0 ? "even" : "odd", i = 0 === e ? "first" : "rest"; let a = this.pageArea.children.find((e => e.oddOrEven === t && e.pagePosition === i)); if (a) return a; a = this.pageArea.children.find((e => "any" === e.oddOrEven && e.pagePosition === i)); if (a) return a; a = this.pageArea.children.find((e => "any" === e.oddOrEven && "any" === e.pagePosition)); return a || this.pageArea.children[0] } } class Para extends XFAObject { constructor(e) { super(Jn, "para", !0); this.hAlign = getStringOption(e.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); this.id = e.id || ""; this.lineHeight = e.lineHeight ? getMeasurement(e.lineHeight, "0pt") : ""; this.marginLeft = e.marginLeft ? getMeasurement(e.marginLeft, "0pt") : ""; this.marginRight = e.marginRight ? getMeasurement(e.marginRight, "0pt") : ""; this.orphans = getInteger({ data: e.orphans, defaultValue: 0, validate: e => e >= 0 }); this.preserve = e.preserve || ""; this.radixOffset = e.radixOffset ? getMeasurement(e.radixOffset, "0pt") : ""; this.spaceAbove = e.spaceAbove ? getMeasurement(e.spaceAbove, "0pt") : ""; this.spaceBelow = e.spaceBelow ? getMeasurement(e.spaceBelow, "0pt") : ""; this.tabDefault = e.tabDefault ? getMeasurement(this.tabDefault) : ""; this.tabStops = (e.tabStops || "").trim().split(/\s+/).map(((e, t) => t % 2 == 1 ? getMeasurement(e) : e)); this.textIndent = e.textIndent ? getMeasurement(e.textIndent, "0pt") : ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.vAlign = getStringOption(e.vAlign, ["top", "bottom", "middle"]); this.widows = getInteger({ data: e.widows, defaultValue: 0, validate: e => e >= 0 }); this.hyphenation = null } [rn]() { const e = toStyle(this, "hAlign"); "" !== this.marginLeft && (e.paddingLeft = measureToString(this.marginLeft)); "" !== this.marginRight && (e.paddingight = measureToString(this.marginRight)); "" !== this.spaceAbove && (e.paddingTop = measureToString(this.spaceAbove)); "" !== this.spaceBelow && (e.paddingBottom = measureToString(this.spaceBelow)); if ("" !== this.textIndent) { e.textIndent = measureToString(this.textIndent); fixTextIndent(e) } this.lineHeight > 0 && (e.lineHeight = measureToString(this.lineHeight)); "" !== this.tabDefault && (e.tabSize = measureToString(this.tabDefault)); this.tabStops.length; this.hyphenatation && Object.assign(e, this.hyphenatation[rn]()); return e } } class PasswordEdit extends XFAObject { constructor(e) { super(Jn, "passwordEdit", !0); this.hScrollPolicy = 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 template_Pattern extends XFAObject { constructor(e) { super(Jn, "pattern", !0); this.id = e.id || ""; this.type = getStringOption(e.type, ["crossHatch", "crossDiagonal", "diagonalLeft", "diagonalRight", "horizontal", "vertical"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.color = null; this.extras = null } [rn](e) { e = e ? e[rn]() : "#FFFFFF"; const t = this.color ? this.color[rn]() : "#000000", i = "repeating-linear-gradient", a = `${e},${e} 5px,${t} 5px,${t} 10px`; switch (this.type) { case "crossHatch": return `${i}(to top,${a}) ${i}(to right,${a})`; case "crossDiagonal": return `${i}(45deg,${a}) ${i}(-45deg,${a})`; case "diagonalLeft": return `${i}(45deg,${a})`; case "diagonalRight": return `${i}(-45deg,${a})`; case "horizontal": return `${i}(to top,${a})`; case "vertical": return `${i}(to right,${a})` }return "" } } class Picture extends StringObject { constructor(e) { super(Jn, "picture"); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class Proto extends XFAObject { constructor(e) { super(Jn, "proto", !0); this.appearanceFilter = new XFAObjectArray; this.arc = new XFAObjectArray; this.area = new XFAObjectArray; this.assist = new XFAObjectArray; this.barcode = new XFAObjectArray; this.bindItems = new XFAObjectArray; this.bookend = new XFAObjectArray; this.boolean = new XFAObjectArray; this.border = new XFAObjectArray; this.break = new XFAObjectArray; this.breakAfter = new XFAObjectArray; this.breakBefore = new XFAObjectArray; this.button = new XFAObjectArray; this.calculate = new XFAObjectArray; this.caption = new XFAObjectArray; this.certificate = new XFAObjectArray; this.certificates = new XFAObjectArray; this.checkButton = new XFAObjectArray; this.choiceList = new XFAObjectArray; this.color = new XFAObjectArray; this.comb = new XFAObjectArray; this.connect = new XFAObjectArray; this.contentArea = new XFAObjectArray; this.corner = new XFAObjectArray; this.date = new XFAObjectArray; this.dateTime = new XFAObjectArray; this.dateTimeEdit = new XFAObjectArray; this.decimal = new XFAObjectArray; this.defaultUi = new XFAObjectArray; this.desc = new XFAObjectArray; this.digestMethod = new XFAObjectArray; this.digestMethods = new XFAObjectArray; this.draw = new XFAObjectArray; this.edge = new XFAObjectArray; this.encoding = new XFAObjectArray; this.encodings = new XFAObjectArray; this.encrypt = new XFAObjectArray; this.encryptData = new XFAObjectArray; this.encryption = new XFAObjectArray; this.encryptionMethod = new XFAObjectArray; this.encryptionMethods = new XFAObjectArray; this.event = new XFAObjectArray; this.exData = new XFAObjectArray; this.exObject = new XFAObjectArray; this.exclGroup = new XFAObjectArray; this.execute = new XFAObjectArray; this.extras = new XFAObjectArray; this.field = new XFAObjectArray; this.fill = new XFAObjectArray; this.filter = new XFAObjectArray; this.float = new XFAObjectArray; this.font = new XFAObjectArray; this.format = new XFAObjectArray; this.handler = new XFAObjectArray; this.hyphenation = new XFAObjectArray; this.image = new XFAObjectArray; this.imageEdit = new XFAObjectArray; this.integer = new XFAObjectArray; this.issuers = new XFAObjectArray; this.items = new XFAObjectArray; this.keep = new XFAObjectArray; this.keyUsage = new XFAObjectArray; this.line = new XFAObjectArray; this.linear = new XFAObjectArray; this.lockDocument = new XFAObjectArray; this.manifest = new XFAObjectArray; this.margin = new XFAObjectArray; this.mdp = new XFAObjectArray; this.medium = new XFAObjectArray; this.message = new XFAObjectArray; this.numericEdit = new XFAObjectArray; this.occur = new XFAObjectArray; this.oid = new XFAObjectArray; this.oids = new XFAObjectArray; this.overflow = new XFAObjectArray; this.pageArea = new XFAObjectArray; this.pageSet = new XFAObjectArray; this.para = new XFAObjectArray; this.passwordEdit = new XFAObjectArray; this.pattern = new XFAObjectArray; this.picture = new XFAObjectArray; this.radial = new XFAObjectArray; this.reason = new XFAObjectArray; this.reasons = new XFAObjectArray; this.rectangle = new XFAObjectArray; this.ref = new XFAObjectArray; this.script = new XFAObjectArray; this.setProperty = new XFAObjectArray; this.signData = new XFAObjectArray; this.signature = new XFAObjectArray; this.signing = new XFAObjectArray; this.solid = new XFAObjectArray; this.speak = new XFAObjectArray; this.stipple = new XFAObjectArray; this.subform = new XFAObjectArray; this.subformSet = new XFAObjectArray; this.subjectDN = new XFAObjectArray; this.subjectDNs = new XFAObjectArray; this.submit = new XFAObjectArray; this.text = new XFAObjectArray; this.textEdit = new XFAObjectArray; this.time = new XFAObjectArray; this.timeStamp = new XFAObjectArray; this.toolTip = new XFAObjectArray; this.traversal = new XFAObjectArray; this.traverse = new XFAObjectArray; this.ui = new XFAObjectArray; this.validate = new XFAObjectArray; this.value = new XFAObjectArray; this.variables = new XFAObjectArray } } class Radial extends XFAObject { constructor(e) { super(Jn, "radial", !0); this.id = e.id || ""; this.type = getStringOption(e.type, ["toEdge", "toCenter"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.color = null; this.extras = null } [rn](e) { e = e ? e[rn]() : "#FFFFFF"; const t = this.color ? this.color[rn]() : "#000000"; return `radial-gradient(circle at center, ${"toEdge" === this.type ? `${e},${t}` : `${t},${e}`})` } } class Reason extends StringObject { constructor(e) { super(Jn, "reason"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class Reasons extends XFAObject { constructor(e) { super(Jn, "reasons", !0); this.id = e.id || ""; this.type = getStringOption(e.type, ["optional", "required"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.reason = new XFAObjectArray } } class Rectangle extends XFAObject { constructor(e) { super(Jn, "rectangle", !0); this.hand = getStringOption(e.hand, ["even", "left", "right"]); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.corner = new XFAObjectArray(4); this.edge = new XFAObjectArray(4); this.fill = null } [an]() { const e = this.edge.children.length ? this.edge.children[0] : new Edge({}), t = e[rn](), i = Object.create(null); "visible" === this.fill?.presence ? Object.assign(i, this.fill[rn]()) : i.fill = "transparent"; i.strokeWidth = measureToString("visible" === e.presence ? e.thickness : 0); i.stroke = t.color; const a = (this.corner.children.length ? this.corner.children[0] : new Corner({}))[rn](), s = { name: "svg", children: [{ name: "rect", attributes: { xmlns: Hn, width: "100%", height: "100%", x: 0, y: 0, rx: a.radius, ry: a.radius, style: i } }], attributes: { xmlns: Hn, style: { overflow: "visible" }, width: "100%", height: "100%" } }; if (hasMargin(this[pr]()[pr]())) return HTMLResult.success({ name: "div", attributes: { style: { display: "inline", width: "100%", height: "100%" } }, children: [s] }); s.attributes.style.position = "absolute"; return HTMLResult.success(s) } } class RefElement extends StringObject { constructor(e) { super(Jn, "ref"); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class Script extends StringObject { constructor(e) { super(Jn, "script"); this.binding = e.binding || ""; this.contentType = e.contentType || ""; this.id = e.id || ""; this.name = e.name || ""; this.runAt = getStringOption(e.runAt, ["client", "both", "server"]); this.use = e.use || ""; this.usehref = e.usehref || "" } } class SetProperty extends XFAObject { constructor(e) { super(Jn, "setProperty"); this.connection = e.connection || ""; this.ref = e.ref || ""; this.target = e.target || "" } } class SignData extends XFAObject { constructor(e) { super(Jn, "signData", !0); this.id = e.id || ""; this.operation = 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 XFAObject { constructor(e) { super(Jn, "signature", !0); this.id = e.id || ""; this.type = 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 XFAObject { constructor(e) { super(Jn, "signing", !0); this.id = e.id || ""; this.type = getStringOption(e.type, ["optional", "required"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.certificate = new XFAObjectArray } } class Solid extends XFAObject { constructor(e) { super(Jn, "solid", !0); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.extras = null } [rn](e) { return e ? e[rn]() : "#FFFFFF" } } class Speak extends StringObject { constructor(e) { super(Jn, "speak"); this.disable = getInteger({ data: e.disable, defaultValue: 0, validate: e => 1 === e }); this.id = e.id || ""; this.priority = getStringOption(e.priority, ["custom", "caption", "name", "toolTip"]); this.rid = e.rid || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class Stipple extends XFAObject { constructor(e) { super(Jn, "stipple", !0); this.id = e.id || ""; this.rate = 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 } [rn](e) { const t = this.rate / 100; return 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 XFAObject { constructor(e) { super(Jn, "subform", !0); this.access = getStringOption(e.access, ["open", "nonInteractive", "protected", "readOnly"]); this.allowMacro = getInteger({ data: e.allowMacro, defaultValue: 0, validate: e => 1 === e }); this.anchorType = getStringOption(e.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); this.colSpan = getInteger({ data: e.colSpan, defaultValue: 1, validate: e => e >= 1 || -1 === e }); this.columnWidths = (e.columnWidths || "").trim().split(/\s+/).map((e => "-1" === e ? -1 : getMeasurement(e))); this.h = e.h ? getMeasurement(e.h) : ""; this.hAlign = getStringOption(e.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); this.id = e.id || ""; this.layout = getStringOption(e.layout, ["position", "lr-tb", "rl-row", "rl-tb", "row", "table", "tb"]); this.locale = e.locale || ""; this.maxH = getMeasurement(e.maxH, "0pt"); this.maxW = getMeasurement(e.maxW, "0pt"); this.mergeMode = getStringOption(e.mergeMode, ["consumeData", "matchTemplate"]); this.minH = getMeasurement(e.minH, "0pt"); this.minW = getMeasurement(e.minW, "0pt"); this.name = e.name || ""; this.presence = getStringOption(e.presence, ["visible", "hidden", "inactive", "invisible"]); this.relevant = getRelevant(e.relevant); this.restoreState = getStringOption(e.restoreState, ["manual", "auto"]); this.scope = getStringOption(e.scope, ["name", "none"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.w = e.w ? getMeasurement(e.w) : ""; this.x = getMeasurement(e.x, "0pt"); this.y = 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 XFAObjectArray; this.breakAfter = new XFAObjectArray; this.breakBefore = new XFAObjectArray; this.connect = new XFAObjectArray; this.draw = new XFAObjectArray; this.event = new XFAObjectArray; this.exObject = new XFAObjectArray; this.exclGroup = new XFAObjectArray; this.field = new XFAObjectArray; this.proto = new XFAObjectArray; this.setProperty = new XFAObjectArray; this.subform = new XFAObjectArray; this.subformSet = new XFAObjectArray } [fr]() { const e = this[pr](); return e instanceof SubformSet ? e[fr]() : e } [kr]() { return !0 } [Mr]() { return this.layout.endsWith("-tb") && 0 === this[ar].attempt && this[ar].numberInLine > 0 || this[pr]()[Mr]() } *[ur]() { yield* getContainedChildren(this) } [rr]() { return flushHTML(this) } [Xs](e, t) { addHTML(this, e, t) } [gr]() { return getAvailableSpace(this) } [xr]() { const e = this[fr](); if (!e[xr]()) return !1; if (void 0 !== this[ar]._isSplittable) return this[ar]._isSplittable; if ("position" === this.layout || this.layout.includes("row")) { this[ar]._isSplittable = !1; return !1 } if (this.keep && "none" !== this.keep.intact) { this[ar]._isSplittable = !1; return !1 } if (e.layout?.endsWith("-tb") && 0 !== e[ar].numberInLine) return !1; this[ar]._isSplittable = !0; return !0 } [an](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[yr] = this[yr]; this[js](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[yr] = this[yr]; this[js](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[yr] = this[yr]; this[js](e); this.overflow.push(e) } this[Xr](this.break); this.break = null } if ("hidden" === this.presence || "inactive" === this.presence) return HTMLResult.EMPTY; (this.breakBefore.children.length > 1 || this.breakAfter.children.length > 1) && 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 HTMLResult.breakNode(e) } if (this[ar]?.afterBreakAfter) return HTMLResult.EMPTY; fixDimensions(this); const t = [], i = { id: this[nn], class: [] }; setAccess(this, i.class); this[ar] || (this[ar] = Object.create(null)); Object.assign(this[ar], { children: t, line: null, attributes: i, 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 a = this[mr](), s = a[ar].noLayoutFailure, r = this[xr](); r || setFirstUnsplittable(this); if (!checkDimensions(this, e)) return HTMLResult.FAILURE; const n = new Set(["area", "draw", "exclGroup", "field", "subform", "subformSet"]); if (this.layout.includes("row")) { const e = this[fr]().columnWidths; if (Array.isArray(e) && e.length > 0) { this[ar].columnWidths = e; this[ar].currentColumn = 0 } } const o = toStyle(this, "anchorType", "dimensions", "position", "presence", "border", "margin", "hAlign"), g = ["xfaSubform"], c = layoutClass(this); c && g.push(c); i.style = o; i.class = g; this.name && (i.xfaName = this.name); if (this.overflow) { const t = this.overflow[Cr](); if (t.addLeader) { t.addLeader = !1; handleOverflow(this, t.leader, e) } } this[Wr](); const h = "lr-tb" === this.layout || "rl-tb" === this.layout, l = h ? 2 : 1; for (; this[ar].attempt < l; this[ar].attempt++) { h && 1 === this[ar].attempt && (this[ar].numberInLine = 0); const e = this[Zs]({ filter: n, include: !0 }); if (e.success) break; if (e.isBreak()) { this[Pr](); return e } if (h && 0 === this[ar].attempt && 0 === this[ar].numberInLine && !a[ar].noLayoutFailure) { this[ar].attempt = l; break } } this[Pr](); r || unsetFirstUnsplittable(this); a[ar].noLayoutFailure = s; if (this[ar].attempt === l) { this.overflow && (this[mr]()[ar].overflowNode = this.overflow); r || delete this[ar]; return HTMLResult.FAILURE } if (this.overflow) { const t = this.overflow[Cr](); if (t.addTrailer) { t.addTrailer = !1; handleOverflow(this, t.trailer, e) } } let C = 0, Q = 0; if (this.margin) { C = this.margin.leftInset + this.margin.rightInset; Q = this.margin.topInset + this.margin.bottomInset } const E = Math.max(this[ar].width + C, this.w || 0), u = Math.max(this[ar].height + Q, this.h || 0), d = [this.x, this.y, E, u]; "" === this.w && (o.width = measureToString(E)); "" === this.h && (o.height = measureToString(u)); if (("0px" === o.width || "0px" === o.height) && 0 === t.length) return HTMLResult.EMPTY; const f = { name: "div", attributes: i, children: t }; applyAssist(this, i); const p = HTMLResult.success(createWrapper(this, f), d); if (this.breakAfter.children.length >= 1) { const e = this.breakAfter.children[0]; if (handleBreak(e)) { this[ar].afterBreakAfter = p; return HTMLResult.breakNode(e) } } delete this[ar]; return p } } class SubformSet extends XFAObject { constructor(e) { super(Jn, "subformSet", !0); this.id = e.id || ""; this.name = e.name || ""; this.relation = getStringOption(e.relation, ["ordered", "choice", "unordered"]); this.relevant = 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 XFAObjectArray; this.breakBefore = new XFAObjectArray; this.subform = new XFAObjectArray; this.subformSet = new XFAObjectArray } *[ur]() { yield* getContainedChildren(this) } [fr]() { let e = this[pr](); for (; !(e instanceof Subform);)e = e[pr](); return e } [kr]() { return !0 } } class SubjectDN extends ContentObject { constructor(e) { super(Jn, "subjectDN"); this.delimiter = e.delimiter || ","; this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } [sr]() { this[er] = new Map(this[er].split(this.delimiter).map((e => { (e = e.split("=", 2))[0] = e[0].trim(); return e }))) } } class SubjectDNs extends XFAObject { constructor(e) { super(Jn, "subjectDNs", !0); this.id = e.id || ""; this.type = getStringOption(e.type, ["optional", "required"]); this.use = e.use || ""; this.usehref = e.usehref || ""; this.subjectDN = new XFAObjectArray } } class Submit extends XFAObject { constructor(e) { super(Jn, "submit", !0); this.embedPDF = getInteger({ data: e.embedPDF, defaultValue: 0, validate: e => 1 === e }); this.format = getStringOption(e.format, ["xdp", "formdata", "pdf", "urlencoded", "xfd", "xml"]); this.id = e.id || ""; this.target = e.target || ""; this.textEncoding = 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 XFAObjectArray; this.signData = new XFAObjectArray } } class Template extends XFAObject { constructor(e) { super(Jn, "template", !0); this.baseProfile = getStringOption(e.baseProfile, ["full", "interactiveForms"]); this.extras = null; this.subform = new XFAObjectArray } [sr]() { 0 === this.subform.children.length && warn("XFA - No subforms in template node."); this.subform.children.length >= 2 && warn("XFA - Several subforms in template node: please file a bug."); this[An] = 5e3 } [xr]() { return !0 } [Vr](e, t) { return e.startsWith("#") ? [this[br].get(e.slice(1))] : searchNode(this, t, e, !0, !0) } *[tn]() { if (!this.subform.children.length) return HTMLResult.success({ name: "div", children: [] }); this[ar] = { 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[zs](); const t = e.pageSet.pageArea.children, i = { name: "div", children: [] }; let a = null, s = null, r = null; if (e.breakBefore.children.length >= 1) { s = e.breakBefore.children[0]; r = s.target } else if (e.subform.children.length >= 1 && e.subform.children[0].breakBefore.children.length >= 1) { s = e.subform.children[0].breakBefore.children[0]; r = s.target } else if (e.break?.beforeTarget) { s = e.break; r = s.beforeTarget } else if (e.subform.children.length >= 1 && e.subform.children[0].break?.beforeTarget) { s = e.subform.children[0].break; r = s.beforeTarget } if (s) { const e = this[Vr](r, s[pr]()); if (e instanceof PageArea) { a = e; s[ar] = {} } } a || (a = t[0]); a[ar] = { numberOfUse: 1 }; const n = a[pr](); n[ar] = { numberOfUse: 1, pageIndex: n.pageArea.children.indexOf(a), pageSetIndex: 0 }; let o, g = null, c = null, h = !0, l = 0, C = 0; for (; ;) { if (h) l = 0; else { i.children.pop(); if (3 == ++l) { warn("XFA - Something goes wrong: please file a bug."); return i } } o = null; this[ar].currentPageArea = a; const t = a[an]().html; i.children.push(t); if (g) { this[ar].noLayoutFailure = !0; t.children.push(g[an](a[ar].space).html); g = null } if (c) { this[ar].noLayoutFailure = !0; t.children.push(c[an](a[ar].space).html); c = null } const s = a.contentArea.children, r = t.children.filter((e => e.attributes.class.includes("xfaContentarea"))); h = !1; this[ar].firstUnsplittable = null; this[ar].noLayoutFailure = !1; const flush = t => { const i = e[rr](); if (i) { h ||= i.children?.length > 0; r[t].children.push(i) } }; for (let t = C, a = s.length; t < a; t++) { const a = this[ar].currentContentArea = s[t], n = { width: a.w, height: a.h }; C = 0; if (g) { r[t].children.push(g[an](n).html); g = null } if (c) { r[t].children.push(c[an](n).html); c = null } const l = e[an](n); if (l.success) { if (l.html) { h ||= l.html.children?.length > 0; r[t].children.push(l.html) } else !h && i.children.length > 1 && i.children.pop(); return i } if (l.isBreak()) { const e = l.breakNode; flush(t); if ("auto" === e.targetType) continue; if (e.leader) { g = this[Vr](e.leader, e[pr]()); g = g ? g[0] : null } if (e.trailer) { c = this[Vr](e.trailer, e[pr]()); c = c ? c[0] : null } if ("pageArea" === e.targetType) { o = e[ar].target; t = 1 / 0 } else if (e[ar].target) { o = e[ar].target; C = e[ar].index + 1; t = 1 / 0 } else t = e[ar].index } else if (this[ar].overflowNode) { const e = this[ar].overflowNode; this[ar].overflowNode = null; const i = e[Cr](), a = i.target; i.addLeader = null !== i.leader; i.addTrailer = null !== i.trailer; flush(t); const r = t; t = 1 / 0; if (a instanceof PageArea) o = a; else if (a instanceof ContentArea) { const e = s.indexOf(a); if (-1 !== e) e > r ? t = e - 1 : C = e; else { o = a[pr](); C = o.contentArea.children.indexOf(a) } } } else flush(t) } this[ar].pageNumber += 1; o && (o[Lr]() ? o[ar].numberOfUse += 1 : o = null); a = o || a[dr](); yield null } } } class Text extends ContentObject { constructor(e) { super(Jn, "text"); this.id = e.id || ""; this.maxChars = 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 || "" } [Ws]() { return !0 } [Kr](e) { if (e[Hr] === gn.xhtml.id) { this[er] = e; return !0 } warn(`XFA - Invalid content in Text: ${e[Yr]}.`); return !1 } [qr](e) { this[er] instanceof XFAObject || super[qr](e) } [sr]() { "string" == typeof this[er] && (this[er] = this[er].replaceAll("\r\n", "\n")) } [Cr]() { return "string" == typeof this[er] ? this[er].split(/[\u2029\u2028\n]/).reduce(((e, t) => { t && e.push(t); return e }), []).join("\n") : this[er][en]() } [an](e) { if ("string" == typeof this[er]) { const e = valueToHtml(this[er]).html; if (this[er].includes("\u2029")) { e.name = "div"; e.children = []; this[er].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[er])) { e.name = "div"; e.children = []; this[er].split(/[\u2028\n]/).forEach((t => { e.children.push({ name: "span", value: t }, { name: "br" }) })) } return HTMLResult.success(e) } return this[er][an](e) } } class TextEdit extends XFAObject { constructor(e) { super(Jn, "textEdit", !0); this.allowRichText = getInteger({ data: e.allowRichText, defaultValue: 0, validate: e => 1 === e }); this.hScrollPolicy = getStringOption(e.hScrollPolicy, ["auto", "off", "on"]); this.id = e.id || ""; this.multiLine = getInteger({ data: e.multiLine, defaultValue: "", validate: e => 0 === e || 1 === e }); this.use = e.use || ""; this.usehref = e.usehref || ""; this.vScrollPolicy = getStringOption(e.vScrollPolicy, ["auto", "off", "on"]); this.border = null; this.comb = null; this.extras = null; this.margin = null } [an](e) { const t = toStyle(this, "border", "font", "margin"); let i; const a = this[pr]()[pr](); "" === this.multiLine && (this.multiLine = a instanceof Draw ? 1 : 0); i = 1 === this.multiLine ? { name: "textarea", attributes: { dataId: a[tr]?.[nn] || a[nn], fieldId: a[nn], class: ["xfaTextfield"], style: t, "aria-label": ariaLabel(a), "aria-required": !1 } } : { name: "input", attributes: { type: "text", dataId: a[tr]?.[nn] || a[nn], fieldId: a[nn], class: ["xfaTextfield"], style: t, "aria-label": ariaLabel(a), "aria-required": !1 } }; if (isRequired(a)) { i.attributes["aria-required"] = !0; i.attributes.required = !0 } return HTMLResult.success({ name: "label", attributes: { class: ["xfaLabel"] }, children: [i] }) } } class Time extends StringObject { constructor(e) { super(Jn, "time"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } [sr]() { const e = this[er].trim(); this[er] = e ? new Date(e) : null } [an](e) { return valueToHtml(this[er] ? this[er].toString() : "") } } class TimeStamp extends XFAObject { constructor(e) { super(Jn, "timeStamp"); this.id = e.id || ""; this.server = e.server || ""; this.type = getStringOption(e.type, ["optional", "required"]); this.use = e.use || ""; this.usehref = e.usehref || "" } } class ToolTip extends StringObject { constructor(e) { super(Jn, "toolTip"); this.id = e.id || ""; this.rid = e.rid || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class Traversal extends XFAObject { constructor(e) { super(Jn, "traversal", !0); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.extras = null; this.traverse = new XFAObjectArray } } class Traverse extends XFAObject { constructor(e) { super(Jn, "traverse", !0); this.id = e.id || ""; this.operation = 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 } [Ur]() { return !1 } } class Ui extends XFAObject { constructor(e) { super(Jn, "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 } [Cr]() { if (void 0 === this[ar]) { for (const e of Object.getOwnPropertyNames(this)) { if ("extras" === e || "picture" === e) continue; const t = this[e]; if (t instanceof XFAObject) { this[ar] = t; return t } } this[ar] = null } return this[ar] } [an](e) { const t = this[Cr](); return t ? t[an](e) : HTMLResult.EMPTY } } class Validate extends XFAObject { constructor(e) { super(Jn, "validate", !0); this.formatTest = getStringOption(e.formatTest, ["warning", "disabled", "error"]); this.id = e.id || ""; this.nullTest = getStringOption(e.nullTest, ["disabled", "error", "warning"]); this.scriptTest = 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 XFAObject { constructor(e) { super(Jn, "value", !0); this.id = e.id || ""; this.override = getInteger({ data: e.override, defaultValue: 0, validate: e => 1 === e }); this.relevant = 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](e) { const t = this[pr](); if (t instanceof Field && t.ui?.imageEdit) { if (!this.image) { this.image = new Image({}); this[js](this.image) } this.image[er] = e[er]; return } const i = e[Yr]; if (null === this[i]) { for (const e of Object.getOwnPropertyNames(this)) { const t = this[e]; if (t instanceof XFAObject) { this[e] = null; this[Xr](t) } } this[e[Yr]] = e; this[js](e) } else this[i][er] = e[er] } [en]() { if (this.exData) return "string" == typeof this.exData[er] ? this.exData[er].trim() : this.exData[er][en]().trim(); for (const e of Object.getOwnPropertyNames(this)) { if ("image" === e) continue; const t = this[e]; if (t instanceof XFAObject) return (t[er] || "").toString().trim() } return null } [an](e) { for (const t of Object.getOwnPropertyNames(this)) { const i = this[t]; if (i instanceof XFAObject) return i[an](e) } return HTMLResult.EMPTY } } class Variables extends XFAObject { constructor(e) { super(Jn, "variables", !0); this.id = e.id || ""; this.use = e.use || ""; this.usehref = e.usehref || ""; this.boolean = new XFAObjectArray; this.date = new XFAObjectArray; this.dateTime = new XFAObjectArray; this.decimal = new XFAObjectArray; this.exData = new XFAObjectArray; this.float = new XFAObjectArray; this.image = new XFAObjectArray; this.integer = new XFAObjectArray; this.manifest = new XFAObjectArray; this.script = new XFAObjectArray; this.text = new XFAObjectArray; this.time = new XFAObjectArray } [Ur]() { return !0 } } class TemplateNamespace { static [on](e, t) { if (TemplateNamespace.hasOwnProperty(e)) { const i = TemplateNamespace[e](t); i[_r](t); return i } } 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 template_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 template_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) } } const Tn = gn.datasets.id; function createText(e) { const t = new Text({}); t[er] = e; return t } class Binder { constructor(e) { this.root = e; this.datasets = e.datasets; this.data = e.datasets?.data || new XmlObject(gn.datasets.id, "data"); this.emptyMerge = 0 === this.data[Er]().length; this.root.form = this.form = e.template[$s]() } _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, i) { e[tr] = t; if (e[wr]()) if (t[Rr]()) { const i = t[lr](); e[$r](createText(i)) } else if (e instanceof Field && "multiSelect" === e.ui?.choiceList?.open) { const i = t[Er]().map((e => e[er].trim())).join("\n"); e[$r](createText(i)) } else this._isConsumeData() && warn("XFA - Nodes haven't the same type."); else !t[Rr]() || this._isMatchTemplate() ? this._bindElement(e, t) : warn("XFA - Nodes haven't the same type.") } _findDataByNameToConsume(e, t, i, a) { if (!e) return null; let s, r; for (let a = 0; a < 3; a++) { s = i[Qr](e, !1, !0); for (; ;) { r = s.next().value; if (!r) break; if (t === r[Rr]()) return r } if (i[Hr] === gn.datasets.id && "data" === i[Yr]) break; i = i[pr]() } if (!a) return null; s = this.data[Qr](e, !0, !1); r = s.next().value; if (r) return r; s = this.data[nr](e, !0); r = s.next().value; return r?.[Rr]() ? r : null } _setProperties(e, t) { if (e.hasOwnProperty("setProperty")) for (const { ref: i, target: a, connection: s } of e.setProperty.children) { if (s) continue; if (!i) continue; const r = searchNode(this.root, t, i, !1, !1); if (!r) { warn(`XFA - Invalid reference: ${i}.`); continue } const [n] = r; if (!n[Nr](this.data)) { warn("XFA - Invalid node: must be a data node."); continue } const o = searchNode(this.root, e, a, !1, !1); if (!o) { warn(`XFA - Invalid target: ${a}.`); continue } const [g] = o; if (!g[Nr](e)) { warn("XFA - Invalid target: must be a property or subproperty."); continue } const c = g[pr](); if (g instanceof SetProperty || c instanceof SetProperty) { warn("XFA - Invalid target: cannot be a setProperty or one of its properties."); continue } if (g instanceof BindItems || c instanceof BindItems) { warn("XFA - Invalid target: cannot be a bindItems or one of its properties."); continue } const h = n[en](), l = g[Yr]; if (g instanceof XFAAttribute) { const e = Object.create(null); e[l] = h; const t = Reflect.construct(Object.getPrototypeOf(c).constructor, [e]); c[l] = t[l] } else if (g.hasOwnProperty(er)) { g[tr] = n; g[er] = h; g[sr]() } else 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[Xr](t); e.items.clear(); const i = new Items({}), a = new Items({}); e[js](i); e.items.push(i); e[js](a); e.items.push(a); for (const { ref: s, labelRef: r, valueRef: n, connection: o } of e.bindItems.children) { if (o) continue; if (!s) continue; const e = searchNode(this.root, t, s, !1, !1); if (e) for (const t of e) { if (!t[Nr](this.datasets)) { warn(`XFA - Invalid ref (${s}): must be a datasets child.`); continue } const e = searchNode(this.root, t, r, !0, !1); if (!e) { warn(`XFA - Invalid label: ${r}.`); continue } const [o] = e; if (!o[Nr](this.datasets)) { warn("XFA - Invalid label: must be a datasets child."); continue } const g = searchNode(this.root, t, n, !0, !1); if (!g) { warn(`XFA - Invalid value: ${n}.`); continue } const [c] = g; if (!c[Nr](this.datasets)) { warn("XFA - Invalid value: must be a datasets child."); continue } const h = createText(o[en]()), l = createText(c[en]()); i[js](h); i.text.push(h); a[js](l); a.text.push(l) } else warn(`XFA - Invalid reference: ${s}.`) } } _bindOccurrences(e, t, i) { let a; if (t.length > 1) { a = e[$s](); a[Xr](a.occur); a.occur = null } this._bindValue(e, t[0], i); this._setProperties(e, t[0]); this._bindItems(e, t[0]); if (1 === t.length) return; const s = e[pr](), r = e[Yr], n = s[Dr](e); for (let e = 1, o = t.length; e < o; e++) { const o = t[e], g = a[$s](); s[r].push(g); s[Fr](n + e, g); this._bindValue(g, o, i); this._setProperties(g, o); this._bindItems(g, o) } } _createOccurrences(e) { if (!this.emptyMerge) return; const { occur: t } = e; if (!t || t.initial <= 1) return; const i = e[pr](), a = e[Yr]; if (!(i[a] instanceof XFAObjectArray)) return; let s; s = e.name ? i[a].children.filter((t => t.name === e.name)).length : i[a].children.length; const r = i[Dr](e) + 1, n = t.initial - s; if (n) { const t = e[$s](); t[Xr](t.occur); t.occur = null; i[a].push(t); i[Fr](r, t); for (let e = 1; e < n; e++) { const s = t[$s](); i[a].push(s); i[Fr](r + e, s) } } } _getOccurInfo(e) { const { name: t, occur: i } = e; if (!i || !t) return [1, 1]; const a = -1 === i.max ? 1 / 0 : i.max; return [i.min, a] } _setAndBind(e, t) { this._setProperties(e, t); this._bindItems(e, t); this._bindElement(e, t) } _bindElement(e, t) { const i = []; this._createOccurrences(e); for (const a of e[Er]()) { if (a[tr]) continue; if (void 0 === this._mergeMode && "subform" === a[Yr]) { this._mergeMode = "consumeData" === a.mergeMode; const e = t[Er](); if (e.length > 0) this._bindOccurrences(a, [e[0]], null); else if (this.emptyMerge) { const e = t[Hr] === Tn ? -1 : t[Hr], i = a[tr] = new XmlObject(e, a.name || "root"); t[js](i); this._bindElement(a, i) } continue } if (!a[kr]()) continue; let e = !1, s = null, r = null, n = null; if (a.bind) { switch (a.bind.match) { case "none": this._setAndBind(a, t); continue; case "global": e = !0; break; case "dataRef": if (!a.bind.ref) { warn(`XFA - ref is empty in node ${a[Yr]}.`); this._setAndBind(a, t); continue } r = a.bind.ref }a.bind.picture && (s = a.bind.picture[er]) } const [o, g] = this._getOccurInfo(a); if (r) { n = searchNode(this.root, t, r, !0, !1); if (null === n) { n = createDataNode(this.data, t, r); if (!n) continue; this._isConsumeData() && (n[Ar] = !0); this._setAndBind(a, n); continue } this._isConsumeData() && (n = n.filter((e => !e[Ar]))); n.length > g ? n = n.slice(0, g) : 0 === n.length && (n = null); n && this._isConsumeData() && n.forEach((e => { e[Ar] = !0 })) } else { if (!a.name) { this._setAndBind(a, t); continue } if (this._isConsumeData()) { const i = []; for (; i.length < g;) { const s = this._findDataByNameToConsume(a.name, a[wr](), t, e); if (!s) break; s[Ar] = !0; i.push(s) } n = i.length > 0 ? i : null } else { n = t[Qr](a.name, !1, this.emptyMerge).next().value; if (!n) { if (0 === o) { i.push(a); continue } const e = t[Hr] === Tn ? -1 : t[Hr]; n = a[tr] = new XmlObject(e, a.name); this.emptyMerge && (n[Ar] = !0); t[js](n); this._setAndBind(a, n); continue } this.emptyMerge && (n[Ar] = !0); n = [n] } } n ? this._bindOccurrences(a, n, s) : o > 0 ? this._setAndBind(a, t) : i.push(a) } i.forEach((e => e[pr]()[Xr](e))) } } class DataHandler { constructor(e, t) { this.data = t; this.dataset = e.datasets || null } serialize(e) { const t = [[-1, this.data[Er]()]]; for (; t.length > 0;) { const i = t.at(-1), [a, s] = i; if (a + 1 === s.length) { t.pop(); continue } const r = s[++i[0]], n = e.get(r[nn]); if (n) r[$r](n); else { const t = r[or](); for (const i of t.values()) { const t = e.get(i[nn]); if (t) { i[$r](t); break } } } const o = r[Er](); o.length > 0 && t.push([-1, o]) } const i = ['']; if (this.dataset) for (const e of this.dataset[Er]()) "data" !== e[Yr] && e[sn](i); this.data[sn](i); i.push(""); return i.join("") } } const qn = gn.config.id; class Acrobat extends XFAObject { constructor(e) { super(qn, "acrobat", !0); this.acrobat7 = null; this.autoSave = null; this.common = null; this.validate = null; this.validateApprovalSignatures = null; this.submitUrl = new XFAObjectArray } } class Acrobat7 extends XFAObject { constructor(e) { super(qn, "acrobat7", !0); this.dynamicRender = null } } class ADBE_JSConsole extends OptionObject { constructor(e) { super(qn, "ADBE_JSConsole", ["delegate", "Enable", "Disable"]) } } class ADBE_JSDebugger extends OptionObject { constructor(e) { super(qn, "ADBE_JSDebugger", ["delegate", "Enable", "Disable"]) } } class AddSilentPrint extends Option01 { constructor(e) { super(qn, "addSilentPrint") } } class AddViewerPreferences extends Option01 { constructor(e) { super(qn, "addViewerPreferences") } } class AdjustData extends Option10 { constructor(e) { super(qn, "adjustData") } } class AdobeExtensionLevel extends IntegerObject { constructor(e) { super(qn, "adobeExtensionLevel", 0, (e => e >= 1 && e <= 8)) } } class Agent extends XFAObject { constructor(e) { super(qn, "agent", !0); this.name = e.name ? e.name.trim() : ""; this.common = new XFAObjectArray } } class AlwaysEmbed extends ContentObject { constructor(e) { super(qn, "alwaysEmbed") } } class Amd extends StringObject { constructor(e) { super(qn, "amd") } } class config_Area extends XFAObject { constructor(e) { super(qn, "area"); this.level = getInteger({ data: e.level, defaultValue: 0, validate: e => e >= 1 && e <= 3 }); this.name = getStringOption(e.name, ["", "barcode", "coreinit", "deviceDriver", "font", "general", "layout", "merge", "script", "signature", "sourceSet", "templateCache"]) } } class Attributes extends OptionObject { constructor(e) { super(qn, "attributes", ["preserve", "delegate", "ignore"]) } } class AutoSave extends OptionObject { constructor(e) { super(qn, "autoSave", ["disabled", "enabled"]) } } class Base extends StringObject { constructor(e) { super(qn, "base") } } class BatchOutput extends XFAObject { constructor(e) { super(qn, "batchOutput"); this.format = getStringOption(e.format, ["none", "concat", "zip", "zipCompress"]) } } class BehaviorOverride extends ContentObject { constructor(e) { super(qn, "behaviorOverride") } [sr]() { this[er] = new Map(this[er].trim().split(/\s+/).filter((e => e.includes(":"))).map((e => e.split(":", 2)))) } } class Cache extends XFAObject { constructor(e) { super(qn, "cache", !0); this.templateCache = null } } class Change extends Option01 { constructor(e) { super(qn, "change") } } class Common extends XFAObject { constructor(e) { super(qn, "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 XFAObjectArray } } class Compress extends XFAObject { constructor(e) { super(qn, "compress"); this.scope = getStringOption(e.scope, ["imageOnly", "document"]) } } class CompressLogicalStructure extends Option01 { constructor(e) { super(qn, "compressLogicalStructure") } } class CompressObjectStream extends Option10 { constructor(e) { super(qn, "compressObjectStream") } } class Compression extends XFAObject { constructor(e) { super(qn, "compression", !0); this.compressLogicalStructure = null; this.compressObjectStream = null; this.level = null; this.type = null } } class Config extends XFAObject { constructor(e) { super(qn, "config", !0); this.acrobat = null; this.present = null; this.trace = null; this.agent = new XFAObjectArray } } class Conformance extends OptionObject { constructor(e) { super(qn, "conformance", ["A", "B"]) } } class ContentCopy extends Option01 { constructor(e) { super(qn, "contentCopy") } } class Copies extends IntegerObject { constructor(e) { super(qn, "copies", 1, (e => e >= 1)) } } class Creator extends StringObject { constructor(e) { super(qn, "creator") } } class CurrentPage extends IntegerObject { constructor(e) { super(qn, "currentPage", 0, (e => e >= 0)) } } class Data extends XFAObject { constructor(e) { super(qn, "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 XFAObjectArray; this.transform = new XFAObjectArray } } class Debug extends XFAObject { constructor(e) { super(qn, "debug", !0); this.uri = null } } class DefaultTypeface extends ContentObject { constructor(e) { super(qn, "defaultTypeface"); this.writingScript = getStringOption(e.writingScript, ["*", "Arabic", "Cyrillic", "EastEuropeanRoman", "Greek", "Hebrew", "Japanese", "Korean", "Roman", "SimplifiedChinese", "Thai", "TraditionalChinese", "Vietnamese"]) } } class Destination extends OptionObject { constructor(e) { super(qn, "destination", ["pdf", "pcl", "ps", "webClient", "zpl"]) } } class DocumentAssembly extends Option01 { constructor(e) { super(qn, "documentAssembly") } } class Driver extends XFAObject { constructor(e) { super(qn, "driver", !0); this.name = e.name ? e.name.trim() : ""; this.fontInfo = null; this.xdc = null } } class DuplexOption extends OptionObject { constructor(e) { super(qn, "duplexOption", ["simplex", "duplexFlipLongEdge", "duplexFlipShortEdge"]) } } class DynamicRender extends OptionObject { constructor(e) { super(qn, "dynamicRender", ["forbidden", "required"]) } } class Embed extends Option01 { constructor(e) { super(qn, "embed") } } class config_Encrypt extends Option01 { constructor(e) { super(qn, "encrypt") } } class config_Encryption extends XFAObject { constructor(e) { super(qn, "encryption", !0); this.encrypt = null; this.encryptionLevel = null; this.permissions = null } } class EncryptionLevel extends OptionObject { constructor(e) { super(qn, "encryptionLevel", ["40bit", "128bit"]) } } class Enforce extends StringObject { constructor(e) { super(qn, "enforce") } } class Equate extends XFAObject { constructor(e) { super(qn, "equate"); this.force = getInteger({ data: e.force, defaultValue: 1, validate: e => 0 === e }); this.from = e.from || ""; this.to = e.to || "" } } class EquateRange extends XFAObject { constructor(e) { super(qn, "equateRange"); this.from = e.from || ""; this.to = e.to || ""; this._unicodeRange = e.unicodeRange || "" } get unicodeRange() { const e = [], t = /U\+([0-9a-fA-F]+)/, i = this._unicodeRange; for (let a of i.split(",").map((e => e.trim())).filter((e => !!e))) { a = a.split("-", 2).map((e => { const i = e.match(t); return i ? parseInt(i[1], 16) : 0 })); 1 === a.length && a.push(a[0]); e.push(a) } return shadow(this, "unicodeRange", e) } } class Exclude extends ContentObject { constructor(e) { super(qn, "exclude") } [sr]() { this[er] = this[er].trim().split(/\s+/).filter((e => e && ["calculate", "close", "enter", "exit", "initialize", "ready", "validate"].includes(e))) } } class ExcludeNS extends StringObject { constructor(e) { super(qn, "excludeNS") } } class FlipLabel extends OptionObject { constructor(e) { super(qn, "flipLabel", ["usePrinterSetting", "on", "off"]) } } class config_FontInfo extends XFAObject { constructor(e) { super(qn, "fontInfo", !0); this.embed = null; this.map = null; this.subsetBelow = null; this.alwaysEmbed = new XFAObjectArray; this.defaultTypeface = new XFAObjectArray; this.neverEmbed = new XFAObjectArray } } class FormFieldFilling extends Option01 { constructor(e) { super(qn, "formFieldFilling") } } class GroupParent extends StringObject { constructor(e) { super(qn, "groupParent") } } class IfEmpty extends OptionObject { constructor(e) { super(qn, "ifEmpty", ["dataValue", "dataGroup", "ignore", "remove"]) } } class IncludeXDPContent extends StringObject { constructor(e) { super(qn, "includeXDPContent") } } class IncrementalLoad extends OptionObject { constructor(e) { super(qn, "incrementalLoad", ["none", "forwardOnly"]) } } class IncrementalMerge extends Option01 { constructor(e) { super(qn, "incrementalMerge") } } class Interactive extends Option01 { constructor(e) { super(qn, "interactive") } } class Jog extends OptionObject { constructor(e) { super(qn, "jog", ["usePrinterSetting", "none", "pageSet"]) } } class LabelPrinter extends XFAObject { constructor(e) { super(qn, "labelPrinter", !0); this.name = getStringOption(e.name, ["zpl", "dpl", "ipl", "tcpl"]); this.batchOutput = null; this.flipLabel = null; this.fontInfo = null; this.xdc = null } } class Layout extends OptionObject { constructor(e) { super(qn, "layout", ["paginate", "panel"]) } } class Level extends IntegerObject { constructor(e) { super(qn, "level", 0, (e => e > 0)) } } class Linearized extends Option01 { constructor(e) { super(qn, "linearized") } } class Locale extends StringObject { constructor(e) { super(qn, "locale") } } class LocaleSet extends StringObject { constructor(e) { super(qn, "localeSet") } } class Log extends XFAObject { constructor(e) { super(qn, "log", !0); this.mode = null; this.threshold = null; this.to = null; this.uri = null } } class MapElement extends XFAObject { constructor(e) { super(qn, "map", !0); this.equate = new XFAObjectArray; this.equateRange = new XFAObjectArray } } class MediumInfo extends XFAObject { constructor(e) { super(qn, "mediumInfo", !0); this.map = null } } class config_Message extends XFAObject { constructor(e) { super(qn, "message", !0); this.msgId = null; this.severity = null } } class Messaging extends XFAObject { constructor(e) { super(qn, "messaging", !0); this.message = new XFAObjectArray } } class Mode extends OptionObject { constructor(e) { super(qn, "mode", ["append", "overwrite"]) } } class ModifyAnnots extends Option01 { constructor(e) { super(qn, "modifyAnnots") } } class MsgId extends IntegerObject { constructor(e) { super(qn, "msgId", 1, (e => e >= 1)) } } class NameAttr extends StringObject { constructor(e) { super(qn, "nameAttr") } } class NeverEmbed extends ContentObject { constructor(e) { super(qn, "neverEmbed") } } class NumberOfCopies extends IntegerObject { constructor(e) { super(qn, "numberOfCopies", null, (e => e >= 2 && e <= 5)) } } class OpenAction extends XFAObject { constructor(e) { super(qn, "openAction", !0); this.destination = null } } class Output extends XFAObject { constructor(e) { super(qn, "output", !0); this.to = null; this.type = null; this.uri = null } } class OutputBin extends StringObject { constructor(e) { super(qn, "outputBin") } } class OutputXSL extends XFAObject { constructor(e) { super(qn, "outputXSL", !0); this.uri = null } } class Overprint extends OptionObject { constructor(e) { super(qn, "overprint", ["none", "both", "draw", "field"]) } } class Packets extends StringObject { constructor(e) { super(qn, "packets") } [sr]() { "*" !== this[er] && (this[er] = this[er].trim().split(/\s+/).filter((e => ["config", "datasets", "template", "xfdf", "xslt"].includes(e)))) } } class PageOffset extends XFAObject { constructor(e) { super(qn, "pageOffset"); this.x = getInteger({ data: e.x, defaultValue: "useXDCSetting", validate: e => !0 }); this.y = getInteger({ data: e.y, defaultValue: "useXDCSetting", validate: e => !0 }) } } class PageRange extends StringObject { constructor(e) { super(qn, "pageRange") } [sr]() { const e = this[er].trim().split(/\s+/).map((e => parseInt(e, 10))), t = []; for (let i = 0, a = e.length; i < a; i += 2)t.push(e.slice(i, i + 2)); this[er] = t } } class Pagination extends OptionObject { constructor(e) { super(qn, "pagination", ["simplex", "duplexShortEdge", "duplexLongEdge"]) } } class PaginationOverride extends OptionObject { constructor(e) { super(qn, "paginationOverride", ["none", "forceDuplex", "forceDuplexLongEdge", "forceDuplexShortEdge", "forceSimplex"]) } } class Part extends IntegerObject { constructor(e) { super(qn, "part", 1, (e => !1)) } } class Pcl extends XFAObject { constructor(e) { super(qn, "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 XFAObject { constructor(e) { super(qn, "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 XFAObject { constructor(e) { super(qn, "pdfa", !0); this.amd = null; this.conformance = null; this.includeXDPContent = null; this.part = null } } class Permissions extends XFAObject { constructor(e) { super(qn, "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 Option01 { constructor(e) { super(qn, "pickTrayByPDFSize") } } class config_Picture extends StringObject { constructor(e) { super(qn, "picture") } } class PlaintextMetadata extends Option01 { constructor(e) { super(qn, "plaintextMetadata") } } class Presence extends OptionObject { constructor(e) { super(qn, "presence", ["preserve", "dissolve", "dissolveStructure", "ignore", "remove"]) } } class Present extends XFAObject { constructor(e) { super(qn, "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 XFAObjectArray; this.labelPrinter = new XFAObjectArray; this.pcl = new XFAObjectArray; this.pdf = new XFAObjectArray; this.ps = new XFAObjectArray; this.submitUrl = new XFAObjectArray; this.webClient = new XFAObjectArray; this.zpl = new XFAObjectArray } } class Print extends Option01 { constructor(e) { super(qn, "print") } } class PrintHighQuality extends Option01 { constructor(e) { super(qn, "printHighQuality") } } class PrintScaling extends OptionObject { constructor(e) { super(qn, "printScaling", ["appdefault", "noScaling"]) } } class PrinterName extends StringObject { constructor(e) { super(qn, "printerName") } } class Producer extends StringObject { constructor(e) { super(qn, "producer") } } class Ps extends XFAObject { constructor(e) { super(qn, "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 ContentObject { constructor(e) { super(qn, "range") } [sr]() { this[er] = this[er].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 ContentObject { constructor(e) { super(qn, "record") } [sr]() { this[er] = this[er].trim(); const e = parseInt(this[er], 10); !isNaN(e) && e >= 0 && (this[er] = e) } } class Relevant extends ContentObject { constructor(e) { super(qn, "relevant") } [sr]() { this[er] = this[er].trim().split(/\s+/) } } class Rename extends ContentObject { constructor(e) { super(qn, "rename") } [sr]() { this[er] = this[er].trim(); (this[er].toLowerCase().startsWith("xml") || new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*", "u").test(this[er])) && warn("XFA - Rename: invalid XFA name") } } class RenderPolicy extends OptionObject { constructor(e) { super(qn, "renderPolicy", ["server", "client"]) } } class RunScripts extends OptionObject { constructor(e) { super(qn, "runScripts", ["both", "client", "none", "server"]) } } class config_Script extends XFAObject { constructor(e) { super(qn, "script", !0); this.currentPage = null; this.exclude = null; this.runScripts = null } } class ScriptModel extends OptionObject { constructor(e) { super(qn, "scriptModel", ["XFA", "none"]) } } class Severity extends OptionObject { constructor(e) { super(qn, "severity", ["ignore", "error", "information", "trace", "warning"]) } } class SilentPrint extends XFAObject { constructor(e) { super(qn, "silentPrint", !0); this.addSilentPrint = null; this.printerName = null } } class Staple extends XFAObject { constructor(e) { super(qn, "staple"); this.mode = getStringOption(e.mode, ["usePrinterSetting", "on", "off"]) } } class StartNode extends StringObject { constructor(e) { super(qn, "startNode") } } class StartPage extends IntegerObject { constructor(e) { super(qn, "startPage", 0, (e => !0)) } } class SubmitFormat extends OptionObject { constructor(e) { super(qn, "submitFormat", ["html", "delegate", "fdf", "xml", "pdf"]) } } class SubmitUrl extends StringObject { constructor(e) { super(qn, "submitUrl") } } class SubsetBelow extends IntegerObject { constructor(e) { super(qn, "subsetBelow", 100, (e => e >= 0 && e <= 100)) } } class SuppressBanner extends Option01 { constructor(e) { super(qn, "suppressBanner") } } class Tagged extends Option01 { constructor(e) { super(qn, "tagged") } } class config_Template extends XFAObject { constructor(e) { super(qn, "template", !0); this.base = null; this.relevant = null; this.startPage = null; this.uri = null; this.xsl = null } } class Threshold extends OptionObject { constructor(e) { super(qn, "threshold", ["trace", "error", "information", "warning"]) } } class To extends OptionObject { constructor(e) { super(qn, "to", ["null", "memory", "stderr", "stdout", "system", "uri"]) } } class TemplateCache extends XFAObject { constructor(e) { super(qn, "templateCache"); this.maxEntries = getInteger({ data: e.maxEntries, defaultValue: 5, validate: e => e >= 0 }) } } class Trace extends XFAObject { constructor(e) { super(qn, "trace", !0); this.area = new XFAObjectArray } } class Transform extends XFAObject { constructor(e) { super(qn, "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 OptionObject { constructor(e) { super(qn, "type", ["none", "ascii85", "asciiHex", "ccittfax", "flate", "lzw", "runLength", "native", "xdp", "mergedXDP"]) } } class Uri extends StringObject { constructor(e) { super(qn, "uri") } } class config_Validate extends OptionObject { constructor(e) { super(qn, "validate", ["preSubmit", "prePrint", "preExecute", "preSave"]) } } class ValidateApprovalSignatures extends ContentObject { constructor(e) { super(qn, "validateApprovalSignatures") } [sr]() { this[er] = this[er].trim().split(/\s+/).filter((e => ["docReady", "postSign"].includes(e))) } } class ValidationMessaging extends OptionObject { constructor(e) { super(qn, "validationMessaging", ["allMessagesIndividually", "allMessagesTogether", "firstMessageOnly", "noMessages"]) } } class Version extends OptionObject { constructor(e) { super(qn, "version", ["1.7", "1.6", "1.5", "1.4", "1.3", "1.2"]) } } class VersionControl extends XFAObject { constructor(e) { super(qn, "VersionControl"); this.outputBelow = getStringOption(e.outputBelow, ["warn", "error", "update"]); this.sourceAbove = getStringOption(e.sourceAbove, ["warn", "error"]); this.sourceBelow = getStringOption(e.sourceBelow, ["update", "maintain"]) } } class ViewerPreferences extends XFAObject { constructor(e) { super(qn, "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 XFAObject { constructor(e) { super(qn, "webClient", !0); this.name = e.name ? e.name.trim() : ""; this.fontInfo = null; this.xdc = null } } class Whitespace extends OptionObject { constructor(e) { super(qn, "whitespace", ["preserve", "ltrim", "normalize", "rtrim", "trim"]) } } class Window extends ContentObject { constructor(e) { super(qn, "window") } [sr]() { const e = this[er].trim().split(/\s*,\s*/, 2).map((e => parseInt(e, 10))); if (e.some((e => isNaN(e)))) this[er] = [0, 0]; else { 1 === e.length && e.push(e[0]); this[er] = e } } } class Xdc extends XFAObject { constructor(e) { super(qn, "xdc", !0); this.uri = new XFAObjectArray; this.xsl = new XFAObjectArray } } class Xdp extends XFAObject { constructor(e) { super(qn, "xdp", !0); this.packets = null } } class Xsl extends XFAObject { constructor(e) { super(qn, "xsl", !0); this.debug = null; this.uri = null } } class Zpl extends XFAObject { constructor(e) { super(qn, "zpl", !0); this.name = e.name ? e.name.trim() : ""; this.batchOutput = null; this.flipLabel = null; this.fontInfo = null; this.xdc = null } } class ConfigNamespace { static [on](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 config_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 config_Encrypt(e) } static encryption(e) { return new config_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 config_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 config_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 config_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 config_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 config_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 config_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) } } const On = gn.connectionSet.id; class ConnectionSet extends XFAObject { constructor(e) { super(On, "connectionSet", !0); this.wsdlConnection = new XFAObjectArray; this.xmlConnection = new XFAObjectArray; this.xsdConnection = new XFAObjectArray } } class EffectiveInputPolicy extends XFAObject { constructor(e) { super(On, "effectiveInputPolicy"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class EffectiveOutputPolicy extends XFAObject { constructor(e) { super(On, "effectiveOutputPolicy"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class Operation extends StringObject { constructor(e) { super(On, "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 StringObject { constructor(e) { super(On, "rootElement"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class SoapAction extends StringObject { constructor(e) { super(On, "soapAction"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class SoapAddress extends StringObject { constructor(e) { super(On, "soapAddress"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class connection_set_Uri extends StringObject { constructor(e) { super(On, "uri"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class WsdlAddress extends StringObject { constructor(e) { super(On, "wsdlAddress"); this.id = e.id || ""; this.name = e.name || ""; this.use = e.use || ""; this.usehref = e.usehref || "" } } class WsdlConnection extends XFAObject { constructor(e) { super(On, "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 XFAObject { constructor(e) { super(On, "xmlConnection", !0); this.dataDescription = e.dataDescription || ""; this.name = e.name || ""; this.uri = null } } class XsdConnection extends XFAObject { constructor(e) { super(On, "xsdConnection", !0); this.dataDescription = e.dataDescription || ""; this.name = e.name || ""; this.rootElement = null; this.uri = null } } class ConnectionSetNamespace { static [on](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 connection_set_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) } } const Pn = gn.datasets.id; class datasets_Data extends XmlObject { constructor(e) { super(Pn, "data", e) } [Gr]() { return !0 } } class Datasets extends XFAObject { constructor(e) { super(Pn, "datasets", !0); this.data = null; this.Signature = null } [Kr](e) { const t = e[Yr]; ("data" === t && e[Hr] === Pn || "Signature" === t && e[Hr] === gn.signature.id) && (this[t] = e); this[js](e) } } class DatasetsNamespace { static [on](e, t) { if (DatasetsNamespace.hasOwnProperty(e)) return DatasetsNamespace[e](t) } static datasets(e) { return new Datasets(e) } static data(e) { return new datasets_Data(e) } } const Wn = gn.localeSet.id; class CalendarSymbols extends XFAObject { constructor(e) { super(Wn, "calendarSymbols", !0); this.name = "gregorian"; this.dayNames = new XFAObjectArray(2); this.eraNames = null; this.meridiemNames = null; this.monthNames = new XFAObjectArray(2) } } class CurrencySymbol extends StringObject { constructor(e) { super(Wn, "currencySymbol"); this.name = getStringOption(e.name, ["symbol", "isoname", "decimal"]) } } class CurrencySymbols extends XFAObject { constructor(e) { super(Wn, "currencySymbols", !0); this.currencySymbol = new XFAObjectArray(3) } } class DatePattern extends StringObject { constructor(e) { super(Wn, "datePattern"); this.name = getStringOption(e.name, ["full", "long", "med", "short"]) } } class DatePatterns extends XFAObject { constructor(e) { super(Wn, "datePatterns", !0); this.datePattern = new XFAObjectArray(4) } } class DateTimeSymbols extends ContentObject { constructor(e) { super(Wn, "dateTimeSymbols") } } class Day extends StringObject { constructor(e) { super(Wn, "day") } } class DayNames extends XFAObject { constructor(e) { super(Wn, "dayNames", !0); this.abbr = getInteger({ data: e.abbr, defaultValue: 0, validate: e => 1 === e }); this.day = new XFAObjectArray(7) } } class Era extends StringObject { constructor(e) { super(Wn, "era") } } class EraNames extends XFAObject { constructor(e) { super(Wn, "eraNames", !0); this.era = new XFAObjectArray(2) } } class locale_set_Locale extends XFAObject { constructor(e) { super(Wn, "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 locale_set_LocaleSet extends XFAObject { constructor(e) { super(Wn, "localeSet", !0); this.locale = new XFAObjectArray } } class Meridiem extends StringObject { constructor(e) { super(Wn, "meridiem") } } class MeridiemNames extends XFAObject { constructor(e) { super(Wn, "meridiemNames", !0); this.meridiem = new XFAObjectArray(2) } } class Month extends StringObject { constructor(e) { super(Wn, "month") } } class MonthNames extends XFAObject { constructor(e) { super(Wn, "monthNames", !0); this.abbr = getInteger({ data: e.abbr, defaultValue: 0, validate: e => 1 === e }); this.month = new XFAObjectArray(12) } } class NumberPattern extends StringObject { constructor(e) { super(Wn, "numberPattern"); this.name = getStringOption(e.name, ["full", "long", "med", "short"]) } } class NumberPatterns extends XFAObject { constructor(e) { super(Wn, "numberPatterns", !0); this.numberPattern = new XFAObjectArray(4) } } class NumberSymbol extends StringObject { constructor(e) { super(Wn, "numberSymbol"); this.name = getStringOption(e.name, ["decimal", "grouping", "percent", "minus", "zero"]) } } class NumberSymbols extends XFAObject { constructor(e) { super(Wn, "numberSymbols", !0); this.numberSymbol = new XFAObjectArray(5) } } class TimePattern extends StringObject { constructor(e) { super(Wn, "timePattern"); this.name = getStringOption(e.name, ["full", "long", "med", "short"]) } } class TimePatterns extends XFAObject { constructor(e) { super(Wn, "timePatterns", !0); this.timePattern = new XFAObjectArray(4) } } class TypeFace extends XFAObject { constructor(e) { super(Wn, "typeFace", !0); this.name = "" | e.name } } class TypeFaces extends XFAObject { constructor(e) { super(Wn, "typeFaces", !0); this.typeFace = new XFAObjectArray } } class LocaleSetNamespace { static [on](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_set_Locale(e) } static localeSet(e) { return new locale_set_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) } } const Xn = gn.signature.id; class signature_Signature extends XFAObject { constructor(e) { super(Xn, "signature", !0) } } class SignatureNamespace { static [on](e, t) { if (SignatureNamespace.hasOwnProperty(e)) return SignatureNamespace[e](t) } static signature(e) { return new signature_Signature(e) } } const jn = gn.stylesheet.id; class Stylesheet extends XFAObject { constructor(e) { super(jn, "stylesheet", !0) } } class StylesheetNamespace { static [on](e, t) { if (StylesheetNamespace.hasOwnProperty(e)) return StylesheetNamespace[e](t) } static stylesheet(e) { return new Stylesheet(e) } } const Zn = gn.xdp.id; class xdp_Xdp extends XFAObject { constructor(e) { super(Zn, "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 XFAObjectArray; this.template = null } [Tr](e) { const t = gn[e[Yr]]; return t && e[Hr] === t.id } } class XdpNamespace { static [on](e, t) { if (XdpNamespace.hasOwnProperty(e)) return XdpNamespace[e](t) } static xdp(e) { return new xdp_Xdp(e) } } const Vn = gn.xhtml.id, zn = Symbol(), _n = 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"]), $n = 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) => measureToString(.99 * (e = t.fontSize = getMeasurement(e)))], ["letter-spacing", e => measureToString(getMeasurement(e))], ["line-height", e => measureToString(getMeasurement(e))], ["margin", e => measureToString(getMeasurement(e))], ["margin-bottom", e => measureToString(getMeasurement(e))], ["margin-left", e => measureToString(getMeasurement(e))], ["margin-right", e => measureToString(getMeasurement(e))], ["margin-top", e => measureToString(getMeasurement(e))], ["text-indent", e => measureToString(getMeasurement(e))], ["font-family", e => e], ["vertical-align", e => measureToString(getMeasurement(e))]]), Ao = /\s+/g, eo = /[\r\n]+/g, to = /\r\n?/g; function mapStyle(e, t, i) { const a = Object.create(null); if (!e) return a; const s = Object.create(null); for (const [t, i] of e.split(";").map((e => e.split(":", 2)))) { const e = $n.get(t); if ("" === e) continue; let r = i; e && (r = "string" == typeof e ? e : e(i, s)); t.endsWith("scale") ? a.transform = a.transform ? `${a[t]} ${r}` : r : a[t.replaceAll(/-([a-zA-Z])/g, ((e, t) => t.toUpperCase()))] = r } a.fontFamily && setFontFamily({ typeface: a.fontFamily, weight: a.fontWeight || "normal", posture: a.fontStyle || "normal", size: s.fontSize || 0 }, t, t[yr].fontFinder, a); if (i && a.verticalAlign && "0px" !== a.verticalAlign && a.fontSize) { const e = .583, t = .333, i = getMeasurement(a.fontSize); a.fontSize = measureToString(i * e); a.verticalAlign = measureToString(Math.sign(getMeasurement(a.verticalAlign)) * i * t) } i && a.fontSize && (a.fontSize = `calc(${a.fontSize} * var(--scale-factor))`); fixTextIndent(a); return a } const io = new Set(["body", "html"]); class XhtmlObject extends XmlObject { constructor(e, t) { super(Vn, t); this[zn] = !1; this.style = e.style || "" } [Vs](e) { super[Vs](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, i]) => { "font-family" === t && e[yr].usedTypefaces.add(i); return _n.has(t) })).map((e => e.join(":"))).join(";") : "" }(this) } [Ws]() { return !io.has(this[Yr]) } [qr](e, t = !1) { if (t) this[zn] = !0; else { e = e.replaceAll(eo, ""); this.style.includes("xfa-spacerun:yes") || (e = e.replaceAll(Ao, " ")) } e && (this[er] += e) } [Or](e, t = !0) { const i = Object.create(null), a = { top: NaN, bottom: NaN, left: NaN, right: NaN }; let s = null; for (const [e, t] of this.style.split(";").map((e => e.split(":", 2)))) switch (e) { case "font-family": i.typeface = stripQuotes(t); break; case "font-size": i.size = getMeasurement(t); break; case "font-weight": i.weight = t; break; case "font-style": i.posture = t; break; case "letter-spacing": i.letterSpacing = getMeasurement(t); break; case "margin": const e = t.split(/ \t/).map((e => getMeasurement(e))); switch (e.length) { case 1: a.top = a.bottom = a.left = a.right = e[0]; break; case 2: a.top = a.bottom = e[0]; a.left = a.right = e[1]; break; case 3: a.top = e[0]; a.bottom = e[2]; a.left = a.right = e[1]; break; case 4: a.top = e[0]; a.left = e[1]; a.bottom = e[2]; a.right = e[3] }break; case "margin-top": a.top = getMeasurement(t); break; case "margin-bottom": a.bottom = getMeasurement(t); break; case "margin-left": a.left = getMeasurement(t); break; case "margin-right": a.right = getMeasurement(t); break; case "line-height": s = getMeasurement(t) }e.pushData(i, a, s); if (this[er]) e.addString(this[er]); else for (const t of this[Er]()) "#text" !== t[Yr] ? t[Or](e) : e.addString(t[er]); t && e.popFont() } [an](e) { const t = []; this[ar] = { children: t }; this[Zs]({}); if (0 === t.length && !this[er]) return HTMLResult.EMPTY; let i; i = this[zn] ? this[er] ? this[er].replaceAll(to, "\n") : void 0 : this[er] || void 0; return HTMLResult.success({ name: this[Yr], attributes: { href: this.href, style: mapStyle(this.style, this, this[zn]) }, children: t, value: i }) } } class A extends XhtmlObject { constructor(e) { super(e, "a"); this.href = fixURL(e.href) || "" } } class B extends XhtmlObject { constructor(e) { super(e, "b") } [Or](e) { e.pushFont({ weight: "bold" }); super[Or](e); e.popFont() } } class Body extends XhtmlObject { constructor(e) { super(e, "body") } [an](e) { const t = super[an](e), { html: i } = t; if (!i) return HTMLResult.EMPTY; i.name = "div"; i.attributes.class = ["xfaRich"]; return t } } class Br extends XhtmlObject { constructor(e) { super(e, "br") } [en]() { return "\n" } [Or](e) { e.addString("\n") } [an](e) { return HTMLResult.success({ name: "br" }) } } class Html extends XhtmlObject { constructor(e) { super(e, "html") } [an](e) { const t = []; this[ar] = { children: t }; this[Zs]({}); if (0 === t.length) return HTMLResult.success({ name: "div", attributes: { class: ["xfaRich"], style: {} }, value: this[er] || "" }); if (1 === t.length) { const e = t[0]; if (e.attributes?.class.includes("xfaRich")) return HTMLResult.success(e) } return HTMLResult.success({ name: "div", attributes: { class: ["xfaRich"], style: {} }, children: t }) } } class I extends XhtmlObject { constructor(e) { super(e, "i") } [Or](e) { e.pushFont({ posture: "italic" }); super[Or](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") } [Or](e) { super[Or](e, !1); e.addString("\n"); e.addPara(); e.popFont() } [en]() { return this[pr]()[Er]().at(-1) === this ? super[en]() : super[en]() + "\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 [on](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) } } const ao = { config: ConfigNamespace, connection: ConnectionSetNamespace, datasets: DatasetsNamespace, localeSet: LocaleSetNamespace, signature: SignatureNamespace, stylesheet: StylesheetNamespace, template: TemplateNamespace, xdp: XdpNamespace, xhtml: XhtmlNamespace }; class UnknownNamespace { constructor(e) { this.namespaceId = e } [on](e, t) { return new XmlObject(this.namespaceId, e, t) } } class Root extends XFAObject { constructor(e) { super(-1, "root", Object.create(null)); this.element = null; this[br] = e } [Kr](e) { this.element = e; return !0 } [sr]() { super[sr](); if (this.element.template instanceof Template) { this[br].set(jr, this.element); this.element.template[Zr](this[br]); this.element.template[br] = this[br] } } } class Empty extends XFAObject { constructor() { super(-1, "", Object.create(null)) } [Kr](e) { return !1 } } class Builder { constructor(e = null) { this._namespaceStack = []; this._nsAgnosticLevel = 0; this._namespacePrefixes = new Map; this._namespaces = new Map; this._nextNsId = Math.max(...Object.values(gn).map((({ id: e }) => e))); this._currentNamespace = e || new UnknownNamespace(++this._nextNsId) } buildRoot(e) { return new Root(e) } build({ nsPrefix: e, name: t, attributes: i, namespace: a, prefixes: s }) { const r = null !== a; if (r) { this._namespaceStack.push(this._currentNamespace); this._currentNamespace = this._searchNamespace(a) } s && this._addNamespacePrefix(s); if (i.hasOwnProperty(vr)) { const e = ao.datasets, t = i[vr]; let a = null; for (const [i, s] of Object.entries(t)) { if (this._getNamespaceToUse(i) === e) { a = { xfa: s }; break } } a ? i[vr] = a : delete i[vr] } const n = this._getNamespaceToUse(e), o = n?.[on](t, i) || new Empty; o[Gr]() && this._nsAgnosticLevel++; (r || s || o[Gr]()) && (o[_s] = { hasNamespace: r, prefixes: s, nsAgnostic: o[Gr]() }); return o } isNsAgnostic() { return this._nsAgnosticLevel > 0 } _searchNamespace(e) { let t = this._namespaces.get(e); if (t) return t; for (const [i, { check: a }] of Object.entries(gn)) if (a(e)) { t = ao[i]; if (t) { this._namespaces.set(e, t); return t } break } t = new UnknownNamespace(++this._nextNsId); this._namespaces.set(e, t); return t } _addNamespacePrefix(e) { for (const { prefix: t, value: i } of e) { const e = this._searchNamespace(i); let a = this._namespacePrefixes.get(t); if (!a) { a = []; this._namespacePrefixes.set(t, a) } a.push(e) } } _getNamespaceToUse(e) { if (!e) return this._currentNamespace; const t = this._namespacePrefixes.get(e); if (t?.length > 0) return t.at(-1); warn(`Unknown namespace prefix: ${e}.`); return null } clean(e) { const { hasNamespace: t, prefixes: i, nsAgnostic: a } = e; t && (this._currentNamespace = this._namespaceStack.pop()); i && i.forEach((({ prefix: e }) => { this._namespacePrefixes.get(e).pop() })); a && this._nsAgnosticLevel-- } } class XFAParser extends XMLParserBase { constructor(e = null, t = !1) { super(); this._builder = new Builder(e); this._stack = []; this._globalData = { usedTypefaces: new Set }; this._ids = new Map; this._current = this._builder.buildRoot(this._ids); this._errorCode = Rs; this._whiteRegex = /^\s+$/; this._nbsps = /\xa0+/g; this._richText = t } parse(e) { this.parseXml(e); if (this._errorCode === Rs) { this._current[sr](); return this._current.element } } onText(e) { e = e.replace(this._nbsps, (e => e.slice(1) + " ")); this._richText || this._current[Ws]() ? this._current[qr](e, this._richText) : this._whiteRegex.test(e) || this._current[qr](e.trim()) } onCdata(e) { this._current[qr](e) } _mkAttributes(e, t) { let i = null, a = null; const s = Object.create({}); for (const { name: r, value: n } of e) if ("xmlns" === r) i ? warn(`XFA - multiple namespace definition in <${t}>`) : i = n; else if (r.startsWith("xmlns:")) { const e = r.substring(6); a || (a = []); a.push({ prefix: e, value: n }) } else { const e = r.indexOf(":"); if (-1 === e) s[r] = n; else { let t = s[vr]; t || (t = s[vr] = Object.create(null)); const [i, a] = [r.slice(0, e), r.slice(e + 1)]; (t[i] ||= Object.create(null))[a] = n } } return [i, a, s] } _getNameAndPrefix(e, t) { const i = e.indexOf(":"); return -1 === i ? [e, null] : [e.substring(i + 1), t ? "" : e.substring(0, i)] } onBeginElement(e, t, i) { const [a, s, r] = this._mkAttributes(t, e), [n, o] = this._getNameAndPrefix(e, this._builder.isNsAgnostic()), g = this._builder.build({ nsPrefix: o, name: n, attributes: r, namespace: a, prefixes: s }); g[yr] = this._globalData; if (i) { g[sr](); this._current[Kr](g) && g[zr](this._ids); g[Vs](this._builder) } else { this._stack.push(this._current); this._current = g } } onEndElement(e) { const t = this._current; if (t[Sr]() && "string" == typeof t[er]) { const e = new XFAParser; e._globalData = this._globalData; const i = e.parse(t[er]); t[er] = null; t[Kr](i) } t[sr](); this._current = this._stack.pop(); this._current[Kr](t) && t[zr](this._ids); t[Vs](this._builder) } onError(e) { this._errorCode = e } } class XFAFactory { constructor(e) { try { this.root = (new XFAParser).parse(XFAFactory._createDocument(e)); const t = new Binder(this.root); this.form = t.bind(); this.dataHandler = new DataHandler(this.root, t.getData()); this.form[yr].template = this.form } catch (e) { warn(`XFA - an error occurred during parsing and binding: ${e}`) } } isValid() { return this.root && this.form } _createPagesHelper() { const e = this.form[tn](); return new Promise(((t, i) => { const nextIteration = () => { try { const i = e.next(); i.done ? t(i.value) : setTimeout(nextIteration, 0) } catch (e) { i(e) } }; setTimeout(nextIteration, 0) })) } async _createPages() { try { this.pages = await this._createPagesHelper(); this.dims = this.pages.children.map((e => { const { width: t, height: i } = e.attributes.style; return [0, 0, parseInt(t), parseInt(i)] })) } catch (e) { 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[yr].images = e } setFonts(e) { this.form[yr].fontFinder = new FontFinder(e); const t = []; for (let e of this.form[yr].usedTypefaces) { e = stripQuotes(e); this.form[yr].fontFinder.find(e) || t.push(e) } return t.length > 0 ? t : null } appendFonts(e, t) { this.form[yr].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 XFAParser(XhtmlNamespace, !0).parse(e); if (!["body", "xhtml"].includes(t[Yr])) { const e = XhtmlNamespace.body({}); e[js](t); t = e } const i = t[an](); if (!i.success) return null; const { html: a } = i, { attributes: s } = a; if (s) { s.class && (s.class = s.class.filter((e => !e.startsWith("xfa")))); s.dir = "auto" } return { html: a, str: t[en]() } } catch (e) { warn(`XFA - an error occurred during parsing of rich text: ${e}`) } return null } } 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, i, a, s, r]) => ({ pdfManager: e, acroForm: t instanceof Dict ? t : Dict.empty, xfaDatasets: i, structTreeRoot: a, baseUrl: s, attachments: r })), (e => { warn(`createGlobals: "${e}".`); return null })) } static async create(e, t, i, a, s, r) { const n = s ? await this._getPageIndex(e, t, i.pdfManager) : null; return i.pdfManager.ensure(this, "_create", [e, t, i, a, s, n, r]) } static _create(e, t, i, a, s = !1, r = null, n = null) { const o = e.fetchIfRef(t); if (!(o instanceof Dict)) return; const { acroForm: g, pdfManager: c } = i, h = t instanceof Ref ? t.toString() : `annot_${a.createObjId()}`; let l = o.get("Subtype"); l = l instanceof Name ? l.name : null; const C = { xref: e, ref: t, dict: o, subtype: l, id: h, annotationGlobals: i, collectFields: s, needAppearances: !s && !0 === g.get("NeedAppearances"), pageIndex: r, evaluatorOptions: c.evaluatorOptions, pageRef: n }; switch (l) { case "Link": return new LinkAnnotation(C); case "Text": return new TextAnnotation(C); case "Widget": let e = getInheritableProperty({ dict: o, key: "FT" }); e = e instanceof Name ? e.name : null; switch (e) { case "Tx": return new TextWidgetAnnotation(C); case "Btn": return new ButtonWidgetAnnotation(C); case "Ch": return new ChoiceWidgetAnnotation(C); case "Sig": return new SignatureWidgetAnnotation(C) }warn(`Unimplemented widget field type "${e}", falling back to base field type.`); return new WidgetAnnotation(C); case "Popup": return new PopupAnnotation(C); case "FreeText": return new FreeTextAnnotation(C); case "Line": return new LineAnnotation(C); case "Square": return new SquareAnnotation(C); case "Circle": return new CircleAnnotation(C); case "PolyLine": return new PolylineAnnotation(C); case "Polygon": return new PolygonAnnotation(C); case "Caret": return new CaretAnnotation(C); case "Ink": return new InkAnnotation(C); case "Highlight": return new HighlightAnnotation(C); case "Underline": return new UnderlineAnnotation(C); case "Squiggly": return new SquigglyAnnotation(C); case "StrikeOut": return new StrikeOutAnnotation(C); case "Stamp": return new StampAnnotation(C); case "FileAttachment": return new FileAttachmentAnnotation(C); default: s || warn(l ? `Unimplemented annotation type "${l}", falling back to base annotation.` : "Annotation is missing the required /Subtype."); return new Annotation(C) } } static async _getPageIndex(e, t, i) { try { const a = await e.fetchIfRefAsync(t); if (!(a instanceof Dict)) return -1; const s = a.getRaw("P"); if (s instanceof Ref) try { return await i.ensureCatalog("getPageIndex", [s]) } catch (e) { info(`_getPageIndex -- not a valid page reference: "${e}".`) } if (a.has("Kids")) return -1; const r = await i.ensureDoc("numPages"); for (let e = 0; e < r; e++) { const a = await i.getPage(e), s = await i.ensure(a, "annotations"); for (const i of s) if (i instanceof Ref && isRefsEqual(i, t)) return e } } catch (e) { warn(`_getPageIndex: "${e}".`) } return -1 } static generateImages(e, t, i) { if (!i) { warn("generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images."); return null } let a; for (const { bitmapId: i, bitmap: s } of e) if (s) { a ||= new Map; a.set(i, StampAnnotation.createImage(s, t)) } return a } static async saveNewAnnotations(e, t, i, a) { const s = e.xref; let r; const n = [], o = [], { isOffscreenCanvasSupported: g } = e.options; for (const c of i) if (!c.deleted) switch (c.annotationType) { case u: if (!r) { const e = new Dict(s); e.set("BaseFont", Name.get("Helvetica")); e.set("Type", Name.get("Font")); e.set("Subtype", Name.get("Type1")); e.set("Encoding", Name.get("WinAnsiEncoding")); const t = []; r = s.getNewTemporaryRef(); await writeObject(r, e, t, s); n.push({ ref: r, data: t.join("") }) } o.push(FreeTextAnnotation.createNewAnnotation(s, c, n, { evaluator: e, task: t, baseFontRef: r })); break; case d: c.quadPoints ? o.push(HighlightAnnotation.createNewAnnotation(s, c, n)) : o.push(InkAnnotation.createNewAnnotation(s, c, n)); break; case p: o.push(InkAnnotation.createNewAnnotation(s, c, n)); break; case f: if (!g) break; const i = await a.get(c.bitmapId); if (i.imageStream) { const { imageStream: e, smaskStream: t } = i, a = []; if (t) { const i = s.getNewTemporaryRef(); await writeObject(i, t, a, s); n.push({ ref: i, data: a.join("") }); e.dict.set("SMask", i); a.length = 0 } const r = i.imageRef = s.getNewTemporaryRef(); await writeObject(r, e, a, s); n.push({ ref: r, data: a.join("") }); i.imageStream = i.smaskStream = null } o.push(StampAnnotation.createNewAnnotation(s, c, n, { image: i })) }return { annotations: await Promise.all(o), dependencies: n } } static async printNewAnnotations(e, t, i, a, s) { if (!a) return null; const { options: r, xref: n } = t, o = []; for (const g of a) if (!g.deleted) switch (g.annotationType) { case u: o.push(FreeTextAnnotation.createNewPrintAnnotation(e, n, g, { evaluator: t, task: i, evaluatorOptions: r })); break; case d: g.quadPoints ? o.push(HighlightAnnotation.createNewPrintAnnotation(e, n, g, { evaluatorOptions: r })) : o.push(InkAnnotation.createNewPrintAnnotation(e, n, g, { evaluatorOptions: r })); break; case p: o.push(InkAnnotation.createNewPrintAnnotation(e, n, g, { evaluatorOptions: r })); break; case f: if (!r.isOffscreenCanvasSupported) break; const a = await s.get(g.bitmapId); if (a.imageStream) { const { imageStream: e, smaskStream: t } = a; t && e.dict.set("SMask", t); a.imageRef = new JpegStream(e, e.length); a.imageStream = a.smaskStream = null } o.push(StampAnnotation.createNewPrintAnnotation(e, n, g, { image: a, evaluatorOptions: r })) }return Promise.all(o) } } function getRgbColor(e, t = new Uint8ClampedArray(3)) { if (!Array.isArray(e)) return t; const i = t || new Uint8ClampedArray(3); switch (e.length) { case 0: return null; case 1: ColorSpace.singletons.gray.getRgbItem(e, 0, i, 0); return i; case 3: ColorSpace.singletons.rgb.getRgbItem(e, 0, i, 0); return i; case 4: ColorSpace.singletons.cmyk.getRgbItem(e, 0, i, 0); return i; default: return t } } function getPdfColorArray(e) { return Array.from(e, (e => e / 255)) } function getQuadPoints(e, t) { const i = e.getArray("QuadPoints"); if (!isNumberArray(i, null) || 0 === i.length || i.length % 8 > 0) return null; const a = []; for (let e = 0, s = i.length / 8; e < s; e++) { let s = 1 / 0, r = -1 / 0, n = 1 / 0, o = -1 / 0; for (let t = 8 * e, a = 8 * e + 8; t < a; t += 2) { const e = i[t], a = i[t + 1]; s = Math.min(e, s); r = Math.max(e, r); n = Math.min(a, n); o = Math.max(a, o) } if (null !== t && (s < t[0] || r > t[2] || n < t[1] || o > t[3])) return null; a.push([{ x: s, y: o }, { x: r, y: o }, { x: s, y: n }, { x: r, y: n }]) } return a } function getTransformMatrix(e, t, i) { const [a, s, r, n] = Util.getAxialAlignedBoundingBox(t, i); if (a === r || s === n) return [1, 0, 0, 1, e[0], e[1]]; const o = (e[2] - e[0]) / (r - a), g = (e[3] - e[1]) / (n - s); return [o, 0, 0, g, e[0] - a * o, e[1] - s * g] } class Annotation { constructor(e) { const { dict: t, xref: i, annotationGlobals: a } = 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 s = t.get("MK"); this.setBorderAndBackgroundColors(s); this.setRotation(s, t); this.ref = e.ref instanceof Ref ? e.ref : null; this._streams = []; this.appearance && this._streams.push(this.appearance); const r = !!(this.flags & AA), n = !!(this.flags & eA); if (a.structTreeRoot) { let i = t.get("StructParent"); i = Number.isInteger(i) && i >= 0 ? i : -1; a.structTreeRoot.addAnnotationIdToPage(e.pageRef, i) } 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 & _), noHTML: r && n }; if (e.collectFields) { const a = t.get("Kids"); if (Array.isArray(a)) { const e = []; for (const t of a) t instanceof Ref && e.push(t.toString()); 0 !== e.length && (this.data.kidIds = e) } this.data.actions = collectActions(i, t, uA); 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, Z) && !this._hasFlag(e, $) } _isPrintable(e) { return this._hasFlag(e, z) && !this._hasFlag(e, V) && !this._hasFlag(e, Z) } mustBeViewed(e, t) { const i = e?.get(this.data.id)?.noView; return void 0 !== i ? !i : this.viewable && !this._hasFlag(this.flags, V) } 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 ? stringToPDFString(e) : ""; return { str: t, dir: t && "rtl" === bidi(t).dir ? "rtl" : "ltr" } } setDefaultAppearance(e) { const { dict: t, annotationGlobals: i } = e, a = getInheritableProperty({ dict: t, key: "DA" }) || i.acroForm.get("DA"); this._defaultAppearance = "string" == typeof a ? a : ""; this.data.defaultAppearanceData = 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; this.flags & Z && "Annotation" !== this.constructor.name && (this.flags ^= Z) } hasFlag(e) { return this._hasFlag(this.flags, e) } setRectangle(e) { this.rectangle = lookupNormalRect(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 i = e[t]; if (i instanceof Name) switch (i.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] = i.name; continue }warn(`Ignoring invalid lineEnding: ${i}`) } } setRotation(e, t) { this.rotation = 0; let i = e instanceof Dict ? e.get("R") || 0 : t.get("Rotate") || 0; if (Number.isInteger(i) && 0 !== i) { i %= 360; i < 0 && (i += 360); i % 90 == 0 && (this.rotation = i) } } setBorderAndBackgroundColors(e) { if (e instanceof 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 Dict) if (e.has("BS")) { const t = e.get("BS"); if (t instanceof Dict) { const e = t.get("Type"); if (!e || isName(e, "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 Dict)) return; const i = t.get("N"); if (i instanceof BaseStream) { this.appearance = i; return } if (!(i instanceof Dict)) return; const a = e.get("AS"); if (!(a instanceof Name && i.has(a.name))) return; const s = i.get(a.name); s instanceof BaseStream && (this.appearance = s) } setOptionalContent(e) { this.oc = null; const t = e.get("OC"); t instanceof Name ? warn("setOptionalContent: Support for /Name-entry is not implemented.") : t instanceof Dict && (this.oc = t) } loadResources(e, t) { return t.dict.getAsync("Resources").then((t => { if (!t) return; return new ObjectLoader(t, e, t.xref).load().then((function () { return t })) })) } async getOperatorList(e, t, a, s, r) { const { hasOwnCanvas: n, id: o, rect: c } = this.data; let h = this.appearance; const l = !!(n && a & g); if (l && (c[0] === c[2] || c[1] === c[3])) { this.data.hasOwnCanvas = !1; return { opList: new OperatorList, separateForm: !1, separateCanvas: !1 } } if (!h) { if (!l) return { opList: new OperatorList, separateForm: !1, separateCanvas: !1 }; h = new StringStream(""); h.dict = new Dict } const C = h.dict, Q = await this.loadResources(["ExtGState", "ColorSpace", "Pattern", "Shading", "XObject", "Font"], h), E = lookupRect(C.getArray("BBox"), [0, 0, 1, 1]), u = lookupMatrix(C.getArray("Matrix"), i), d = getTransformMatrix(c, E, u), f = new OperatorList; let p; this.oc && (p = await e.parseMarkedContentProps(this.oc, null)); void 0 !== p && f.addOp(He, ["OC", p]); f.addOp(We, [o, c, d, u, l]); await e.getOperatorList({ stream: h, task: t, resources: Q, operatorList: f, fallbackFontDict: this._fallbackFontDict }); f.addOp(Xe, []); void 0 !== p && f.addOp(Ye, []); this.reset(); return { opList: f, separateForm: !1, separateCanvas: l } } async save(e, t, i) { return null } get hasTextContent() { return !1 } async extractTextContent(e, t, i) { if (!this.appearance) return; const a = await this.loadResources(["ExtGState", "Font", "Properties", "XObject"], this.appearance), s = [], r = []; let n = null; const o = { desiredSize: Math.Infinity, ready: !0, enqueue(e, t) { for (const t of e.items) if (void 0 !== t.str) { n ||= t.transform.slice(-2); r.push(t.str); if (t.hasEOL) { s.push(r.join("").trimEnd()); r.length = 0 } } } }; await e.getTextContent({ stream: this.appearance, task: t, resources: a, includeMarkedContent: !0, keepWhiteSpace: !0, sink: o, viewBox: i }); this.reset(); r.length && s.push(r.join("").trimEnd()); if (s.length > 1 || s[0]) { const e = this.appearance.dict, t = lookupRect(e.getArray("BBox"), null), i = lookupMatrix(e.getArray("Matrix"), null); this.data.textPosition = this._transformPoint(n, t, i); this.data.textContent = s } } _transformPoint(e, t, i) { const { rect: a } = this.data; t ||= [0, 0, 1, 1]; i ||= [1, 0, 0, 1, 0, 0]; const s = getTransformMatrix(a, t, i); s[4] -= a[0]; s[5] -= a[1]; e = Util.applyTransform(e, s); return Util.applyTransform(e, 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")) { warn("Unknown field name, falling back to empty field name."); return "" } if (!e.has("Parent")) return stringToPDFString(e.get("T")); const t = []; e.has("T") && t.unshift(stringToPDFString(e.get("T"))); let i = e; const a = new RefSet; e.objId && a.put(e.objId); for (; i.has("Parent");) { i = i.get("Parent"); if (!(i instanceof Dict) || i.objId && a.has(i.objId)) break; i.objId && a.put(i.objId); i.has("T") && t.unshift(stringToPDFString(i.get("T"))) } return t.join(".") } } class AnnotationBorderStyle { constructor() { this.width = 1; this.style = lA; this.dashArray = [3]; this.horizontalCornerRadius = 0; this.verticalCornerRadius = 0 } setWidth(e, t = [0, 0, 0, 0]) { if (e instanceof Name) this.width = 0; else if ("number" == typeof e) { if (e > 0) { const i = (t[2] - t[0]) / 2, a = (t[3] - t[1]) / 2; if (i > 0 && a > 0 && (e > i || e > a)) { warn(`AnnotationBorderStyle.setWidth - ignoring width: ${e}`); e = 1 } } this.width = e } } setStyle(e) { if (e instanceof Name) switch (e.name) { case "S": this.style = lA; break; case "D": this.style = CA; break; case "B": this.style = BA; break; case "I": this.style = QA; break; case "U": this.style = EA } } setDashArray(e, t = !1) { if (Array.isArray(e)) { let i = !0, a = !0; for (const t of e) { if (!(+t >= 0)) { i = !1; break } t > 0 && (a = !1) } if (0 === e.length || i && !a) { this.dashArray = e; t && this.setStyle(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) } } 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 Ref ? e.toString() : null; const i = t.get("RT"); this.data.replyType = i instanceof Name ? i.name : j } let i = null; if (this.data.replyType === X) { 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; i = 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; i = t.getRaw("Popup"); t.has("C") || (this.data.color = null) } this.data.popupRef = i instanceof Ref ? i.toString() : null; t.has("RC") && (this.data.richText = XFAFactory.getRichTextAsHtml(t.get("RC"))) } setCreationDate(e) { this.creationDate = "string" == typeof e ? e : null } _setDefaultAppearance({ xref: e, extra: t, strokeColor: i, fillColor: a, blendMode: s, strokeAlpha: r, fillAlpha: n, pointsCallback: o }) { let g = Number.MAX_VALUE, c = Number.MAX_VALUE, h = Number.MIN_VALUE, l = Number.MIN_VALUE; const C = ["q"]; t && C.push(t); i && C.push(`${i[0]} ${i[1]} ${i[2]} RG`); a && C.push(`${a[0]} ${a[1]} ${a[2]} rg`); let Q = this.data.quadPoints; Q || (Q = [[{ 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 Q) { const [t, i, a, s] = o(C, e); g = Math.min(g, t); h = Math.max(h, i); c = Math.min(c, a); l = Math.max(l, s) } C.push("Q"); const E = new Dict(e), u = new Dict(e); u.set("Subtype", Name.get("Form")); const d = new StringStream(C.join(" ")); d.dict = u; E.set("Fm0", d); const f = new Dict(e); s && f.set("BM", Name.get(s)); "number" == typeof r && f.set("CA", r); "number" == typeof n && f.set("ca", n); const p = new Dict(e); p.set("GS0", f); const m = new Dict(e); m.set("ExtGState", p); m.set("XObject", E); const y = new Dict(e); y.set("Resources", m); const w = this.data.rect = [g, c, h, l]; y.set("BBox", w); this.appearance = new StringStream("/GS0 gs /Fm0 Do"); this.appearance.dict = y; this._streams.push(this.appearance, d) } static async createNewAnnotation(e, t, i, a) { const s = t.ref ||= e.getNewTemporaryRef(), r = await this.createNewAppearanceStream(t, e, a), n = []; let o; if (r) { const a = e.getNewTemporaryRef(); o = this.createNewDict(t, e, { apRef: a }); await writeObject(a, r, n, e); i.push({ ref: a, data: n.join("") }) } else o = this.createNewDict(t, e, {}); Number.isInteger(t.parentTreeId) && o.set("StructParent", t.parentTreeId); n.length = 0; await writeObject(s, o, n, e); return { ref: s, data: n.join("") } } static async createNewPrintAnnotation(e, t, i, a) { const s = await this.createNewAppearanceStream(i, t, a), r = this.createNewDict(i, t, { ap: s }), n = new this.prototype.constructor({ dict: r, xref: t, annotationGlobals: e, evaluatorOptions: a.evaluatorOptions }); i.ref && (n.ref = n.refToReplace = i.ref); return n } } class WidgetAnnotation extends Annotation { constructor(e) { super(e); const { dict: t, xref: i, annotationGlobals: a } = e, s = this.data; this._needAppearances = e.needAppearances; s.annotationType = W; void 0 === s.fieldName && (s.fieldName = this._constructFieldName(t)); void 0 === s.actions && (s.actions = collectActions(i, t, uA)); let r = getInheritableProperty({ dict: t, key: "V", getArray: !0 }); s.fieldValue = this._decodeFormValue(r); const n = getInheritableProperty({ dict: t, key: "DV", getArray: !0 }); s.defaultFieldValue = this._decodeFormValue(n); if (void 0 === r && a.xfaDatasets) { const e = this._title.str; if (e) { this._hasValueFromXFA = !0; s.fieldValue = r = a.xfaDatasets.getValue(e) } } void 0 === r && null !== s.defaultFieldValue && (s.fieldValue = s.defaultFieldValue); s.alternativeText = stringToPDFString(t.get("TU") || ""); this.setDefaultAppearance(e); s.hasAppearance ||= this._needAppearances && void 0 !== s.fieldValue && null !== s.fieldValue; const o = getInheritableProperty({ dict: t, key: "FT" }); s.fieldType = o instanceof Name ? o.name : null; const g = getInheritableProperty({ dict: t, key: "DR" }), c = a.acroForm.get("DR"), h = this.appearance?.dict.get("Resources"); this._fieldResources = { localResources: g, acroFormResources: c, appearanceResources: h, mergedResources: Dict.merge({ xref: i, dictArray: [g, h, c], mergeSubDicts: !0 }) }; s.fieldFlags = getInheritableProperty({ dict: t, key: "Ff" }); (!Number.isInteger(s.fieldFlags) || s.fieldFlags < 0) && (s.fieldFlags = 0); s.readOnly = this.hasFieldFlag(tA); s.required = this.hasFieldFlag(iA); s.hidden = this._hasFlag(s.annotationFlags, V) || this._hasFlag(s.annotationFlags, $) } _decodeFormValue(e) { return Array.isArray(e) ? e.filter((e => "string" == typeof e)).map((e => stringToPDFString(e))) : e instanceof Name ? stringToPDFString(e.name) : "string" == typeof e ? stringToPDFString(e) : null } hasFieldFlag(e) { return !!(this.data.fieldFlags & e) } _isViewable(e) { return !0 } mustBeViewed(e, t) { return t ? this.viewable : super.mustBeViewed(e, t) && !this._hasFlag(this.flags, $) } getRotationMatrix(e) { let t = e?.get(this.data.id)?.rotation; void 0 === t && (t = this.rotation); if (0 === t) return i; return getRotationMatrix(t, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]) } getBorderAndBackgroundAppearances(e) { let t = e?.get(this.data.id)?.rotation; void 0 === t && (t = this.rotation); if (!this.backgroundColor && !this.borderColor) return ""; const i = this.data.rect[2] - this.data.rect[0], a = this.data.rect[3] - this.data.rect[1], s = 0 === t || 180 === t ? `0 0 ${i} ${a} re` : `0 0 ${a} ${i} re`; let r = ""; this.backgroundColor && (r = `${getPdfColor(this.backgroundColor, !0)} ${s} f `); if (this.borderColor) { r += `${this.borderStyle.width || 1} w ${getPdfColor(this.borderColor, !1)} ${s} S ` } return r } async getOperatorList(e, t, i, a, s) { if (a && !(this instanceof SignatureWidgetAnnotation) && !this.data.noHTML && !this.data.hasOwnCanvas) return { opList: new OperatorList, separateForm: !0, separateCanvas: !1 }; if (!this._hasText) return super.getOperatorList(e, t, i, a, s); const r = await this._getAppearance(e, t, i, s); if (this.appearance && null === r) return super.getOperatorList(e, t, i, a, s); const n = new OperatorList; if (!this._defaultAppearance || null === r) return { opList: n, separateForm: !1, separateCanvas: !1 }; const o = !!(this.data.hasOwnCanvas && i & g), c = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]], h = getTransformMatrix(this.data.rect, c, [1, 0, 0, 1, 0, 0]); let l; this.oc && (l = await e.parseMarkedContentProps(this.oc, null)); void 0 !== l && n.addOp(He, ["OC", l]); n.addOp(We, [this.data.id, this.data.rect, h, this.getRotationMatrix(s), o]); const C = new StringStream(r); await e.getOperatorList({ stream: C, task: t, resources: this._fieldResources.mergedResources, operatorList: n }); n.addOp(Xe, []); void 0 !== l && n.addOp(Ye, []); return { opList: n, separateForm: !1, separateCanvas: o } } _getMKDict(e) { const t = new 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 s = a?.get(this.data.id); let r = s?.value, n = s?.rotation; if (r === this.data.fieldValue || void 0 === r) { if (!this._hasValueFromXFA && void 0 === n) return null; r ||= this.data.fieldValue } if (void 0 === n && !this._hasValueFromXFA && Array.isArray(r) && Array.isArray(this.data.fieldValue) && r.length === this.data.fieldValue.length && r.every(((e, t) => e === this.data.fieldValue[t]))) return null; void 0 === n && (n = this.rotation); let o = null; if (!this._needAppearances) { o = await this._getAppearance(e, t, h, a); if (null === o) return null } let g = !1; if (o?.needAppearances) { g = !0; o = null } const { xref: c } = e, l = c.fetchIfRef(this.ref); if (!(l instanceof Dict)) return null; const C = new Dict(c); for (const e of l.getKeys()) "AP" !== e && C.set(e, l.getRaw(e)); const Q = { path: this.data.fieldName, value: r }, encoder = e => isAscii(e) ? e : stringToUTF16String(e, !0); C.set("V", Array.isArray(r) ? r.map(encoder) : encoder(r)); this.amendSavedDict(a, C); const E = this._getMKDict(n); E && C.set("MK", E); const u = [], d = [{ ref: this.ref, data: "", xfa: Q, needAppearances: g }]; if (null !== o) { const e = c.getNewTemporaryRef(), t = new Dict(c); C.set("AP", t); t.set("N", e); const s = this._getSaveFieldResources(c), r = new StringStream(o), n = r.dict = new Dict(c); n.set("Subtype", Name.get("Form")); n.set("Resources", s); n.set("BBox", [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]]); const g = this.getRotationMatrix(a); g !== i && n.set("Matrix", g); await writeObject(e, r, u, c); d.push({ ref: e, data: u.join(""), xfa: null, needAppearances: !1 }); u.length = 0 } C.set("M", `D:${getModificationDate()}`); await writeObject(this.ref, C, u, c); d[0].data = u.join(""); return d } async _getAppearance(e, t, i, a) { if (this.hasFieldFlag(sA)) return null; const s = a?.get(this.data.id); let r, o; if (s) { r = s.formattedValue || s.value; o = s.rotation } if (void 0 === o && void 0 === r && !this._needAppearances && (!this._hasValueFromXFA || this.appearance)) return null; const g = this.getBorderAndBackgroundAppearances(a); if (void 0 === r) { r = this.data.fieldValue; if (!r) return `/Tx BMC q ${g}Q EMC` } Array.isArray(r) && 1 === r.length && (r = r[0]); assert("string" == typeof r, "Expected `value` to be a string."); r = r.trim(); if (this.data.combo) { const e = this.data.options.find((({ exportValue: e }) => r === e)); r = e?.displayValue || r } if ("" === r) return `/Tx BMC q ${g}Q EMC`; void 0 === o && (o = this.rotation); let c, l = -1; if (this.data.multiLine) { c = r.split(/\r\n?|\n/).map((e => e.normalize("NFC"))); l = c.length } else c = [r.replace(/\r\n?|\n/, "").normalize("NFC")]; let C = this.data.rect[3] - this.data.rect[1], Q = this.data.rect[2] - this.data.rect[0]; 90 !== o && 270 !== o || ([Q, C] = [C, Q]); this._defaultAppearance || (this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance = "/Helvetica 0 Tf 0 g")); let E, u, d, f = await WidgetAnnotation._getFontData(e, t, this.data.defaultAppearanceData, this._fieldResources.mergedResources); const p = []; let m = !1; for (const e of c) { const t = f.encodeString(e); t.length > 1 && (m = !0); p.push(t.join("")) } if (m && i & h) return { needAppearances: !0 }; if (m && this._isOffscreenCanvasSupported) { const i = this.data.comb ? "monospace" : "sans-serif", a = new FakeUnicodeFont(e.xref, i), s = a.createFontResources(c.join("")), n = s.getRaw("Font"); if (this._fieldResources.mergedResources.has("Font")) { const e = this._fieldResources.mergedResources.get("Font"); for (const t of n.getKeys()) e.set(t, n.getRaw(t)) } else this._fieldResources.mergedResources.set("Font", n); const o = a.fontName.name; f = await WidgetAnnotation._getFontData(e, t, { fontName: o, fontSize: 0 }, s); for (let e = 0, t = p.length; e < t; e++)p[e] = stringToUTF16String(c[e]); const g = Object.assign(Object.create(null), this.data.defaultAppearanceData); this.data.defaultAppearanceData.fontSize = 0; this.data.defaultAppearanceData.fontName = o;[E, u, d] = this._computeFontSize(C - 2, Q - 4, r, f, l); this.data.defaultAppearanceData = g } else { this._isOffscreenCanvasSupported || warn("_getAppearance: OffscreenCanvas is not supported, annotation may not render correctly.");[E, u, d] = this._computeFontSize(C - 2, Q - 4, r, f, l) } let y = f.descent; y = isNaN(y) ? n * d : Math.max(n * d, Math.abs(y) * u); const w = Math.min(Math.floor((C - u) / 2), 1), b = this.data.textAlignment; if (this.data.multiLine) return this._getMultilineAppearance(E, p, f, u, Q, C, b, 2, w, y, d, a); if (this.data.comb) return this._getCombAppearance(E, f, p[0], u, Q, C, 2, w, y, d, a); const D = w + y; if (0 === b || b > 2) return `/Tx BMC q ${g}BT ` + E + ` 1 0 0 1 ${numberToString(2)} ${numberToString(D)} Tm (${escapeString(p[0])}) Tj ET Q EMC`; return `/Tx BMC q ${g}BT ` + E + ` 1 0 0 1 0 0 Tm ${this._renderText(p[0], f, u, Q, b, { shift: 0 }, 2, D)} ET Q EMC` } static async _getFontData(e, t, i, a) { const s = new OperatorList, r = { font: null, clone() { return this } }, { fontName: n, fontSize: o } = i; await e.handleSetFont(a, [n && Name.get(n), o], null, s, t, r, null); return r.font } _getTextWidth(e, t) { return t.charsToGlyphs(e).reduce(((e, t) => e + t.width), 0) / 1e3 } _computeFontSize(e, t, i, a, r) { let { fontSize: n } = this.data.defaultAppearanceData, o = (n || 12) * s, g = Math.round(e / o); if (!n) { const roundWithTwoDigits = e => Math.floor(100 * e) / 100; if (-1 === r) { const r = this._getTextWidth(i, a); n = roundWithTwoDigits(Math.min(e / s, r > t ? t / r : 1 / 0)); g = 1 } else { const c = i.split(/\r\n?|\n/), h = []; for (const e of c) { const t = a.encodeString(e).join(""), i = a.charsToGlyphs(t), s = a.getCharPositions(t); h.push({ line: t, glyphs: i, positions: s }) } const isTooBig = i => { let s = 0; for (const r of h) { s += this._splitLine(null, a, i, t, r).length * i; if (s > e) return !0 } return !1 }; g = Math.max(g, r); for (; ;) { o = e / g; n = roundWithTwoDigits(o / s); if (!isTooBig(n)) break; g++ } } const { fontName: c, fontColor: h } = this.data.defaultAppearanceData; this._defaultAppearance = function createDefaultAppearance({ fontSize: e, fontName: t, fontColor: i }) { return `/${escapePDFName(t)} ${e} Tf ${getPdfColor(i, !0)}` }({ fontSize: n, fontName: c, fontColor: h }) } return [this._defaultAppearance, n, e / g] } _renderText(e, t, i, a, s, r, n, o) { let g; if (1 === s) { g = (a - this._getTextWidth(e, t) * i) / 2 } else if (2 === s) { g = a - this._getTextWidth(e, t) * i - n } else g = n; const c = numberToString(g - r.shift); r.shift = g; return `${c} ${o = numberToString(o)} Td (${escapeString(e)}) Tj` } _getSaveFieldResources(e) { const { localResources: t, appearanceResources: i, acroFormResources: a } = this._fieldResources, s = this.data.defaultAppearanceData?.fontName; if (!s) return t || Dict.empty; for (const e of [t, i]) if (e instanceof Dict) { const t = e.get("Font"); if (t instanceof Dict && t.has(s)) return e } if (a instanceof Dict) { const i = a.get("Font"); if (i instanceof Dict && i.has(s)) { const a = new Dict(e); a.set(s, i.getRaw(s)); const r = new Dict(e); r.set("Font", a); return Dict.merge({ xref: e, dictArray: [r, t], mergeSubDicts: !0 }) } } return t || 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 i = getInheritableProperty({ dict: t, key: "Q" }); (!Number.isInteger(i) || i < 0 || i > 2) && (i = null); this.data.textAlignment = i; let a = getInheritableProperty({ dict: t, key: "MaxLen" }); (!Number.isInteger(a) || a < 0) && (a = 0); this.data.maxLen = a; this.data.multiLine = this.hasFieldFlag(aA); this.data.comb = this.hasFieldFlag(hA) && !this.hasFieldFlag(aA) && !this.hasFieldFlag(sA) && !this.hasFieldFlag(gA) && 0 !== this.data.maxLen; this.data.doNotScroll = this.hasFieldFlag(cA) } get hasTextContent() { return !!this.appearance && !this._needAppearances } _getCombAppearance(e, t, i, a, s, r, n, o, g, c, h) { const l = s / this.data.maxLen, C = this.getBorderAndBackgroundAppearances(h), Q = [], E = t.getCharPositions(i); for (const [e, t] of E) Q.push(`(${escapeString(i.substring(e, t))}) Tj`); const u = Q.join(` ${numberToString(l)} 0 Td `); return `/Tx BMC q ${C}BT ` + e + ` 1 0 0 1 ${numberToString(n)} ${numberToString(o + g)} Tm ${u} ET Q EMC` } _getMultilineAppearance(e, t, i, a, s, r, n, o, g, c, h, l) { const C = [], Q = s - 2 * o, E = { shift: 0 }; for (let e = 0, r = t.length; e < r; e++) { const r = t[e], l = this._splitLine(r, i, a, Q); for (let t = 0, r = l.length; t < r; t++) { const r = l[t], Q = 0 === e && 0 === t ? -g - (h - c) : -h; C.push(this._renderText(r, i, a, s, n, E, o, Q)) } } const u = this.getBorderAndBackgroundAppearances(l), d = C.join("\n"); return `/Tx BMC q ${u}BT ` + e + ` 1 0 0 1 0 ${numberToString(r)} Tm ${d} ET Q EMC` } _splitLine(e, t, i, a, s = {}) { e = s.line || e; const r = s.glyphs || t.charsToGlyphs(e); if (r.length <= 1) return [e]; const n = s.positions || t.getCharPositions(e), o = i / 1e3, g = []; let c = -1, h = -1, l = -1, C = 0, Q = 0; for (let t = 0, i = r.length; t < i; t++) { const [i, s] = n[t], E = r[t], u = E.width * o; if (" " === E.unicode) if (Q + u > a) { g.push(e.substring(C, i)); C = i; Q = u; c = -1; l = -1 } else { Q += u; c = i; h = s; l = t } else if (Q + u > a) if (-1 !== c) { g.push(e.substring(C, h)); C = h; t = l + 1; c = -1; Q = 0 } else { g.push(e.substring(C, i)); C = i; Q = u } else Q += u } C < e.length && g.push(e.substring(C, e.length)); return g } getFieldObject() { return { id: this.data.id, value: this.data.fieldValue, defaultValue: this.data.defaultFieldValue || "", multiline: this.data.multiLine, password: this.hasFieldFlag(sA), charLimit: this.data.maxLen, comb: this.data.comb, editable: !this.data.readOnly, hidden: this.data.hidden, name: this.data.fieldName, rect: this.data.rect, actions: this.data.actions, page: this.data.pageIndex, strokeColor: this.data.borderColor, fillColor: this.data.backgroundColor, rotation: this.rotation, type: "text" } } } class ButtonWidgetAnnotation extends WidgetAnnotation { constructor(e) { super(e); this.checkedAppearance = null; this.uncheckedAppearance = null; this.data.checkBox = !this.hasFieldFlag(rA) && !this.hasFieldFlag(nA); this.data.radioButton = this.hasFieldFlag(rA) && !this.hasFieldFlag(nA); this.data.pushButton = this.hasFieldFlag(nA); this.data.isTooltipOnly = !1; if (this.data.checkBox) this._processCheckBox(e); else if (this.data.radioButton) this._processRadioButton(e); else if (this.data.pushButton) { this.data.hasOwnCanvas = !0; this.data.noHTML = !1; this._processPushButton(e) } else warn("Invalid field flags for button widget annotation") } async getOperatorList(e, t, a, s, r) { if (this.data.pushButton) return super.getOperatorList(e, t, a, !1, r); let n = null, o = null; if (r) { const e = r.get(this.data.id); n = e ? e.value : null; o = e ? e.rotation : null } if (null === n && this.appearance) return super.getOperatorList(e, t, a, s, r); null == n && (n = this.data.checkBox ? this.data.fieldValue === this.data.exportValue : this.data.fieldValue === this.data.buttonValue); const g = n ? this.checkedAppearance : this.uncheckedAppearance; if (g) { const n = this.appearance, c = lookupMatrix(g.dict.getArray("Matrix"), i); o && g.dict.set("Matrix", this.getRotationMatrix(r)); this.appearance = g; const h = super.getOperatorList(e, t, a, s, r); this.appearance = n; g.dict.set("Matrix", c); return h } return { opList: new OperatorList, separateForm: !1, separateCanvas: !1 } } async save(e, t, i) { return this.data.checkBox ? this._saveCheckbox(e, t, i) : this.data.radioButton ? this._saveRadioButton(e, t, i) : null } async _saveCheckbox(e, t, i) { if (!i) return null; const a = i.get(this.data.id); let s = a?.rotation, r = a?.value; if (void 0 === s) { if (void 0 === r) return null; if (this.data.fieldValue === this.data.exportValue === r) return null } const n = e.xref.fetchIfRef(this.ref); if (!(n instanceof Dict)) return null; void 0 === s && (s = this.rotation); void 0 === r && (r = this.data.fieldValue === this.data.exportValue); const o = { path: this.data.fieldName, value: r ? this.data.exportValue : "" }, g = Name.get(r ? this.data.exportValue : "Off"); n.set("V", g); n.set("AS", g); n.set("M", `D:${getModificationDate()}`); const c = this._getMKDict(s); c && n.set("MK", c); const h = []; await writeObject(this.ref, n, h, e.xref); return [{ ref: this.ref, data: h.join(""), xfa: o }] } async _saveRadioButton(e, t, i) { if (!i) return null; const a = i.get(this.data.id); let s = a?.rotation, r = a?.value; if (void 0 === s) { if (void 0 === r) return null; if (this.data.fieldValue === this.data.buttonValue === r) return null } const n = e.xref.fetchIfRef(this.ref); if (!(n instanceof Dict)) return null; void 0 === r && (r = this.data.fieldValue === this.data.buttonValue); void 0 === s && (s = this.rotation); const o = { path: this.data.fieldName, value: r ? this.data.buttonValue : "" }, g = Name.get(r ? this.data.buttonValue : "Off"), c = []; let h = null; if (r) if (this.parent instanceof Ref) { const t = e.xref.fetch(this.parent); t.set("V", g); await writeObject(this.parent, t, c, e.xref); h = c.join(""); c.length = 0 } else this.parent instanceof Dict && this.parent.set("V", g); n.set("AS", g); n.set("M", `D:${getModificationDate()}`); const l = this._getMKDict(s); l && n.set("MK", l); await writeObject(this.ref, n, c, e.xref); const C = [{ ref: this.ref, data: c.join(""), xfa: o }]; h && C.push({ ref: this.parent, data: h, xfa: null }); return C } _getDefaultCheckedAppearance(e, t) { const i = this.data.rect[2] - this.data.rect[0], a = this.data.rect[3] - this.data.rect[1], s = [0, 0, i, a], r = .8 * Math.min(i, a); let n, o; if ("check" === t) { n = { width: .755 * r, height: .705 * r }; o = "3" } else if ("disc" === t) { n = { width: .791 * r, height: .705 * r }; o = "l" } else unreachable(`_getDefaultCheckedAppearance - unsupported type: ${t}`); const g = `q BT /PdfJsZaDb ${r} Tf 0 g ${numberToString((i - n.width) / 2)} ${numberToString((a - n.height) / 2)} Td (${o}) Tj ET Q`, c = new Dict(e.xref); c.set("FormType", 1); c.set("Subtype", Name.get("Form")); c.set("Type", Name.get("XObject")); c.set("BBox", s); c.set("Matrix", [1, 0, 0, 1, 0, 0]); c.set("Length", g.length); const h = new Dict(e.xref), l = new Dict(e.xref); l.set("PdfJsZaDb", this.fallbackFontDict); h.set("Font", l); c.set("Resources", h); this.checkedAppearance = new StringStream(g); this.checkedAppearance.dict = c; this._streams.push(this.checkedAppearance) } _processCheckBox(e) { const t = e.dict.get("AP"); if (!(t instanceof Dict)) return; const i = t.get("N"); if (!(i instanceof Dict)) return; const a = this._decodeFormValue(e.dict.get("AS")); "string" == typeof a && (this.data.fieldValue = a); const s = null !== this.data.fieldValue && "Off" !== this.data.fieldValue ? this.data.fieldValue : "Yes", r = i.getKeys(); if (0 === r.length) r.push("Off", s); else if (1 === r.length) "Off" === r[0] ? r.push(s) : r.unshift("Off"); else if (r.includes(s)) { r.length = 0; r.push("Off", s) } else { const e = r.find((e => "Off" !== e)); r.length = 0; r.push("Off", e) } r.includes(this.data.fieldValue) || (this.data.fieldValue = "Off"); this.data.exportValue = r[1]; const n = i.get(this.data.exportValue); this.checkedAppearance = n instanceof BaseStream ? n : null; const o = i.get("Off"); this.uncheckedAppearance = o instanceof BaseStream ? o : 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.buttonValue = null; const t = e.dict.get("Parent"); if (t instanceof Dict) { this.parent = e.dict.getRaw("Parent"); const i = t.get("V"); i instanceof Name && (this.data.fieldValue = this._decodeFormValue(i)) } const i = e.dict.get("AP"); if (!(i instanceof Dict)) return; const a = i.get("N"); if (!(a instanceof Dict)) return; for (const e of a.getKeys()) if ("Off" !== e) { this.data.buttonValue = this._decodeFormValue(e); break } const s = a.get(this.data.buttonValue); this.checkedAppearance = s instanceof BaseStream ? s : null; const r = a.get("Off"); this.uncheckedAppearance = r instanceof BaseStream ? r : 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: i } = e; if (t.has("A") || t.has("AA") || this.data.alternativeText) { this.data.isTooltipOnly = !t.has("A") && !t.has("AA"); Catalog.parseDestDictionary({ destDict: t, resultObj: this.data, docBaseUrl: i.baseUrl, docAttachments: i.attachments }) } else 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 Dict; e.set("BaseFont", Name.get("ZapfDingbats")); e.set("Type", Name.get("FallbackType")); e.set("Subtype", Name.get("FallbackType")); e.set("Encoding", Name.get("ZapfDingbatsEncoding")); return shadow(this, "fallbackFontDict", e) } } class ChoiceWidgetAnnotation extends WidgetAnnotation { constructor(e) { super(e); const { dict: t, xref: i } = e; this.indices = t.getArray("I"); this.hasIndices = Array.isArray(this.indices) && this.indices.length > 0; this.data.options = []; const a = getInheritableProperty({ dict: t, key: "Opt" }); if (Array.isArray(a)) for (let e = 0, t = a.length; e < t; e++) { const t = i.fetchIfRef(a[e]), s = Array.isArray(t); this.data.options[e] = { exportValue: this._decodeFormValue(s ? i.fetchIfRef(t[0]) : t), displayValue: this._decodeFormValue(s ? i.fetchIfRef(t[1]) : t) } } if (this.hasIndices) { this.data.fieldValue = []; const e = this.data.options.length; for (const t of this.indices) Number.isInteger(t) && t >= 0 && t < e && this.data.fieldValue.push(this.data.options[t].exportValue) } else "string" == typeof this.data.fieldValue ? this.data.fieldValue = [this.data.fieldValue] : this.data.fieldValue || (this.data.fieldValue = []); this.data.combo = this.hasFieldFlag(oA); this.data.multiSelect = this.hasFieldFlag(IA); this._hasText = !0 } getFieldObject() { const e = this.data.combo ? "combobox" : "listbox", t = this.data.fieldValue.length > 0 ? 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 i = e?.get(this.data.id)?.value; Array.isArray(i) || (i = [i]); const a = [], { options: s } = this.data; for (let e = 0, t = 0, r = s.length; e < r; e++)if (s[e].exportValue === i[t]) { a.push(e); t += 1 } t.set("I", a) } async _getAppearance(e, t, i, a) { if (this.data.combo) return super._getAppearance(e, t, i, a); let r, n; const o = a?.get(this.data.id); if (o) { n = o.rotation; r = o.value } if (void 0 === n && void 0 === r && !this._needAppearances) return null; void 0 === r ? r = this.data.fieldValue : Array.isArray(r) || (r = [r]); let g = this.data.rect[3] - this.data.rect[1], c = this.data.rect[2] - this.data.rect[0]; 90 !== n && 270 !== n || ([c, g] = [g, c]); const h = this.data.options.length, l = []; for (let e = 0; e < h; e++) { const { exportValue: t } = this.data.options[e]; r.includes(t) && l.push(e) } this._defaultAppearance || (this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance = "/Helvetica 0 Tf 0 g")); const C = await WidgetAnnotation._getFontData(e, t, this.data.defaultAppearanceData, this._fieldResources.mergedResources); let Q, { fontSize: E } = this.data.defaultAppearanceData; if (E) Q = this._defaultAppearance; else { const e = (g - 1) / h; let t, i = -1; for (const { displayValue: e } of this.data.options) { const a = this._getTextWidth(e, C); if (a > i) { i = a; t = e } } [Q, E] = this._computeFontSize(e, c - 4, t, C, -1) } const u = E * s, d = (u - E) / 2, f = Math.floor(g / u); let p = 0; if (l.length > 0) { const e = Math.min(...l), t = Math.max(...l); p = Math.max(0, t - f + 1); p > e && (p = e) } const m = Math.min(p + f + 1, h), y = ["/Tx BMC q", `1 1 ${c} ${g} re W n`]; if (l.length) { y.push("0.600006 0.756866 0.854904 rg"); for (const e of l) p <= e && e < m && y.push(`1 ${g - (e - p + 1) * u} ${c} ${u} re f`) } y.push("BT", Q, `1 0 0 1 0 ${g} Tm`); const w = { shift: 0 }; for (let e = p; e < m; e++) { const { displayValue: t } = this.data.options[e], i = e === p ? d : 0; y.push(this._renderText(t, C, E, c, 0, w, 2, -u + i)) } y.push("ET Q EMC"); return y.join("\n") } } class SignatureWidgetAnnotation extends WidgetAnnotation { constructor(e) { super(e); this.data.fieldValue = null; this.data.hasOwnCanvas = this.data.noRotate; this.data.noHTML = !this.data.hasOwnCanvas } getFieldObject() { return { id: this.data.id, value: null, page: this.data.pageIndex, type: "signature" } } } class TextAnnotation extends MarkupAnnotation { constructor(e) { super(e); this.data.noRotate = !0; this.data.hasOwnCanvas = this.data.noRotate; this.data.noHTML = !1; const { dict: t } = e; this.data.annotationType = S; if (this.data.hasAppearance) this.data.name = "NoIcon"; else { this.data.rect[1] = this.data.rect[3] - 22; this.data.rect[2] = this.data.rect[0] + 22; this.data.name = t.has("Name") ? t.get("Name").name : "Note" } if (t.has("State")) { this.data.state = t.get("State") || null; this.data.stateModel = t.get("StateModel") || null } else { this.data.state = null; this.data.stateModel = null } } } class LinkAnnotation extends Annotation { constructor(e) { super(e); const { dict: t, annotationGlobals: i } = e; this.data.annotationType = k; this.data.noHTML = !1; const a = getQuadPoints(t, this.rectangle); a && (this.data.quadPoints = a); this.data.borderColor ||= this.data.color; Catalog.parseDestDictionary({ destDict: t, resultObj: this.data, docBaseUrl: i.baseUrl, docAttachments: i.attachments }) } } class PopupAnnotation extends Annotation { constructor(e) { super(e); const { dict: t } = e; this.data.annotationType = q; this.data.noHTML = !1; this.data.rect[0] !== this.data.rect[2] && this.data.rect[1] !== this.data.rect[3] || (this.data.rect = null); let i = t.get("Parent"); if (!i) { warn("Popup annotation has a missing or invalid parent annotation."); return } this.data.parentRect = lookupNormalRect(i.getArray("Rect"), null); isName(i.get("RT"), X) && (i = i.get("IRT")); if (i.has("M")) { this.setModificationDate(i.get("M")); this.data.modificationDate = this.modificationDate } else this.data.modificationDate = null; if (i.has("C")) { this.setColor(i.getArray("C")); this.data.color = this.color } else this.data.color = null; if (!this.viewable) { const e = i.get("F"); this._isViewable(e) && this.setFlags(e) } this.setTitle(i.get("T")); this.data.titleObj = this._title; this.setContents(i.get("Contents")); this.data.contentsObj = this._contents; i.has("RC") && (this.data.richText = XFAFactory.getRichTextAsHtml(i.get("RC"))); this.data.open = !!t.get("Open") } } class FreeTextAnnotation extends MarkupAnnotation { constructor(e) { super(e); this.data.hasOwnCanvas = !this.data.noHTML; this.data.noHTML = !1; const { evaluatorOptions: t, xref: i } = e; this.data.annotationType = R; this.setDefaultAppearance(e); this._hasAppearance = !!this.appearance; if (this._hasAppearance) { const { fontColor: e, fontSize: a } = function parseAppearanceStream(e, t, i) { return new AppearanceStreamEvaluator(e, t, i).parse() }(this.appearance, t, i); this.data.defaultAppearanceData.fontColor = e; this.data.defaultAppearanceData.fontSize = a || 10 } else { this.data.defaultAppearanceData.fontSize ||= 10; const { fontColor: t, fontSize: a } = this.data.defaultAppearanceData; if (this._contents.str) { this.data.textContent = this._contents.str.split(/\r\n?|\n/).map((e => e.trimEnd())); const { coords: e, bbox: t, matrix: i } = FakeUnicodeFont.getFirstPositionInfo(this.rectangle, this.rotation, a); this.data.textPosition = this._transformPoint(e, t, i) } if (this._isOffscreenCanvasSupported) { const s = e.dict.get("CA"), r = new FakeUnicodeFont(i, "sans-serif"); this.appearance = r.createAppearance(this._contents.str, this.rectangle, this.rotation, a, t, s); this._streams.push(this.appearance) } else warn("FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.") } } get hasTextContent() { return this._hasAppearance } static createNewDict(e, t, { apRef: i, ap: a }) { const { color: s, fontSize: r, rect: n, rotation: o, user: g, value: c } = e, h = new Dict(t); h.set("Type", Name.get("Annot")); h.set("Subtype", Name.get("FreeText")); h.set("CreationDate", `D:${getModificationDate()}`); h.set("Rect", n); const l = `/Helv ${r} Tf ${getPdfColor(s, !0)}`; h.set("DA", l); h.set("Contents", isAscii(c) ? c : stringToUTF16String(c, !0)); h.set("F", 4); h.set("Border", [0, 0, 0]); h.set("Rotate", o); g && h.set("T", isAscii(g) ? g : stringToUTF16String(g, !0)); if (i || a) { const e = new Dict(t); h.set("AP", e); i ? e.set("N", i) : e.set("N", a) } return h } static async createNewAppearanceStream(e, t, i) { const { baseFontRef: a, evaluator: r, task: n } = i, { color: o, fontSize: g, rect: c, rotation: h, value: l } = e, C = new Dict(t), Q = new Dict(t); if (a) Q.set("Helv", a); else { const e = new Dict(t); e.set("BaseFont", Name.get("Helvetica")); e.set("Type", Name.get("Font")); e.set("Subtype", Name.get("Type1")); e.set("Encoding", Name.get("WinAnsiEncoding")); Q.set("Helv", e) } C.set("Font", Q); const E = await WidgetAnnotation._getFontData(r, n, { fontName: "Helv", fontSize: g }, C), [u, d, f, p] = c; let m = f - u, y = p - d; h % 180 != 0 && ([m, y] = [y, m]); const w = l.split("\n"), b = g / 1e3; let D = -1 / 0; const F = []; for (let e of w) { const t = E.encodeString(e); if (t.length > 1) return null; e = t.join(""); F.push(e); let i = 0; const a = E.charsToGlyphs(e); for (const e of a) i += e.width * b; D = Math.max(D, i) } let S = 1; D > m && (S = m / D); let k = 1; const R = s * g, N = 1 * g, G = R * w.length; G > y && (k = y / G); const x = g * Math.min(S, k); let M, U, L; switch (h) { case 0: L = [1, 0, 0, 1]; U = [c[0], c[1], m, y]; M = [c[0], c[3] - N]; break; case 90: L = [0, 1, -1, 0]; U = [c[1], -c[2], m, y]; M = [c[1], -c[0] - N]; break; case 180: L = [-1, 0, 0, -1]; U = [-c[2], -c[3], m, y]; M = [-c[2], -c[1] - N]; break; case 270: L = [0, -1, 1, 0]; U = [-c[3], c[0], m, y]; M = [-c[3], c[2] - N] }const J = ["q", `${L.join(" ")} 0 0 cm`, `${U.join(" ")} re W n`, "BT", `${getPdfColor(o, !0)}`, `0 Tc /Helv ${numberToString(x)} Tf`]; J.push(`${M.join(" ")} Td (${escapeString(F[0])}) Tj`); const H = numberToString(R); for (let e = 1, t = F.length; e < t; e++) { const t = F[e]; J.push(`0 -${H} Td (${escapeString(t)}) Tj`) } J.push("ET", "Q"); const Y = J.join("\n"), v = new Dict(t); v.set("FormType", 1); v.set("Subtype", Name.get("Form")); v.set("Type", Name.get("XObject")); v.set("BBox", c); v.set("Resources", C); v.set("Matrix", [1, 0, 0, 1, -c[0], -c[1]]); const K = new StringStream(Y); K.dict = v; return K } } class LineAnnotation extends MarkupAnnotation { constructor(e) { super(e); const { dict: t, xref: i } = e; this.data.annotationType = N; this.data.hasOwnCanvas = this.data.noRotate; this.data.noHTML = !1; const a = lookupRect(t.getArray("L"), [0, 0, 0, 0]); this.data.lineCoordinates = Util.normalizeRect(a); this.setLineEndings(t.getArray("LE")); this.data.lineEndings = this.lineEndings; if (!this.appearance) { const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], s = t.get("CA"), r = getRgbColor(t.getArray("IC"), null), n = r ? getPdfColorArray(r) : null, o = n ? s : null, g = this.borderStyle.width || 1, c = 2 * g, h = [this.data.lineCoordinates[0] - c, this.data.lineCoordinates[1] - c, this.data.lineCoordinates[2] + c, this.data.lineCoordinates[3] + c]; Util.intersect(this.rectangle, h) || (this.rectangle = h); this._setDefaultAppearance({ xref: i, extra: `${g} w`, strokeColor: e, fillColor: n, strokeAlpha: s, fillAlpha: o, pointsCallback: (e, t) => { e.push(`${a[0]} ${a[1]} m`, `${a[2]} ${a[3]} l`, "S"); return [t[0].x - g, t[1].x + g, t[3].y - g, t[1].y + g] } }) } } } class SquareAnnotation extends MarkupAnnotation { constructor(e) { super(e); const { dict: t, xref: i } = e; this.data.annotationType = G; this.data.hasOwnCanvas = this.data.noRotate; this.data.noHTML = !1; if (!this.appearance) { const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], a = t.get("CA"), s = getRgbColor(t.getArray("IC"), null), r = s ? getPdfColorArray(s) : null, n = r ? a : null; if (0 === this.borderStyle.width && !r) return; this._setDefaultAppearance({ xref: i, extra: `${this.borderStyle.width} w`, strokeColor: e, fillColor: r, strokeAlpha: a, fillAlpha: n, pointsCallback: (e, t) => { const i = t[2].x + this.borderStyle.width / 2, a = t[2].y + this.borderStyle.width / 2, s = t[3].x - t[2].x - this.borderStyle.width, n = t[1].y - t[3].y - this.borderStyle.width; e.push(`${i} ${a} ${s} ${n} re`); r ? 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: i } = e; this.data.annotationType = x; if (!this.appearance) { const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], a = t.get("CA"), s = getRgbColor(t.getArray("IC"), null), r = s ? getPdfColorArray(s) : null, n = r ? a : null; if (0 === this.borderStyle.width && !r) return; const o = 4 / 3 * Math.tan(Math.PI / 8); this._setDefaultAppearance({ xref: i, extra: `${this.borderStyle.width} w`, strokeColor: e, fillColor: r, strokeAlpha: a, fillAlpha: n, pointsCallback: (e, t) => { const i = t[0].x + this.borderStyle.width / 2, a = t[0].y - this.borderStyle.width / 2, s = t[3].x - this.borderStyle.width / 2, n = t[3].y + this.borderStyle.width / 2, g = i + (s - i) / 2, c = a + (n - a) / 2, h = (s - i) / 2 * o, l = (n - a) / 2 * o; e.push(`${g} ${n} m`, `${g + h} ${n} ${s} ${c + l} ${s} ${c} c`, `${s} ${c - l} ${g + h} ${a} ${g} ${a} c`, `${g - h} ${a} ${i} ${c - l} ${i} ${c} c`, `${i} ${c + l} ${g - h} ${n} ${g} ${n} c`, "h"); r ? 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: i } = e; this.data.annotationType = U; this.data.hasOwnCanvas = this.data.noRotate; this.data.noHTML = !1; this.data.vertices = []; if (!(this instanceof PolygonAnnotation)) { this.setLineEndings(t.getArray("LE")); this.data.lineEndings = this.lineEndings } const a = t.getArray("Vertices"); if (isNumberArray(a, null)) { for (let e = 0, t = a.length; e < t; e += 2)this.data.vertices.push({ x: a[e], y: a[e + 1] }); if (!this.appearance) { const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], a = t.get("CA"), s = this.borderStyle.width || 1, r = 2 * s, n = [1 / 0, 1 / 0, -1 / 0, -1 / 0]; for (const e of this.data.vertices) { n[0] = Math.min(n[0], e.x - r); n[1] = Math.min(n[1], e.y - r); n[2] = Math.max(n[2], e.x + r); n[3] = Math.max(n[3], e.y + r) } Util.intersect(this.rectangle, n) || (this.rectangle = n); this._setDefaultAppearance({ xref: i, extra: `${s} w`, strokeColor: e, strokeAlpha: a, pointsCallback: (e, t) => { const i = this.data.vertices; for (let t = 0, a = i.length; t < a; t++)e.push(`${i[t].x} ${i[t].y} ${0 === t ? "m" : "l"}`); e.push("S"); return [t[0].x, t[1].x, t[3].y, t[1].y] } }) } } } } class PolygonAnnotation extends PolylineAnnotation { constructor(e) { super(e); this.data.annotationType = M } } class CaretAnnotation extends MarkupAnnotation { constructor(e) { super(e); this.data.annotationType = K } } class InkAnnotation extends MarkupAnnotation { constructor(e) { super(e); this.data.hasOwnCanvas = this.data.noRotate; this.data.noHTML = !1; const { dict: t, xref: i } = e; this.data.annotationType = T; this.data.inkLists = []; const a = t.getArray("InkList"); if (Array.isArray(a)) { for (let e = 0, t = a.length; e < t; ++e) { this.data.inkLists.push([]); if (Array.isArray(a[e])) for (let t = 0, s = a[e].length; t < s; t += 2) { const s = i.fetchIfRef(a[e][t]), r = i.fetchIfRef(a[e][t + 1]); "number" == typeof s && "number" == typeof r && this.data.inkLists[e].push({ x: s, y: r }) } } if (!this.appearance) { const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], a = t.get("CA"), s = this.borderStyle.width || 1, r = 2 * s, n = [1 / 0, 1 / 0, -1 / 0, -1 / 0]; for (const e of this.data.inkLists) for (const t of e) { n[0] = Math.min(n[0], t.x - r); n[1] = Math.min(n[1], t.y - r); n[2] = Math.max(n[2], t.x + r); n[3] = Math.max(n[3], t.y + r) } Util.intersect(this.rectangle, n) || (this.rectangle = n); this._setDefaultAppearance({ xref: i, extra: `${s} w`, strokeColor: e, strokeAlpha: a, pointsCallback: (e, t) => { for (const t of this.data.inkLists) { for (let i = 0, a = t.length; i < a; i++)e.push(`${t[i].x} ${t[i].y} ${0 === i ? "m" : "l"}`); e.push("S") } return [t[0].x, t[1].x, t[3].y, t[1].y] } }) } } } static createNewDict(e, t, { apRef: i, ap: a }) { const { color: s, opacity: r, paths: n, outlines: o, rect: g, rotation: c, thickness: h } = e, l = new Dict(t); l.set("Type", Name.get("Annot")); l.set("Subtype", Name.get("Ink")); l.set("CreationDate", `D:${getModificationDate()}`); l.set("Rect", g); l.set("InkList", o?.points || n.map((e => e.points))); l.set("F", 4); l.set("Rotate", c); o && l.set("IT", Name.get("InkHighlight")); const C = new Dict(t); l.set("BS", C); C.set("W", h); l.set("C", Array.from(s, (e => e / 255))); l.set("CA", r); const Q = new Dict(t); l.set("AP", Q); i ? Q.set("N", i) : Q.set("N", a); return l } static async createNewAppearanceStream(e, t, i) { if (e.outlines) return this.createNewAppearanceStreamForHighlight(e, t, i); const { color: a, rect: s, paths: r, thickness: n, opacity: o } = e, g = [`${n} w 1 J 1 j`, `${getPdfColor(a, !1)}`]; 1 !== o && g.push("/R0 gs"); const c = []; for (const { bezier: e } of r) { c.length = 0; c.push(`${numberToString(e[0])} ${numberToString(e[1])} m`); if (2 === e.length) c.push(`${numberToString(e[0])} ${numberToString(e[1])} l S`); else { for (let t = 2, i = e.length; t < i; t += 6) { const i = e.slice(t, t + 6).map(numberToString).join(" "); c.push(`${i} c`) } c.push("S") } g.push(c.join("\n")) } const h = g.join("\n"), l = new Dict(t); l.set("FormType", 1); l.set("Subtype", Name.get("Form")); l.set("Type", Name.get("XObject")); l.set("BBox", s); l.set("Length", h.length); if (1 !== o) { const e = new Dict(t), i = new Dict(t), a = new Dict(t); a.set("CA", o); a.set("Type", Name.get("ExtGState")); i.set("R0", a); e.set("ExtGState", i); l.set("Resources", e) } const C = new StringStream(h); C.dict = l; return C } static async createNewAppearanceStreamForHighlight(e, t, i) { const { color: a, rect: s, outlines: { outline: r }, opacity: n } = e, o = [`${getPdfColor(a, !0)}`, "/R0 gs"]; o.push(`${numberToString(r[4])} ${numberToString(r[5])} m`); for (let e = 6, t = r.length; e < t; e += 6)if (isNaN(r[e]) || null === r[e]) o.push(`${numberToString(r[e + 4])} ${numberToString(r[e + 5])} l`); else { const t = r.slice(e, e + 6).map(numberToString).join(" "); o.push(`${t} c`) } o.push("h f"); const g = o.join("\n"), c = new Dict(t); c.set("FormType", 1); c.set("Subtype", Name.get("Form")); c.set("Type", Name.get("XObject")); c.set("BBox", s); c.set("Length", g.length); const h = new Dict(t), l = new Dict(t); h.set("ExtGState", l); c.set("Resources", h); const C = new Dict(t); l.set("R0", C); C.set("BM", Name.get("Multiply")); if (1 !== n) { C.set("ca", n); C.set("Type", Name.get("ExtGState")) } const Q = new StringStream(g); Q.dict = c; return Q } } class HighlightAnnotation extends MarkupAnnotation { constructor(e) { super(e); const { dict: t, xref: i } = e; this.data.annotationType = L; if (this.data.quadPoints = getQuadPoints(t, null)) { const e = this.appearance?.dict.get("Resources"); if (!this.appearance || !e?.has("ExtGState")) { this.appearance && warn("HighlightAnnotation - ignoring built-in appearance stream."); const e = this.color ? getPdfColorArray(this.color) : [1, 1, 0], a = t.get("CA"); this._setDefaultAppearance({ xref: i, fillColor: e, blendMode: "Multiply", fillAlpha: a, pointsCallback: (e, 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 } static createNewDict(e, t, { apRef: i, ap: a }) { const { color: s, opacity: r, rect: n, rotation: o, user: g, quadPoints: c } = e, h = new Dict(t); h.set("Type", Name.get("Annot")); h.set("Subtype", Name.get("Highlight")); h.set("CreationDate", `D:${getModificationDate()}`); h.set("Rect", n); h.set("F", 4); h.set("Border", [0, 0, 0]); h.set("Rotate", o); h.set("QuadPoints", c); h.set("C", Array.from(s, (e => e / 255))); h.set("CA", r); g && h.set("T", isAscii(g) ? g : stringToUTF16String(g, !0)); if (i || a) { const e = new Dict(t); h.set("AP", e); e.set("N", i || a) } return h } static async createNewAppearanceStream(e, t, i) { const { color: a, rect: s, outlines: r, opacity: n } = e, o = [`${getPdfColor(a, !0)}`, "/R0 gs"], g = []; for (const e of r) { g.length = 0; g.push(`${numberToString(e[0])} ${numberToString(e[1])} m`); for (let t = 2, i = e.length; t < i; t += 2)g.push(`${numberToString(e[t])} ${numberToString(e[t + 1])} l`); g.push("h"); o.push(g.join("\n")) } o.push("f*"); const c = o.join("\n"), h = new Dict(t); h.set("FormType", 1); h.set("Subtype", Name.get("Form")); h.set("Type", Name.get("XObject")); h.set("BBox", s); h.set("Length", c.length); const l = new Dict(t), C = new Dict(t); l.set("ExtGState", C); h.set("Resources", l); const Q = new Dict(t); C.set("R0", Q); Q.set("BM", Name.get("Multiply")); if (1 !== n) { Q.set("ca", n); Q.set("Type", Name.get("ExtGState")) } const E = new StringStream(c); E.dict = h; return E } } class UnderlineAnnotation extends MarkupAnnotation { constructor(e) { super(e); const { dict: t, xref: i } = e; this.data.annotationType = J; if (this.data.quadPoints = getQuadPoints(t, null)) { if (!this.appearance) { const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], a = t.get("CA"); this._setDefaultAppearance({ xref: i, extra: "[] 0 d 0.571 w", strokeColor: e, strokeAlpha: a, 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: i } = e; this.data.annotationType = H; if (this.data.quadPoints = getQuadPoints(t, null)) { if (!this.appearance) { const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], a = t.get("CA"); this._setDefaultAppearance({ xref: i, extra: "[] 0 d 1 w", strokeColor: e, strokeAlpha: a, pointsCallback: (e, t) => { const i = (t[0].y - t[2].y) / 6; let a = i, s = t[2].x; const r = t[2].y, n = t[3].x; e.push(`${s} ${r + a} m`); do { s += 2; a = 0 === a ? i : 0; e.push(`${s} ${r + a} l`) } while (s < n); e.push("S"); return [t[2].x, n, r - 2 * i, r + 2 * i] } }) } } else this.data.popupRef = null } } class StrikeOutAnnotation extends MarkupAnnotation { constructor(e) { super(e); const { dict: t, xref: i } = e; this.data.annotationType = Y; if (this.data.quadPoints = getQuadPoints(t, null)) { if (!this.appearance) { const e = this.color ? getPdfColorArray(this.color) : [0, 0, 0], a = t.get("CA"); this._setDefaultAppearance({ xref: i, extra: "[] 0 d 1 w", strokeColor: e, strokeAlpha: a, pointsCallback: (e, t) => { 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 = v; this.data.hasOwnCanvas = this.data.noRotate; this.data.noHTML = !1 } static async createImage(e, t) { const { width: i, height: a } = e, s = new OffscreenCanvas(i, a), r = s.getContext("2d", { alpha: !0 }); r.drawImage(e, 0, 0); const n = r.getImageData(0, 0, i, a).data, o = new Uint32Array(n.buffer), g = o.some(FeatureTest.isLittleEndian ? e => e >>> 24 != 255 : e => 255 != (255 & e)); if (g) { r.fillStyle = "white"; r.fillRect(0, 0, i, a); r.drawImage(e, 0, 0) } const c = s.convertToBlob({ type: "image/jpeg", quality: 1 }).then((e => e.arrayBuffer())), h = Name.get("XObject"), l = Name.get("Image"), C = new Dict(t); C.set("Type", h); C.set("Subtype", l); C.set("BitsPerComponent", 8); C.set("ColorSpace", Name.get("DeviceRGB")); C.set("Filter", Name.get("DCTDecode")); C.set("BBox", [0, 0, i, a]); C.set("Width", i); C.set("Height", a); let Q = null; if (g) { const e = new Uint8Array(o.length); if (FeatureTest.isLittleEndian) for (let t = 0, i = o.length; t < i; t++)e[t] = o[t] >>> 24; else for (let t = 0, i = o.length; t < i; t++)e[t] = 255 & o[t]; const s = new Dict(t); s.set("Type", h); s.set("Subtype", l); s.set("BitsPerComponent", 8); s.set("ColorSpace", Name.get("DeviceGray")); s.set("Width", i); s.set("Height", a); Q = new Stream(e, 0, 0, s) } return { imageStream: new Stream(await c, 0, 0, C), smaskStream: Q, width: i, height: a } } static createNewDict(e, t, { apRef: i, ap: a }) { const { rect: s, rotation: r, user: n } = e, o = new Dict(t); o.set("Type", Name.get("Annot")); o.set("Subtype", Name.get("Stamp")); o.set("CreationDate", `D:${getModificationDate()}`); o.set("Rect", s); o.set("F", 4); o.set("Border", [0, 0, 0]); o.set("Rotate", r); n && o.set("T", isAscii(n) ? n : stringToUTF16String(n, !0)); if (i || a) { const e = new Dict(t); o.set("AP", e); i ? e.set("N", i) : e.set("N", a) } return o } static async createNewAppearanceStream(e, t, i) { const { rotation: a } = e, { imageRef: s, width: r, height: n } = i.image, o = new Dict(t), g = new Dict(t); o.set("XObject", g); g.set("Im0", s); const c = `q ${r} 0 0 ${n} 0 0 cm /Im0 Do Q`, h = new Dict(t); h.set("FormType", 1); h.set("Subtype", Name.get("Form")); h.set("Type", Name.get("XObject")); h.set("BBox", [0, 0, r, n]); h.set("Resources", o); if (a) { const e = getRotationMatrix(a, r, n); h.set("Matrix", e) } const l = new StringStream(c); l.dict = h; return l } } class FileAttachmentAnnotation extends MarkupAnnotation { constructor(e) { super(e); const { dict: t, xref: i } = e, a = new FileSpec(t.get("FS"), i); this.data.annotationType = O; this.data.hasOwnCanvas = this.data.noRotate; this.data.noHTML = !1; this.data.file = a.serializable; const s = t.get("Name"); this.data.name = s instanceof Name ? stringToPDFString(s.name) : "PushPin"; const r = t.get("ca"); this.data.fillAlpha = "number" == typeof r && r >= 0 && r <= 1 ? r : null } } function decodeString(e) { try { return stringToUTF8String(e) } catch (t) { warn(`UTF-8 decoding failed: "${t}".`); return e } } class DatasetXMLParser extends 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.") } } } class DatasetReader { constructor(e) { if (e.datasets) this.node = new 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(parseXFAPath(e), 0); if (!t) return ""; const i = t.firstChild; return "value" === i?.nodeName ? t.children.map((e => decodeString(e.textContent))) : decodeString(t.textContent) } } class XRef { #K = null; constructor(e, t) { this.stream = e; this.pdfManager = t; this.entries = []; this._xrefStms = new Set; this._cacheMap = new Map; this._pendingRefs = new RefSet; this._newPersistentRefNum = null; this._newTemporaryRefNum = null; this._persistentRefsCache = null } getNewPersistentRef(e) { null === this._newPersistentRefNum && (this._newPersistentRefNum = this.entries.length || 1); const t = this._newPersistentRefNum++; this._cacheMap.set(t, e); return Ref.get(t, 0) } getNewTemporaryRef() { if (null === this._newTemporaryRefNum) { this._newTemporaryRefNum = this.entries.length || 1; if (this._newPersistentRefNum) { this._persistentRefsCache = new Map; for (let e = this._newTemporaryRefNum; e < this._newPersistentRefNum; e++) { this._persistentRefsCache.set(e, this._cacheMap.get(e)); this._cacheMap.delete(e) } } } return Ref.get(this._newTemporaryRefNum++, 0) } resetNewTemporaryRef() { this._newTemporaryRefNum = null; if (this._persistentRefsCache) for (const [e, t] of this._persistentRefsCache) this._cacheMap.set(e, t); this._persistentRefsCache = null } setStartXRef(e) { this.startXRefQueue = [e] } parse(e = !1) { let t, i, a; if (e) { warn("Indexing all PDF objects"); t = this.indexObjects() } else t = this.readXRef(); t.assignXref(this); this.trailer = t; try { i = t.get("Encrypt") } catch (e) { if (e instanceof MissingDataException) throw e; warn(`XRef.parse - Invalid "Encrypt" reference: "${e}".`) } if (i instanceof Dict) { const e = t.get("ID"), a = e?.length ? e[0] : ""; i.suppressEncryption = !0; this.encrypt = new CipherTransformFactory(i, a, this.pdfManager.password) } try { a = t.get("Root") } catch (e) { if (e instanceof MissingDataException) throw e; warn(`XRef.parse - Invalid "Root" reference: "${e}".`) } if (a instanceof Dict) try { if (a.get("Pages") instanceof Dict) { this.root = a; return } } catch (e) { if (e instanceof MissingDataException) throw e; warn(`XRef.parse - Invalid "Pages" reference: "${e}".`) } if (!e) throw new XRefParseException; throw new InvalidPDFException("Invalid Root reference.") } processXRefTable(e) { "tableState" in this || (this.tableState = { entryNum: 0, streamPos: e.lexer.stream.pos, parserBuf1: e.buf1, parserBuf2: e.buf2 }); if (!isCmd(this.readXRefTable(e), "trailer")) throw new FormatError("Invalid XRef table: could not find trailer dictionary"); let t = e.getObj(); t instanceof Dict || !t.dict || (t = t.dict); if (!(t instanceof Dict)) throw new FormatError("Invalid XRef table: could not parse trailer dictionary"); delete this.tableState; return t } readXRefTable(e) { const t = e.lexer.stream, i = this.tableState; t.pos = i.streamPos; e.buf1 = i.parserBuf1; e.buf2 = i.parserBuf2; let a; for (; ;) { if (!("firstEntryNum" in i) || !("entryCount" in i)) { if (isCmd(a = e.getObj(), "trailer")) break; i.firstEntryNum = a; i.entryCount = e.getObj() } let s = i.firstEntryNum; const r = i.entryCount; if (!Number.isInteger(s) || !Number.isInteger(r)) throw new FormatError("Invalid XRef table: wrong types in subsection header"); for (let a = i.entryNum; a < r; a++) { i.streamPos = t.pos; i.entryNum = a; i.parserBuf1 = e.buf1; i.parserBuf2 = e.buf2; const n = {}; n.offset = e.getObj(); n.gen = e.getObj(); const o = e.getObj(); if (o instanceof Cmd) switch (o.cmd) { case "f": n.free = !0; break; case "n": n.uncompressed = !0 }if (!Number.isInteger(n.offset) || !Number.isInteger(n.gen) || !n.free && !n.uncompressed) throw new FormatError(`Invalid entry in XRef subsection: ${s}, ${r}`); 0 === a && n.free && 1 === s && (s = 0); this.entries[a + s] || (this.entries[a + s] = n) } i.entryNum = 0; i.streamPos = t.pos; i.parserBuf1 = e.buf1; i.parserBuf2 = e.buf2; delete i.firstEntryNum; delete i.entryCount } if (this.entries[0] && !this.entries[0].free) throw new FormatError("Invalid XRef table: unexpected first object"); return a } processXRefStream(e) { if (!("streamState" in this)) { const t = e.dict, i = t.get("W"); let a = t.get("Index"); a || (a = [0, t.get("Size")]); this.streamState = { entryRanges: a, byteWidths: i, entryNum: 0, streamPos: e.pos } } this.readXRefStream(e); delete this.streamState; return e.dict } readXRefStream(e) { const t = this.streamState; e.pos = t.streamPos; const [i, a, s] = t.byteWidths, r = t.entryRanges; for (; r.length > 0;) { const [n, o] = r; if (!Number.isInteger(n) || !Number.isInteger(o)) throw new FormatError(`Invalid XRef range fields: ${n}, ${o}`); if (!Number.isInteger(i) || !Number.isInteger(a) || !Number.isInteger(s)) throw new FormatError(`Invalid XRef entry fields length: ${n}, ${o}`); for (let r = t.entryNum; r < o; ++r) { t.entryNum = r; t.streamPos = e.pos; let o = 0, g = 0, c = 0; for (let t = 0; t < i; ++t) { const t = e.getByte(); if (-1 === t) throw new FormatError("Invalid XRef byteWidths 'type'."); o = o << 8 | t } 0 === i && (o = 1); for (let t = 0; t < a; ++t) { const t = e.getByte(); if (-1 === t) throw new FormatError("Invalid XRef byteWidths 'offset'."); g = g << 8 | t } for (let t = 0; t < s; ++t) { const t = e.getByte(); if (-1 === t) throw new FormatError("Invalid XRef byteWidths 'generation'."); c = c << 8 | t } const h = {}; h.offset = g; h.gen = c; switch (o) { case 0: h.free = !0; break; case 1: h.uncompressed = !0; break; case 2: break; default: throw new FormatError(`Invalid XRef entry type: ${o}`) }this.entries[n + r] || (this.entries[n + r] = h) } t.entryNum = 0; t.streamPos = e.pos; r.splice(0, 2) } } indexObjects() { function readToken(e, t) { let i = "", a = e[t]; for (; 10 !== a && 13 !== a && 60 !== a && !(++t >= e.length);) { i += String.fromCharCode(a); a = e[t] } return i } function skipUntil(e, t, i) { const a = i.length, s = e.length; let r = 0; for (; t < s;) { let s = 0; for (; s < a && e[t + s] === i[s];)++s; if (s >= a) break; t++; r++ } return r } const e = /\b(endobj|\d+\s+\d+\s+obj|xref|trailer\s*<<)\b/g, t = /\b(startxref|\d+\s+\d+\s+obj)\b/g, i = /^(\d+)\s+(\d+)\s+obj\b/, a = new Uint8Array([116, 114, 97, 105, 108, 101, 114]), s = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]), r = new Uint8Array([47, 88, 82, 101, 102]); this.entries.length = 0; this._cacheMap.clear(); const n = this.stream; n.pos = 0; const o = n.getBytes(), g = bytesToString(o), c = o.length; let h = n.start; const l = [], C = []; for (; h < c;) { let Q = o[h]; if (9 === Q || 10 === Q || 13 === Q || 32 === Q) { ++h; continue } if (37 === Q) { do { ++h; if (h >= c) break; Q = o[h] } while (10 !== Q && 13 !== Q); continue } const E = readToken(o, h); let u; if (E.startsWith("xref") && (4 === E.length || /\s/.test(E[4]))) { h += skipUntil(o, h, a); l.push(h); h += skipUntil(o, h, s) } else if (u = i.exec(E)) { const t = 0 | u[1], i = 0 | u[2], a = h + E.length; let s, l = !1; if (this.entries[t]) { if (this.entries[t].gen === i) try { new Parser({ lexer: new Lexer(n.makeSubStream(a)) }).getObj(); l = !0 } catch (e) { e instanceof ParserEOFException ? warn(`indexObjects -- checking object (${E}): "${e}".`) : l = !0 } } else l = !0; l && (this.entries[t] = { offset: h - n.start, gen: i, uncompressed: !0 }); e.lastIndex = a; const Q = e.exec(g); if (Q) { s = e.lastIndex + 1 - h; if ("endobj" !== Q[1]) { warn(`indexObjects: Found "${Q[1]}" inside of another "obj", caused by missing "endobj" -- trying to recover.`); s -= Q[1].length + 1 } } else s = c - h; const d = o.subarray(h, h + s), f = skipUntil(d, 0, r); if (f < s && d[f + 5] < 64) { C.push(h - n.start); this._xrefStms.add(h - n.start) } h += s } else if (E.startsWith("trailer") && (7 === E.length || /\s/.test(E[7]))) { l.push(h); const e = h + E.length; let i; t.lastIndex = e; const a = t.exec(g); if (a) { i = t.lastIndex + 1 - h; if ("startxref" !== a[1]) { warn(`indexObjects: Found "${a[1]}" after "trailer", caused by missing "startxref" -- trying to recover.`); i -= a[1].length + 1 } } else i = c - h; h += i } else h += E.length + 1 } for (const e of C) { this.startXRefQueue.push(e); this.readXRef(!0) } const Q = []; let E, u, d = !1; for (const e of l) { n.pos = e; const t = new Parser({ lexer: new Lexer(n), xref: this, allowStreams: !0, recoveryMode: !0 }); if (!isCmd(t.getObj(), "trailer")) continue; const i = t.getObj(); if (i instanceof Dict) { Q.push(i); i.has("Encrypt") && (d = !0) } } for (const e of [...Q, "genFallback", ...Q]) { if ("genFallback" === e) { if (!u) break; this._generationFallback = !0; continue } let t = !1; try { const i = e.get("Root"); if (!(i instanceof Dict)) continue; const a = i.get("Pages"); if (!(a instanceof Dict)) continue; const s = a.get("Count"); Number.isInteger(s) && (t = !0) } catch (e) { u = e; continue } if (t && (!d || e.has("Encrypt")) && e.has("ID")) return e; E = e } if (E) return E; if (this.topDict) return this.topDict; throw new InvalidPDFException("Invalid PDF structure.") } readXRef(e = !1) { const t = this.stream, i = new Set; for (; this.startXRefQueue.length;) { try { const e = this.startXRefQueue[0]; if (i.has(e)) { warn("readXRef - skipping XRef table since it was already parsed."); this.startXRefQueue.shift(); continue } i.add(e); t.pos = e + t.start; const a = new Parser({ lexer: new Lexer(t), xref: this, allowStreams: !0 }); let s, r = a.getObj(); if (isCmd(r, "xref")) { s = this.processXRefTable(a); this.topDict || (this.topDict = s); r = s.get("XRefStm"); if (Number.isInteger(r) && !this._xrefStms.has(r)) { this._xrefStms.add(r); this.startXRefQueue.push(r); this.#K ??= r } } else { if (!Number.isInteger(r)) throw new FormatError("Invalid XRef stream header"); if (!(Number.isInteger(a.getObj()) && isCmd(a.getObj(), "obj") && (r = a.getObj()) instanceof BaseStream)) throw new FormatError("Invalid XRef stream"); s = this.processXRefStream(r); this.topDict || (this.topDict = s); if (!s) throw new FormatError("Failed to read XRef stream") } r = s.get("Prev"); Number.isInteger(r) ? this.startXRefQueue.push(r) : r instanceof Ref && this.startXRefQueue.push(r.num) } catch (e) { if (e instanceof MissingDataException) throw e; info("(while reading XRef): " + e) } this.startXRefQueue.shift() } if (this.topDict) return this.topDict; if (!e) throw new XRefParseException } get lastXRefStreamPos() { return this.#K ?? (this._xrefStms.size > 0 ? 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 Ref ? this.fetch(e, t) : e } fetch(e, t = !1) { if (!(e instanceof Ref)) throw new Error("ref object is not a reference"); const i = e.num, a = this._cacheMap.get(i); if (void 0 !== a) { a instanceof Dict && !a.objId && (a.objId = e.toString()); return a } let s = this.getEntry(i); if (null === s) { this._cacheMap.set(i, s); return s } if (this._pendingRefs.has(e)) { this._pendingRefs.remove(e); warn(`Ignoring circular reference: ${e}.`); return ft } 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 Dict ? s.objId = e.toString() : s instanceof BaseStream && (s.dict.objId = e.toString()); return s } fetchUncompressed(e, t, i = !1) { const a = e.gen; let s = e.num; if (t.gen !== a) { const r = `Inconsistent generation in XRef: ${e}`; if (this._generationFallback && t.gen < a) { warn(r); return this.fetchUncompressed(Ref.get(s, t.gen), t, i) } throw new XRefEntryException(r) } const r = this.stream.makeSubStream(t.offset + this.stream.start), n = new Parser({ lexer: new Lexer(r), xref: this, allowStreams: !0 }), o = n.getObj(), g = n.getObj(), c = n.getObj(); if (o !== s || g !== a || !(c instanceof Cmd)) throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${e}`); if ("obj" !== c.cmd) { if (c.cmd.startsWith("obj")) { s = parseInt(c.cmd.substring(3), 10); if (!Number.isNaN(s)) return s } throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${e}`) } (t = this.encrypt && !i ? n.getObj(this.encrypt.createCipherTransform(s, a)) : n.getObj()) instanceof BaseStream || this._cacheMap.set(s, t); return t } fetchCompressed(e, t, i = !1) { const a = t.offset, s = this.fetch(Ref.get(a, 0)); if (!(s instanceof BaseStream)) throw new FormatError("bad ObjStm stream"); const r = s.dict.get("First"), n = s.dict.get("N"); if (!Number.isInteger(r) || !Number.isInteger(n)) throw new FormatError("invalid first and n parameters for ObjStm stream"); let o = new Parser({ lexer: new Lexer(s), xref: this, allowStreams: !0 }); const g = new Array(n), c = new Array(n); for (let e = 0; e < n; ++e) { const t = o.getObj(); if (!Number.isInteger(t)) throw new FormatError(`invalid object number in the ObjStm stream: ${t}`); const i = o.getObj(); if (!Number.isInteger(i)) throw new FormatError(`invalid object offset in the ObjStm stream: ${i}`); g[e] = t; c[e] = i } const h = (s.start || 0) + r, l = new Array(n); for (let e = 0; e < n; ++e) { const t = e < n - 1 ? c[e + 1] - c[e] : void 0; if (t < 0) throw new FormatError("Invalid offset in the ObjStm stream."); o = new Parser({ lexer: new Lexer(s.makeSubStream(h + c[e], t, s.dict)), xref: this, allowStreams: !0 }); const i = o.getObj(); l[e] = i; if (i instanceof BaseStream) continue; const r = g[e], C = this.entries[r]; C && C.offset === a && C.gen === e && this._cacheMap.set(r, i) } if (void 0 === (t = l[t.gen])) throw new XRefEntryException(`Bad (compressed) XRef entry: ${e}`); return t } async fetchIfRefAsync(e, t) { return e instanceof Ref ? this.fetchAsync(e, t) : e } async fetchAsync(e, t) { try { return this.fetch(e, t) } catch (i) { if (!(i instanceof MissingDataException)) throw i; await this.pdfManager.requestRange(i.begin, i.end); return this.fetchAsync(e, t) } } getCatalogObj() { return this.root } } const so = [0, 0, 612, 792]; class Page { constructor({ pdfManager: e, xref: t, pageIndex: i, pageDict: a, ref: s, globalIdFactory: r, fontCache: n, builtInCMapCache: o, standardFontDataCache: g, globalImageCache: c, systemFontCache: h, nonBlendModesSet: l, xfaFactory: C }) { this.pdfManager = e; this.pageIndex = i; this.pageDict = a; this.xref = t; this.ref = s; this.fontCache = n; this.builtInCMapCache = o; this.standardFontDataCache = g; this.globalImageCache = c; this.systemFontCache = h; this.nonBlendModesSet = l; this.evaluatorOptions = e.evaluatorOptions; this.resourcesPromise = null; this.xfaFactory = C; const Q = { obj: 0 }; this._localIdFactory = class extends r { static createObjId() { return `p${i}_${++Q.obj}` } static getPageObjId() { return `p${s.toString()}` } } } _getInheritableProperty(e, t = !1) { const i = getInheritableProperty({ dict: this.pageDict, key: e, getArray: t, stopWhenFound: !1 }); return Array.isArray(i) ? 1 !== i.length && i[0] instanceof Dict ? Dict.merge({ xref: this.xref, dictArray: i }) : i[0] : i } get content() { return this.pageDict.getArray("Contents") } get resources() { const e = this._getInheritableProperty("Resources"); return shadow(this, "resources", e instanceof Dict ? e : Dict.empty) } _getBoundingBox(e) { if (this.xfaData) return this.xfaData.bbox; const t = lookupNormalRect(this._getInheritableProperty(e, !0), null); if (t) { if (t[2] - t[0] > 0 && t[3] - t[1] > 0) return t; warn(`Empty, or invalid, /${e} entry.`) } return null } get mediaBox() { return shadow(this, "mediaBox", this._getBoundingBox("MediaBox") || so) } get cropBox() { return shadow(this, "cropBox", this._getBoundingBox("CropBox") || this.mediaBox) } get userUnit() { let e = this.pageDict.get("UserUnit"); ("number" != typeof e || e <= 0) && (e = 1); return shadow(this, "userUnit", e) } get view() { const { cropBox: e, mediaBox: t } = this; if (e !== t && !isArrayEqual(e, t)) { const i = Util.intersect(e, t); if (i && i[2] - i[0] > 0 && i[3] - i[1] > 0) return shadow(this, "view", i); warn("Empty /CropBox and /MediaBox intersection.") } return 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 shadow(this, "rotate", e) } _onSubStreamError(e, t) { if (!this.evaluatorOptions.ignoreErrors) throw e; warn(`getContentStream - ignoring sub-stream (${t}): "${e}".`) } getContentStream() { return this.pdfManager.ensure(this, "content").then((e => e instanceof BaseStream ? e : Array.isArray(e) ? new StreamsSequenceStream(e, this._onSubStreamError.bind(this)) : new NullStream)) } get xfaData() { return shadow(this, "xfaData", this.xfaFactory ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) } : null) } #T(e, t, i) { for (const a of e) if (a.id) { const e = Ref.fromString(a.id); if (!e) { warn(`A non-linked annotation cannot be modified: ${a.id}`); continue } if (a.deleted) { t.put(e, e); continue } i?.put(e); a.ref = e; delete a.id } } async saveNewAnnotations(e, t, i, a) { if (this.xfaFactory) throw new Error("XFA: Cannot save new annotations."); const s = new 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 }), r = new RefSetCache, n = new RefSet; this.#T(i, r, n); const o = this.pageDict, g = this.annotations.filter((e => !(e instanceof Ref && r.has(e)))), c = await AnnotationFactory.saveNewAnnotations(s, t, i, a); for (const { ref: e } of c.annotations) e instanceof Ref && !n.has(e) && g.push(e); const h = o.get("Annots"); o.set("Annots", g); const l = []; await writeObject(this.ref, o, l, this.xref); h && o.set("Annots", h); const C = c.dependencies; C.push({ ref: this.ref, data: l.join("") }, ...c.annotations); for (const e of r) C.push({ ref: e, data: null }); return C } save(e, t, i) { const a = new 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 s = []; for (const r of e) r.mustBePrinted(i) && s.push(r.save(a, t, i).catch((function (e) { warn(`save - ignoring annotation data during "${t.name}" task: "${e}".`); return null }))); return Promise.all(s).then((function (e) { return e.filter((e => !!e)) })) })) } loadResources(e) { this.resourcesPromise ||= this.pdfManager.ensure(this, "resources"); return this.resourcesPromise.then((() => new ObjectLoader(this.resources, e, this.xref).load())) } getOperatorList({ handler: e, sink: t, task: i, intent: a, cacheKey: s, annotationStorage: r = null }) { const n = this.getContentStream(), h = this.loadResources(["ColorSpace", "ExtGState", "Font", "Pattern", "Properties", "Shading", "XObject"]), Q = new 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 }), u = this.xfaFactory ? null : getNewAnnotationsMap(r), d = u?.get(this.pageIndex); let f = Promise.resolve(null), p = null; if (d) { const e = this.pdfManager.ensureDoc("annotationGlobals"); let t; const a = new Set; for (const { bitmapId: e, bitmap: t } of d) !e || t || a.has(e) || a.add(e); const { isOffscreenCanvasSupported: s } = this.evaluatorOptions; if (a.size > 0) { const e = d.slice(); for (const [t, i] of r) t.startsWith(E) && i.bitmap && a.has(i.bitmapId) && e.push(i); t = AnnotationFactory.generateImages(e, this.xref, s) } else t = AnnotationFactory.generateImages(d, this.xref, s); p = new RefSet; this.#T(d, p, null); f = e.then((e => e ? AnnotationFactory.printNewAnnotations(e, Q, i, d, t) : null)) } const m = Promise.all([n, h]).then((([r]) => { const n = new OperatorList(a, t); e.send("StartRenderPage", { transparency: Q.hasBlendModes(this.resources, this.nonBlendModesSet), pageIndex: this.pageIndex, cacheKey: s }); return Q.getOperatorList({ stream: r, task: i, resources: this.resources, operatorList: n }).then((function () { return n })) })); return Promise.all([m, this._parsedAnnotations, f]).then((function ([e, t, s]) { if (s) { t = t.filter((e => !(e.ref && p.has(e.ref)))); for (let e = 0, i = s.length; e < i; e++) { const a = s[e]; if (a.refToReplace) { const r = t.findIndex((e => e.ref && isRefsEqual(e.ref, a.refToReplace))); if (r >= 0) { t.splice(r, 1, a); s.splice(e--, 1); i-- } } } t = t.concat(s) } if (0 === t.length || a & C) { e.flush(!0); return { length: e.totalLength } } const n = !!(a & l), h = !!(a & o), E = !!(a & g), u = !!(a & c), d = []; for (const e of t) (h || E && e.mustBeViewed(r, n) || u && e.mustBePrinted(r)) && d.push(e.getOperatorList(Q, i, a, n, r).catch((function (e) { warn(`getOperatorList - ignoring annotation data during "${i.name}" task: "${e}".`); return { opList: null, separateForm: !1, separateCanvas: !1 } }))); return Promise.all(d).then((function (t) { let i = !1, a = !1; for (const { opList: s, separateForm: r, separateCanvas: n } of t) { e.addOpList(s); i ||= r; a ||= n } e.flush(!0, { form: i, canvas: a }); return { length: e.totalLength } })) })) } async extractTextContent({ handler: e, task: t, includeMarkedContent: i, disableNormalization: a, sink: s }) { const r = this.getContentStream(), n = this.loadResources(["ExtGState", "Font", "Properties", "XObject"]), o = this.pdfManager.ensureCatalog("lang"), [g, , c] = await Promise.all([r, n, o]); return new 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: g, task: t, resources: this.resources, includeMarkedContent: i, disableNormalization: a, sink: s, viewBox: this.view, lang: c }) } 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 StructTreePage(e, this.pageDict); t.parse(this.ref); return t } async getAnnotationsData(e, t, i) { const a = await this._parsedAnnotations; if (0 === a.length) return a; const s = [], r = []; let n; const h = !!(i & o), l = !!(i & g), C = !!(i & c); for (const i of a) { const a = h || l && i.viewable; (a || C && i.printable) && s.push(i.data); if (i.hasTextContent && a) { n ||= new 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 }); r.push(i.extractTextContent(n, t, [-1 / 0, -1 / 0, 1 / 0, 1 / 0]).catch((function (e) { warn(`getAnnotationsData - ignoring textContent during "${t.name}" task: "${e}".`) }))) } } await Promise.all(r); return s } get annotations() { const e = this._getInheritableProperty("Annots"); return shadow(this, "annotations", Array.isArray(e) ? e : []) } get _parsedAnnotations() { return shadow(this, "_parsedAnnotations", 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 i = []; for (const a of e) i.push(AnnotationFactory.create(this.xref, a, t, this._localIdFactory, !1, this.ref).catch((function (e) { warn(`_parsedAnnotations: "${e}".`); return null }))); const a = []; let s, r; for (const e of await Promise.all(i)) e && (e instanceof WidgetAnnotation ? (r ||= []).push(e) : e instanceof PopupAnnotation ? (s ||= []).push(e) : a.push(e)); r && a.push(...r); s && a.push(...s); return a }))) } get jsActions() { return shadow(this, "jsActions", collectActions(this.xref, this.pageDict, fA)) } } const ro = new Uint8Array([37, 80, 68, 70, 45]), no = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]), oo = new Uint8Array([101, 110, 100, 111, 98, 106]); function find(e, t, i = 1024, a = !1) { const s = t.length, r = e.peekBytes(i), n = r.length - s; if (n <= 0) return !1; if (a) { const i = s - 1; let a = r.length - 1; for (; a >= i;) { let n = 0; for (; n < s && r[a - n] === t[i - n];)n++; if (n >= s) { e.pos += a - i; return !0 } a-- } } else { let i = 0; for (; i <= n;) { let a = 0; for (; a < s && r[i + a] === t[a];)a++; if (a >= s) { e.pos += i; return !0 } i++ } } return !1 } class PDFDocument { constructor(e, t) { if (t.length <= 0) throw new InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes."); this.pdfManager = e; this.stream = t; this.xref = new XRef(t, e); this._pagePromises = new Map; this._version = null; const i = { font: 0 }; this._globalIdFactory = class { static getDocId() { return `g_${e.docId}` } static createFontId() { return "f" + ++i.font } static createObjId() { unreachable("Abstract method `createObjId` called.") } static getPageObjId() { unreachable("Abstract method `getPageObjId` called.") } } } parse(e) { this.xref.parse(e); this.catalog = new Catalog(this.pdfManager, this.xref) } get linearization() { let e = null; try { e = Linearization.create(this.stream) } catch (e) { if (e instanceof MissingDataException) throw e; info(e) } return shadow(this, "linearization", e) } get startXRef() { const e = this.stream; let t = 0; if (this.linearization) { e.reset(); if (find(e, oo)) { e.skip(6); let i = e.peekByte(); for (; isWhiteSpace(i);) { e.pos++; i = e.peekByte() } t = e.pos - e.start } } else { const i = 1024, a = no.length; let s = !1, r = e.end; for (; !s && r > 0;) { r -= i - a; r < 0 && (r = 0); e.pos = r; s = find(e, no, i, !0) } if (s) { e.skip(9); let i; do { i = e.getByte() } while (isWhiteSpace(i)); let a = ""; for (; i >= 32 && i <= 57;) { a += String.fromCharCode(i); i = e.getByte() } t = parseInt(a, 10); isNaN(t) && (t = 0) } } return shadow(this, "startXRef", t) } checkHeader() { const e = this.stream; e.reset(); if (!find(e, ro)) return; e.moveStart(); e.skip(ro.length); let t, i = ""; for (; (t = e.getByte()) > 32 && i.length < 7;)i += String.fromCharCode(t); Dt.test(i) ? this._version = i : warn(`Invalid PDF header version: ${i}`) } 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 shadow(this, "numPages", e) } _hasOnlyDocumentSignatures(e, t = 0) { return !!Array.isArray(e) && e.every((e => { if (!((e = this.xref.fetchIfRef(e)) instanceof Dict)) return !1; if (e.has("Kids")) { if (++t > 10) { warn("_hasOnlyDocumentSignatures: maximum recursion depth reached"); return !1 } return this._hasOnlyDocumentSignatures(e.get("Kids"), t) } const i = isName(e.get("FT"), "Sig"), a = e.get("Rect"), s = Array.isArray(a) && a.every((e => 0 === e)); return i && s })) } get _xfaStreams() { const e = this.catalog.acroForm; if (!e) return null; const t = e.get("XFA"), i = { "xdp:xdp": "", template: "", datasets: "", config: "", connectionSet: "", localeSet: "", stylesheet: "", "/xdp:xdp": "" }; if (t instanceof BaseStream && !t.isEmpty) { i["xdp:xdp"] = t; return i } if (!Array.isArray(t) || 0 === t.length) return null; for (let e = 0, a = t.length; e < a; e += 2) { let s; s = 0 === e ? "xdp:xdp" : e === a - 2 ? "/xdp:xdp" : t[e]; if (!i.hasOwnProperty(s)) continue; const r = this.xref.fetchIfRef(t[e + 1]); r instanceof BaseStream && !r.isEmpty && (i[s] = r) } return i } get xfaDatasets() { const e = this._xfaStreams; if (!e) return shadow(this, "xfaDatasets", null); for (const t of ["datasets", "xdp:xdp"]) { const i = e[t]; if (i) try { const e = stringToUTF8String(i.getString()); return shadow(this, "xfaDatasets", new DatasetReader({ [t]: e })) } catch { warn("XFA - Invalid utf-8 string."); break } } return shadow(this, "xfaDatasets", null) } get xfaData() { const e = this._xfaStreams; if (!e) return null; const t = Object.create(null); for (const [i, a] of Object.entries(e)) if (a) try { t[i] = stringToUTF8String(a.getString()) } catch { warn("XFA - Invalid utf-8 string."); return null } return t } get xfaFactory() { let e; this.pdfManager.enableXfa && this.catalog.needsRendering && this.formInfo.hasXfa && !this.formInfo.hasAcroForm && (e = this.xfaData); return shadow(this, "xfaFactory", e ? new XFAFactory(e) : null) } get isPureXfa() { return !!this.xfaFactory && this.xfaFactory.isValid() } get htmlForXfa() { return this.xfaFactory ? this.xfaFactory.getPages() : null } async loadXfaImages() { const e = await this.pdfManager.ensureCatalog("xfaImages"); if (!e) return; const t = e.getKeys(), i = new ObjectLoader(e, t, this.xref); await i.load(); const a = new Map; for (const i of t) { const t = e.get(i); t instanceof BaseStream && a.set(i, t.getBytes()) } this.xfaFactory.setImages(a) } async loadXfaFonts(e, t) { const i = await this.pdfManager.ensureCatalog("acroForm"); if (!i) return; const a = await i.getAsync("DR"); if (!(a instanceof Dict)) return; const s = new ObjectLoader(a, ["Font"], this.xref); await s.load(); const r = a.get("Font"); if (!(r instanceof Dict)) return; const n = Object.assign(Object.create(null), this.pdfManager.evaluatorOptions); n.useSystemFonts = !1; const o = new PartialEvaluator({ xref: this.xref, handler: e, pageIndex: -1, idFactory: this._globalIdFactory, fontCache: this.catalog.fontCache, builtInCMapCache: this.catalog.builtInCMapCache, standardFontDataCache: this.catalog.standardFontDataCache, options: n }), g = new OperatorList, c = [], h = { get font() { return c.at(-1) }, set font(e) { c.push(e) }, clone() { return this } }, l = new Map; r.forEach(((e, t) => { l.set(e, t) })); const C = []; for (const [e, i] of l) { const s = i.get("FontDescriptor"); if (!(s instanceof Dict)) continue; let r = s.get("FontFamily"); r = r.replaceAll(/[ ]+(\d)/g, "$1"); const n = { fontFamily: r, fontWeight: s.get("FontWeight"), italicAngle: -s.get("ItalicAngle") }; validateCSSFont(n) && C.push(o.handleSetFont(a, [Name.get(e), 1], null, g, t, h, null, n).catch((function (e) { warn(`loadXfaFonts: "${e}".`); return null }))) } await Promise.all(C); const Q = this.xfaFactory.setFonts(c); if (!Q) return; n.ignoreErrors = !0; C.length = 0; c.length = 0; const E = new Set; for (const e of Q) getXfaFontName(`${e}-Regular`) || E.add(e); E.size && Q.push("PdfJS-Fallback"); for (const e of Q) if (!E.has(e)) for (const i 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 s = `${e}-${i.name}`, r = getXfaFontDict(s); C.push(o.handleSetFont(a, [Name.get(s), 1], null, g, t, h, r, { fontFamily: e, fontWeight: i.fontWeight, italicAngle: i.italicAngle }).catch((function (e) { warn(`loadXfaFonts: "${e}".`); return null }))) } await Promise.all(C); this.xfaFactory.appendFonts(c, E) } 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 shadow(this, "formInfo", e); try { const i = t.get("Fields"), a = Array.isArray(i) && i.length > 0; e.hasFields = a; const s = t.get("XFA"); e.hasXfa = Array.isArray(s) && s.length > 0 || s instanceof BaseStream && !s.isEmpty; const r = !!(1 & t.get("SigFlags")), n = r && this._hasOnlyDocumentSignatures(i); e.hasAcroForm = a && !n; e.hasSignatures = r } catch (e) { if (e instanceof MissingDataException) throw e; warn(`Cannot fetch form information: "${e}".`) } return 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 MissingDataException) throw e; info("The document information dictionary is invalid.") } if (!(t instanceof Dict)) return shadow(this, "documentInfo", e); for (const i of t.getKeys()) { const a = t.get(i); switch (i) { case "Title": case "Author": case "Subject": case "Keywords": case "Creator": case "Producer": case "CreationDate": case "ModDate": if ("string" == typeof a) { e[i] = stringToPDFString(a); continue } break; case "Trapped": if (a instanceof Name) { e[i] = a; continue } break; default: let t; switch (typeof a) { case "string": t = stringToPDFString(a); break; case "number": case "boolean": t = a; break; default: a instanceof Name && (t = a) }if (void 0 === t) { warn(`Bad value, for custom key "${i}", in Info: ${a}.`); continue } e.Custom || (e.Custom = Object.create(null)); e.Custom[i] = t; continue }warn(`Bad value, for key "${i}", in Info: ${a}.`) } return 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 i of e) { const e = i.toString(16); t.push(e.padStart(2, "0")) } return t.join("") } const e = this.xref.trailer.get("ID"); let t, i; if (Array.isArray(e) && validate(e[0])) { t = stringToBytes(e[0]); e[1] !== e[0] && validate(e[1]) && (i = stringToBytes(e[1])) } else t = Js(this.stream.getByteRange(0, 1024), 0, 1024); return shadow(this, "fingerprints", [hexString(t), i ? hexString(i) : null]) } async _getLinearizationPage(e) { const { catalog: t, linearization: i, xref: a } = this, s = Ref.get(i.objectNumberFirst, 0); try { const e = await a.fetchAsync(s); if (e instanceof Dict) { let i = e.getRaw("Type"); i instanceof Ref && (i = await a.fetchAsync(i)); if (isName(i, "Page") || !e.has("Type") && !e.has("Kids") && e.has("Contents")) { t.pageKidsCountCache.has(s) || t.pageKidsCountCache.put(s, 1); t.pageIndexCache.has(s) || t.pageIndexCache.put(s, 0); return [e, s] } } throw new FormatError("The Linearization dictionary doesn't point to a valid Page dictionary.") } catch (i) { warn(`_getLinearizationPage: "${i.message}".`); return t.getPageDict(e) } } getPage(e) { const t = this._pagePromises.get(e); if (t) return t; const { catalog: i, linearization: a, xfaFactory: s } = this; let r; r = s ? Promise.resolve([Dict.empty, null]) : a?.pageFirst === e ? this._getLinearizationPage(e) : i.getPageDict(e); r = r.then((([t, a]) => new Page({ pdfManager: this.pdfManager, xref: this.xref, pageIndex: e, pageDict: t, ref: a, globalIdFactory: this._globalIdFactory, fontCache: i.fontCache, builtInCMapCache: i.builtInCMapCache, standardFontDataCache: i.standardFontDataCache, globalImageCache: i.globalImageCache, systemFontCache: i.systemFontCache, nonBlendModesSet: i.nonBlendModesSet, xfaFactory: s }))); this._pagePromises.set(e, r); return r } async checkFirstPage(e = !1) { if (!e) try { await this.getPage(0) } catch (e) { if (e instanceof XRefEntryException) { this._pagePromises.delete(0); await this.cleanup(); throw new XRefParseException } } } async checkLastPage(e = !1) { const { catalog: t, pdfManager: i } = this; t.setActualNumPages(); let a; try { await Promise.all([i.ensureDoc("xfaFactory"), i.ensureDoc("linearization"), i.ensureCatalog("numPages")]); if (this.xfaFactory) return; a = this.linearization ? this.linearization.numPages : t.numPages; if (!Number.isInteger(a)) throw new FormatError("Page count is not an integer."); if (a <= 1) return; await this.getPage(a - 1) } catch (s) { this._pagePromises.delete(a - 1); await this.cleanup(); if (s instanceof XRefEntryException && !e) throw new XRefParseException; warn(`checkLastPage - invalid /Pages tree /Count: ${a}.`); let r; try { r = await t.getAllPageDicts(e) } catch (i) { if (i instanceof XRefEntryException && !e) throw new XRefParseException; t.setActualNumPages(1); return } for (const [e, [a, s]] of r) { let r; if (a instanceof Error) { r = Promise.reject(a); r.catch((() => { })) } else r = Promise.resolve(new Page({ pdfManager: i, xref: this.xref, pageIndex: e, pageDict: a, ref: s, 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, r) } t.setActualNumPages(r.size) } } fontFallback(e, t) { return this.catalog.fontFallback(e, t) } async cleanup(e = !1) { return this.catalog ? this.catalog.cleanup(e) : clearGlobalCaches() } async#q(e, t, i, a, s) { const { xref: r } = this; if (!(t instanceof Ref) || s.has(t)) return; s.put(t); const n = await r.fetchAsync(t); if (!(n instanceof Dict)) return; if (n.has("T")) { const t = stringToPDFString(await n.getAsync("T")); e = "" === e ? t : `${e}.${t}` } else { let t = n; for (; ;) { t = t.getRaw("Parent"); if (t instanceof Ref) { if (s.has(t)) break; t = await r.fetchAsync(t) } if (!(t instanceof Dict)) break; if (t.has("T")) { const i = stringToPDFString(await t.getAsync("T")); e = "" === e ? i : `${e}.${i}`; break } } } i.has(e) || i.set(e, []); i.get(e).push(AnnotationFactory.create(r, t, a, null, !0, null).then((e => e?.getFieldObject())).catch((function (e) { warn(`#collectFieldObjects: "${e}".`); return null }))); if (!n.has("Kids")) return; const o = await n.getAsync("Kids"); if (Array.isArray(o)) for (const t of o) await this.#q(e, t, i, a, s) } get fieldObjects() { if (!this.formInfo.hasFields) return shadow(this, "fieldObjects", Promise.resolve(null)); return shadow(this, "fieldObjects", Promise.all([this.pdfManager.ensureDoc("annotationGlobals"), this.pdfManager.ensureCatalog("acroForm")]).then((async ([e, t]) => { if (!e) return null; const i = new RefSet, a = Object.create(null), s = new Map; for (const a of await t.getAsync("Fields")) await this.#q("", a, s, e, i); const r = []; for (const [e, t] of s) r.push(Promise.all(t).then((t => { (t = t.filter((e => !!e))).length > 0 && (a[e] = t) }))); await Promise.all(r); return a }))) } get hasJSActions() { return shadow(this, "hasJSActions", this.pdfManager.ensureDoc("_parseHasJSActions")) } 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 shadow(this, "calculationOrderIds", null); const t = e.get("CO"); if (!Array.isArray(t) || 0 === t.length) return shadow(this, "calculationOrderIds", null); const i = []; for (const e of t) e instanceof Ref && i.push(e.toString()); return 0 === i.length ? shadow(this, "calculationOrderIds", null) : shadow(this, "calculationOrderIds", i) } get annotationGlobals() { return shadow(this, "annotationGlobals", AnnotationFactory.createGlobals(this.pdfManager)) } } class BasePdfManager { constructor(e) { this.constructor === BasePdfManager && unreachable("Cannot initialize BasePdfManager."); this._docBaseUrl = function parseDocBaseUrl(e) { if (e) { const t = createValidAbsoluteUrl(e); if (t) return t.href; warn(`Invalid absolute docBaseUrl: "${e}".`) } return null }(e.docBaseUrl); this._docId = e.docId; this._password = e.password; this.enableXfa = e.enableXfa; e.evaluatorOptions.isOffscreenCanvasSupported &&= FeatureTest.isOffscreenCanvasSupported; this.evaluatorOptions = Object.freeze(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, i) { unreachable("Abstract method `ensure` called") } requestRange(e, t) { unreachable("Abstract method `requestRange` called") } requestLoadedStream(e = !1) { unreachable("Abstract method `requestLoadedStream` called") } sendProgressiveData(e) { unreachable("Abstract method `sendProgressiveData` called") } updatePassword(e) { this._password = e } terminate(e) { unreachable("Abstract method `terminate` called") } } class LocalPdfManager extends BasePdfManager { constructor(e) { super(e); const t = new Stream(e.source); this.pdfDocument = new PDFDocument(this, t); this._loadedStreamPromise = Promise.resolve(t) } async ensure(e, t, i) { const a = e[t]; return "function" == typeof a ? a.apply(e, i) : a } requestRange(e, t) { return Promise.resolve() } requestLoadedStream(e = !1) { return this._loadedStreamPromise } terminate(e) { } } class NetworkPdfManager extends BasePdfManager { constructor(e) { super(e); this.streamManager = new ChunkedStreamManager(e.source, { msgHandler: e.handler, length: e.length, disableAutoFetch: e.disableAutoFetch, rangeChunkSize: e.rangeChunkSize }); this.pdfDocument = new PDFDocument(this, this.streamManager.getStream()) } async ensure(e, t, i) { try { const a = e[t]; return "function" == typeof a ? a.apply(e, i) : a } catch (a) { if (!(a instanceof MissingDataException)) throw a; await this.requestRange(a.begin, a.end); return this.ensure(e, t, i) } } 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) } } const go = 1, Io = 2, co = 1, ho = 2, lo = 3, Co = 4, Bo = 5, Qo = 6, Eo = 7, uo = 8; function wrapReason(e) { e instanceof Error || "object" == typeof e && null !== e || unreachable('wrapReason: Expected "reason" to be a (possibly cloned) Error.'); switch (e.name) { case "AbortException": return new AbortException(e.message); case "MissingPDFException": return new MissingPDFException(e.message); case "PasswordException": return new PasswordException(e.message, e.code); case "UnexpectedResponseException": return new UnexpectedResponseException(e.message, e.status); case "UnknownErrorException": return new UnknownErrorException(e.message, e.details); default: return new UnknownErrorException(e.message, e.toString()) } } class MessageHandler { constructor(e, t, i) { this.sourceName = e; this.targetName = t; this.comObj = i; 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.#O(t); return } if (t.callback) { const e = t.callbackId, i = this.callbackCapabilities[e]; if (!i) throw new Error(`Cannot resolve callback ${e}`); delete this.callbackCapabilities[e]; if (t.callback === go) i.resolve(t.data); else { if (t.callback !== Io) throw new Error("Unexpected callback case"); i.reject(wrapReason(t.reason)) } return } const a = this.actionHandler[t.action]; if (!a) throw new Error(`Unknown action from worker: ${t.action}`); if (t.callbackId) { const e = this.sourceName, s = t.sourceName; new Promise((function (e) { e(a(t.data)) })).then((function (a) { i.postMessage({ sourceName: e, targetName: s, callback: go, callbackId: t.callbackId, data: a }) }), (function (a) { i.postMessage({ sourceName: e, targetName: s, callback: Io, callbackId: t.callbackId, reason: wrapReason(a) }) })) } else t.streamId ? this.#P(t) : a(t.data) }; i.addEventListener("message", this._onComObjOnMessage) } on(e, t) { const i = this.actionHandler; if (i[e]) throw new Error(`There is already an actionName called "${e}"`); i[e] = t } send(e, t, i) { this.comObj.postMessage({ sourceName: this.sourceName, targetName: this.targetName, action: e, data: t }, i) } sendWithPromise(e, t, i) { const a = this.callbackId++, s = Promise.withResolvers(); this.callbackCapabilities[a] = s; try { this.comObj.postMessage({ sourceName: this.sourceName, targetName: this.targetName, action: e, callbackId: a, data: t }, i) } catch (e) { s.reject(e) } return s.promise } sendWithStream(e, t, i, a) { const s = this.streamId++, r = this.sourceName, n = this.targetName, o = this.comObj; return new ReadableStream({ start: i => { const g = Promise.withResolvers(); this.streamControllers[s] = { controller: i, startCall: g, pullCall: null, cancelCall: null, isClosed: !1 }; o.postMessage({ sourceName: r, targetName: n, action: e, streamId: s, data: t, desiredSize: i.desiredSize }, a); return g.promise }, pull: e => { const t = Promise.withResolvers(); this.streamControllers[s].pullCall = t; o.postMessage({ sourceName: r, targetName: n, stream: Qo, streamId: s, desiredSize: e.desiredSize }); return t.promise }, cancel: e => { assert(e instanceof Error, "cancel must have a valid reason"); const t = Promise.withResolvers(); this.streamControllers[s].cancelCall = t; this.streamControllers[s].isClosed = !0; o.postMessage({ sourceName: r, targetName: n, stream: co, streamId: s, reason: wrapReason(e) }); return t.promise } }, i) } #P(e) { const t = e.streamId, i = this.sourceName, a = e.sourceName, s = this.comObj, r = this, n = this.actionHandler[e.action], o = { enqueue(e, r = 1, n) { if (this.isCancelled) return; const o = this.desiredSize; this.desiredSize -= r; if (o > 0 && this.desiredSize <= 0) { this.sinkCapability = Promise.withResolvers(); this.ready = this.sinkCapability.promise } s.postMessage({ sourceName: i, targetName: a, stream: Co, streamId: t, chunk: e }, n) }, close() { if (!this.isCancelled) { this.isCancelled = !0; s.postMessage({ sourceName: i, targetName: a, stream: lo, streamId: t }); delete r.streamSinks[t] } }, error(e) { assert(e instanceof Error, "error must have a valid reason"); if (!this.isCancelled) { this.isCancelled = !0; s.postMessage({ sourceName: i, targetName: a, stream: Bo, streamId: t, reason: wrapReason(e) }) } }, sinkCapability: Promise.withResolvers(), onPull: null, onCancel: null, isCancelled: !1, desiredSize: e.desiredSize, ready: null }; o.sinkCapability.resolve(); o.ready = o.sinkCapability.promise; this.streamSinks[t] = o; new Promise((function (t) { t(n(e.data, o)) })).then((function () { s.postMessage({ sourceName: i, targetName: a, stream: uo, streamId: t, success: !0 }) }), (function (e) { s.postMessage({ sourceName: i, targetName: a, stream: uo, streamId: t, reason: wrapReason(e) }) })) } #O(e) { const t = e.streamId, i = this.sourceName, a = e.sourceName, s = this.comObj, r = this.streamControllers[t], n = this.streamSinks[t]; switch (e.stream) { case uo: e.success ? r.startCall.resolve() : r.startCall.reject(wrapReason(e.reason)); break; case Eo: e.success ? r.pullCall.resolve() : r.pullCall.reject(wrapReason(e.reason)); break; case Qo: if (!n) { s.postMessage({ sourceName: i, targetName: a, stream: Eo, streamId: t, success: !0 }); break } n.desiredSize <= 0 && e.desiredSize > 0 && n.sinkCapability.resolve(); n.desiredSize = e.desiredSize; new Promise((function (e) { e(n.onPull?.()) })).then((function () { s.postMessage({ sourceName: i, targetName: a, stream: Eo, streamId: t, success: !0 }) }), (function (e) { s.postMessage({ sourceName: i, targetName: a, stream: Eo, streamId: t, reason: wrapReason(e) }) })); break; case Co: assert(r, "enqueue should have stream controller"); if (r.isClosed) break; r.controller.enqueue(e.chunk); break; case lo: assert(r, "close should have stream controller"); if (r.isClosed) break; r.isClosed = !0; r.controller.close(); this.#W(r, t); break; case Bo: assert(r, "error should have stream controller"); r.controller.error(wrapReason(e.reason)); this.#W(r, t); break; case ho: e.success ? r.cancelCall.resolve() : r.cancelCall.reject(wrapReason(e.reason)); this.#W(r, t); break; case co: if (!n) break; new Promise((function (t) { t(n.onCancel?.(wrapReason(e.reason))) })).then((function () { s.postMessage({ sourceName: i, targetName: a, stream: ho, streamId: t, success: !0 }) }), (function (e) { s.postMessage({ sourceName: i, targetName: a, stream: ho, streamId: t, reason: wrapReason(e) }) })); n.sinkCapability.reject(wrapReason(e.reason)); n.isCancelled = !0; delete this.streamSinks[t]; break; default: throw new Error("Unexpected stream case") } } async#W(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) } } class PDFWorkerStream { constructor(e) { this._msgHandler = e; this._contentLength = null; this._fullRequestReader = null; this._rangeRequestReaders = [] } getFullReader() { assert(!this._fullRequestReader, "PDFWorkerStream.getFullReader can only be called once."); this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler); return this._fullRequestReader } getRangeReader(e, t) { const i = new PDFWorkerStreamRangeReader(e, t, this._msgHandler); this._rangeRequestReaders.push(i); return i } 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, i) { this._msgHandler = i; this.onProgress = null; const a = this._msgHandler.sendWithStream("GetRangeReader", { begin: e, end: t }); this._reader = a.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) } } class WorkerTask { constructor(e) { this.name = e; this.terminated = !1; this._capability = Promise.withResolvers() } 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") } } class WorkerMessageHandler { static setup(e, t) { let i = !1; e.on("test", (function (t) { if (!i) { i = !0; e.send("test", t instanceof Uint8Array) } })); e.on("configure", (function (e) { !function setVerbosityLevel(e) { Number.isInteger(e) && (st = e) }(e.verbosity) })); e.on("GetDocRequest", (function (e) { return WorkerMessageHandler.createDocumentHandler(e, t) })) } static createDocumentHandler(e, t) { let i, a = !1, s = null; const r = new Set, n = getVerbosityLevel(), { docId: o, apiVersion: g } = e, c = "4.3.136"; if (g !== c) throw new Error(`The API version "${g}" does not match the Worker version "${c}".`); const h = []; for (const e in []) h.push(e); if (h.length) throw new Error("The `Array.prototype` contains unexpected enumerable properties: " + h.join(", ") + "; thus breaking e.g. `for...in` iteration of `Array`s."); const l = o + "_worker"; let C = new MessageHandler(l, o, t); function ensureNotTerminated() { if (a) throw new Error("Worker was terminated") } function startWorkerTask(e) { r.add(e) } function finishWorkerTask(e) { e.finish(); r.delete(e) } async function loadDocument(e) { await i.ensureDoc("checkHeader"); await i.ensureDoc("parseStartXRef"); await i.ensureDoc("parse", [e]); await i.ensureDoc("checkFirstPage", [e]); await i.ensureDoc("checkLastPage", [e]); const t = await i.ensureDoc("isPureXfa"); if (t) { const e = new WorkerTask("loadXfaFonts"); startWorkerTask(e); await Promise.all([i.loadXfaFonts(C, e).catch((e => { })).then((() => finishWorkerTask(e))), i.loadXfaImages()]) } const [a, s] = await Promise.all([i.ensureDoc("numPages"), i.ensureDoc("fingerprints")]); return { numPages: a, fingerprints: s, htmlForXfa: t ? await i.ensureDoc("htmlForXfa") : null } } function getPdfManager({ data: e, password: t, disableAutoFetch: i, rangeChunkSize: a, length: r, docBaseUrl: n, enableXfa: g, evaluatorOptions: c }) { const h = { source: null, disableAutoFetch: i, docBaseUrl: n, docId: o, enableXfa: g, evaluatorOptions: c, handler: C, length: r, password: t, rangeChunkSize: a }, l = Promise.withResolvers(); let Q; if (e) { try { h.source = e; Q = new LocalPdfManager(h); l.resolve(Q) } catch (e) { l.reject(e) } return l.promise } let E, u = []; try { E = new PDFWorkerStream(C) } catch (e) { l.reject(e); return l.promise } const d = E.getFullReader(); d.headersReady.then((function () { if (d.isRangeSupported) { h.source = E; h.length = d.contentLength; h.disableAutoFetch ||= d.isStreamingSupported; Q = new NetworkPdfManager(h); for (const e of u) Q.sendProgressiveData(e); u = []; l.resolve(Q); s = null } })).catch((function (e) { l.reject(e); s = null })); let f = 0; new Promise((function (e, t) { const readChunk = function ({ value: e, done: i }) { try { ensureNotTerminated(); if (i) { Q || function () { const e = arrayBuffersToBytes(u); r && e.length !== r && warn("reported HTTP length is different from actual"); try { h.source = e; Q = new LocalPdfManager(h); l.resolve(Q) } catch (e) { l.reject(e) } u = [] }(); s = null; return } f += e.byteLength; d.isStreamingSupported || C.send("DocProgress", { loaded: f, total: Math.max(f, d.contentLength || 0) }); Q ? Q.sendProgressiveData(e) : u.push(e); d.read().then(readChunk, t) } catch (e) { t(e) } }; d.read().then(readChunk, t) })).catch((function (e) { l.reject(e); s = null })); s = function (e) { E.cancelAllRequests(e) }; return l.promise } C.on("GetPage", (function (e) { return i.getPage(e.pageIndex).then((function (e) { return Promise.all([i.ensure(e, "rotate"), i.ensure(e, "ref"), i.ensure(e, "userUnit"), i.ensure(e, "view")]).then((function ([e, t, i, a]) { return { rotate: e, ref: t, refStr: t?.toString() ?? null, userUnit: i, view: a } })) })) })); C.on("GetPageIndex", (function (e) { const t = Ref.get(e.num, e.gen); return i.ensureCatalog("getPageIndex", [t]) })); C.on("GetDestinations", (function (e) { return i.ensureCatalog("destinations") })); C.on("GetDestination", (function (e) { return i.ensureCatalog("getDestination", [e.id]) })); C.on("GetPageLabels", (function (e) { return i.ensureCatalog("pageLabels") })); C.on("GetPageLayout", (function (e) { return i.ensureCatalog("pageLayout") })); C.on("GetPageMode", (function (e) { return i.ensureCatalog("pageMode") })); C.on("GetViewerPreferences", (function (e) { return i.ensureCatalog("viewerPreferences") })); C.on("GetOpenAction", (function (e) { return i.ensureCatalog("openAction") })); C.on("GetAttachments", (function (e) { return i.ensureCatalog("attachments") })); C.on("GetDocJSActions", (function (e) { return i.ensureCatalog("jsActions") })); C.on("GetPageJSActions", (function ({ pageIndex: e }) { return i.getPage(e).then((function (e) { return i.ensure(e, "jsActions") })) })); C.on("GetOutline", (function (e) { return i.ensureCatalog("documentOutline") })); C.on("GetOptionalContentConfig", (function (e) { return i.ensureCatalog("optionalContentConfig") })); C.on("GetPermissions", (function (e) { return i.ensureCatalog("permissions") })); C.on("GetMetadata", (function (e) { return Promise.all([i.ensureDoc("documentInfo"), i.ensureCatalog("metadata")]) })); C.on("GetMarkInfo", (function (e) { return i.ensureCatalog("markInfo") })); C.on("GetData", (function (e) { return i.requestLoadedStream().then((function (e) { return e.bytes })) })); C.on("GetAnnotations", (function ({ pageIndex: e, intent: t }) { return i.getPage(e).then((function (i) { const a = new WorkerTask(`GetAnnotations: page ${e}`); startWorkerTask(a); return i.getAnnotationsData(C, a, t).then((e => { finishWorkerTask(a); return e }), (e => { finishWorkerTask(a); throw e })) })) })); C.on("GetFieldObjects", (function (e) { return i.ensureDoc("fieldObjects") })); C.on("HasJSActions", (function (e) { return i.ensureDoc("hasJSActions") })); C.on("GetCalculationOrderIds", (function (e) { return i.ensureDoc("calculationOrderIds") })); C.on("SaveDocument", (async function ({ isPureXfa: e, numPages: t, annotationStorage: a, filename: s }) { const r = [i.requestLoadedStream(), i.ensureCatalog("acroForm"), i.ensureCatalog("acroFormRef"), i.ensureDoc("startXRef"), i.ensureDoc("xref"), i.ensureDoc("linearization"), i.ensureCatalog("structTreeRoot")], n = [], o = e ? null : getNewAnnotationsMap(a), [g, c, h, l, Q, E, u] = await Promise.all(r), d = Q.trailer.getRaw("Root") || null; let f; if (o) { u ? await u.canUpdateStructTree({ pdfManager: i, xref: Q, newAnnotationsByPage: o }) && (f = u) : await StructTreeRoot.canCreateStructureTree({ catalogRef: d, pdfManager: i, newAnnotationsByPage: o }) && (f = null); const e = AnnotationFactory.generateImages(a.values(), Q, i.evaluatorOptions.isOffscreenCanvasSupported), t = void 0 === f ? n : []; for (const [a, s] of o) t.push(i.getPage(a).then((t => { const i = new WorkerTask(`Save (editor): page ${a}`); return t.saveNewAnnotations(C, i, s, e).finally((function () { finishWorkerTask(i) })) }))); null === f ? n.push(Promise.all(t).then((async e => { await StructTreeRoot.createStructureTree({ newAnnotationsByPage: o, xref: Q, catalogRef: d, pdfManager: i, newRefs: e }); return e }))) : f && n.push(Promise.all(t).then((async e => { await f.updateStructureTree({ newAnnotationsByPage: o, pdfManager: i, newRefs: e }); return e }))) } if (e) n.push(i.serializeXfaData(a)); else for (let e = 0; e < t; e++)n.push(i.getPage(e).then((function (t) { const i = new WorkerTask(`Save: page ${e}`); return t.save(C, i, a).finally((function () { finishWorkerTask(i) })) }))); const p = await Promise.all(n); let m = [], y = null; if (e) { y = p[0]; if (!y) return g.bytes } else { m = p.flat(2); if (0 === m.length) return g.bytes } const w = h && c instanceof Dict && m.some((e => e.needAppearances)), b = c instanceof Dict && c.get("XFA") || null; let D = null, F = !1; if (Array.isArray(b)) { for (let e = 0, t = b.length; e < t; e += 2)if ("datasets" === b[e]) { D = b[e + 1]; F = !0 } null === D && (D = Q.getNewTemporaryRef()) } else b && warn("Unsupported XFA type."); let S = Object.create(null); if (Q.trailer) { const e = Object.create(null), t = Q.trailer.get("Info") || null; t instanceof Dict && t.forEach(((t, i) => { "string" == typeof i && (e[t] = stringToPDFString(i)) })); S = { rootRef: d, encryptRef: Q.trailer.getRaw("Encrypt") || null, newRef: Q.getNewTemporaryRef(), infoRef: Q.trailer.getRaw("Info") || null, info: e, fileIds: Q.trailer.get("ID") || null, startXRef: E ? l : Q.lastXRefStreamPos ?? l, filename: s } } return incrementalUpdate({ originalData: g.bytes, xrefInfo: S, newRefs: m, xref: Q, hasXfa: !!b, xfaDatasetsRef: D, hasXfaDatasetsEntry: F, needAppearances: w, acroFormRef: h, acroForm: c, xfaData: y, useXrefStream: isDict(Q.topDict, "XRef") }).finally((() => { Q.resetNewTemporaryRef() })) })); C.on("GetOperatorList", (function (e, t) { const a = e.pageIndex; i.getPage(a).then((function (i) { const s = new WorkerTask(`GetOperatorList: page ${a}`); startWorkerTask(s); const r = n >= pA.INFOS ? Date.now() : 0; i.getOperatorList({ handler: C, sink: t, task: s, intent: e.intent, cacheKey: e.cacheKey, annotationStorage: e.annotationStorage }).then((function (e) { finishWorkerTask(s); r && info(`page=${a + 1} - getOperatorList: time=${Date.now() - r}ms, len=${e.length}`); t.close() }), (function (e) { finishWorkerTask(s); s.terminated || t.error(e) })) })) })); C.on("GetTextContent", (function (e, t) { const { pageIndex: a, includeMarkedContent: s, disableNormalization: r } = e; i.getPage(a).then((function (e) { const i = new WorkerTask("GetTextContent: page " + a); startWorkerTask(i); const o = n >= pA.INFOS ? Date.now() : 0; e.extractTextContent({ handler: C, task: i, sink: t, includeMarkedContent: s, disableNormalization: r }).then((function () { finishWorkerTask(i); o && info(`page=${a + 1} - getTextContent: time=` + (Date.now() - o) + "ms"); t.close() }), (function (e) { finishWorkerTask(i); i.terminated || t.error(e) })) })) })); C.on("GetStructTree", (function (e) { return i.getPage(e.pageIndex).then((function (e) { return i.ensure(e, "getStructTree") })) })); C.on("FontFallback", (function (e) { return i.fontFallback(e.id, C) })); C.on("Cleanup", (function (e) { return i.cleanup(!0) })); C.on("Terminate", (function (e) { a = !0; const t = []; if (i) { i.terminate(new AbortException("Worker was terminated.")); const e = i.cleanup(); t.push(e); i = null } else clearGlobalCaches(); s && s(new AbortException("Worker was terminated.")); for (const e of r) { 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 PasswordException) { const t = new WorkerTask(`PasswordException: response ${e.code}`); startWorkerTask(t); C.sendWithPromise("PasswordRequest", e).then((function ({ password: e }) { finishWorkerTask(t); i.updatePassword(e); pdfManagerReady() })).catch((function () { finishWorkerTask(t); C.send("DocException", e) })) } else e instanceof InvalidPDFException || e instanceof MissingPDFException || e instanceof UnexpectedResponseException || e instanceof UnknownErrorException ? C.send("DocException", e) : C.send("DocException", new UnknownErrorException(e.message, e.toString())) } function pdfManagerReady() { ensureNotTerminated(); loadDocument(!1).then(onSuccess, (function (e) { ensureNotTerminated(); e instanceof XRefParseException ? i.requestLoadedStream().then((function () { ensureNotTerminated(); loadDocument(!0).then(onSuccess, onFailure) })) : onFailure(e) })) } ensureNotTerminated(); getPdfManager(e).then((function (e) { if (a) { e.terminate(new AbortException("Worker was terminated.")); throw new Error("Worker was terminated") } i = e; i.requestLoadedStream(!0).then((e => { C.send("DataLoaded", { length: e.bytes.byteLength }) })) })).then(pdfManagerReady, onFailure) }(e); e = null })); return l } static initializeFromPort(e) { const t = new MessageHandler("worker", "main", e); WorkerMessageHandler.setup(t, e); t.send("ready", null) } } "undefined" == typeof window && !t && "undefined" != typeof self && function isMessagePort(e) { return "function" == typeof e.postMessage && "onmessage" in e }(self) && WorkerMessageHandler.initializeFromPort(self); var fo = __webpack_exports__.WorkerMessageHandler; export { fo as WorkerMessageHandler }; \ No newline at end of file diff --git a/src/Components/Common/FilePreviewDialog.tsx b/src/Components/Common/FilePreviewDialog.tsx index fc4345cc321..018197a5ebe 100644 --- a/src/Components/Common/FilePreviewDialog.tsx +++ b/src/Components/Common/FilePreviewDialog.tsx @@ -99,7 +99,7 @@ const FilePreviewDialog = (props: FilePreviewProps) => { onClose={() => { handleClose(); }} - title="File Preview" + title={t("file_preview")} show={show} > {fileUrl ? ( @@ -146,6 +146,7 @@ const FilePreviewDialog = (props: FilePreviewProps) => { ) : previewExtensions.includes(file_state.extension) ? (